From 67c60735cbfcb6a5cf19b42673561eb961569087 Mon Sep 17 00:00:00 2001
From: Fabiane Souza <fabianesouza9.68@gmail.com>
Date: Thu, 1 Sep 2022 18:29:26 -0300
Subject: [PATCH 1/4] =?UTF-8?q?Feature=20segmentar=20usu=C3=A1rios=20por?=
 =?UTF-8?q?=20ag=C3=AAncia?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../GerenciamentoUsuarios.vue                 | 74 +++++++++++++------
 1 file changed, 53 insertions(+), 21 deletions(-)

diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
index d6f764a..0e5a524 100644
--- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
+++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
@@ -1,25 +1,33 @@
 <template>
     <div>
-        <titulo-principal titulo="Gerencimaneto de Usuários"></titulo-principal>
-        
+        <titulo-principal titulo="Gerenciamento de Usuários"></titulo-principal>
+    
         <span class="titulo_categoria" v-if="users_activates.length > 0">Usuários Ativos</span>
-        <md-card class="md-layout-item md-larger-size card" v-if="users_activates.length > 0">
-            <md-list class="lista_usuarios">
-                <md-list-item v-for="user in users_activates" :key="user.id" class="usuario">
+        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_active">
+            <md-list-item class="lista_adOpsTeam">
+                <div class="name_adOpsTeam">{{adOpsTeam}}</div> 
+            </md-list-item>
+            
+            <md-card class="md-layout-item md-larger-size card">
+                <md-list-item v-for="user in users_activates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario">
                     {{user.email}} ({{user.permission}})
-                <md-icon class="md-size-2x desativar_usuario" @click.native="gerenciaUsuario(user.id, 'desativa')">toggle_on</md-icon>
+                <md-icon v-if="user.permission !== 'admin'" class="md-size-2x desativar_usuario" @click.native="gerenciaUsuario(user.id, 'desativa')">toggle_on</md-icon>
                 </md-list-item>
-            </md-list>
-        </md-card>
+            </md-card>
+        </md-list>
+        
         <span class="titulo_categoria" v-if="users_deactivates.length > 0">Usuários Desativados</span>
-        <md-card class="md-layout-item md-larger-size card" v-if="users_deactivates.length > 0">
-            <md-list class="lista_usuarios_desativados lista_usuarios">
-                <md-list-item v-for="user in users_deactivates" :key="user.id" class="usuario">
-                    {{user.email}} ({{user.permission}})
-                <md-icon class="md-size-2x ativar_usuario usuario" @click.native="gerenciaUsuario(user.id, 'ativa')">toggle_off</md-icon>
-                </md-list-item>
-            </md-list>
-        </md-card>
+        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_disabled">
+            <md-list-item class="lista_adOpsTeam">
+                <div class="name_adOpsTeam">{{adOpsTeam}}</div>
+            </md-list-item>
+            <md-card class="md-layout-item md-larger-size card">
+                    <md-list-item v-for="user in users_deactivates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario">
+                        {{user.email}} ({{user.permission}})
+                    <md-icon v-if="user.permission !== 'admin'" class="md-size-2x ativar_usuario usuario" @click.native="gerenciaUsuario(user.id, 'ativa')">toggle_off</md-icon>
+                    </md-list-item>
+            </md-card>
+        </md-list>
 
         <div class="load" v-show="show_load">
             <md-progress-spinner md-mode="indeterminate"></md-progress-spinner>
@@ -31,7 +39,7 @@
                 {{ apiErrorMessage }}
             </p>
         </div>
-        <md-snackbar :md-position="position" :md-duration="isInfinity ? Infinity : duration" :md-active.sync="showSnackbar" md-persistent>
+        <md-snackbar :md-position="position" :md-duration="6000" :md-active.sync="showSnackbar" md-persistent>
             <span>{{ snackbar_message }}</span>
             <md-button class="md-primary" @click="showSnackbar = false">OK</md-button>
         </md-snackbar>
@@ -41,7 +49,6 @@
 </template>
 
 <script>
-
 import TituloAreaPrincipal from '../shared/titulo_area_principal/TituloAreaPrincipal.vue';
 import InvalidUserAlert from '../shared/login/InvalidUser.vue';
 import { validationMixin } from 'vuelidate'
@@ -66,6 +73,10 @@ export default {
             downloadError: false,
             downloadErrorMessage: 'Erro no Download!',
             responseVisibility: false,
+            adOpsTeams_active: [],
+            adOpsTeams_disabled: [],
+            allUsers: [],
+            adOpsTeam: '',
             users_activates: [],
             users_deactivates: [],
             snackbar_message: '',
@@ -92,6 +103,8 @@ export default {
             const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email'));
             this.users_activates = allUsers.filter(user => user.active == true);
             this.users_deactivates = allUsers.filter(user => user.active == false);
+            this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}});
+            this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}});
         }).catch((err) => {
             this.apiError = true;
             this.apiErrorMessage = err.message;
@@ -108,6 +121,12 @@ export default {
             this.apiError = true;
             return false;
         },
+        resetAdOpsTeams(){
+            this.adOpsTeams_active = [];
+            this.adOpsTeams_disabled = [];
+            this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}});
+            this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}});
+        },
         gerenciaUsuario(id, opcao) {
             let url;
             if(opcao === 'ativa') {
@@ -148,6 +167,7 @@ export default {
                 const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email'));
                 this.users_activates = allUsers.filter(user => user.active == true);
                 this.users_deactivates = allUsers.filter(user => user.active == false);
+                this.resetAdOpsTeams();
             }).catch((err) => {
                 this.showAuthAlert = this.isAuthError(this.statusCode);
                 this.snackbar_message = 'Erro ao mudar status do usuário!';
@@ -164,7 +184,8 @@ export default {
 <style scoped>
 
     .card {
-        margin-left: 50px;
+        margin-top: 10px;
+        margin-left: 10px;
     }
 
     .load {
@@ -186,7 +207,7 @@ export default {
     }
 
     .titulo_categoria {
-        font-size: 20px;
+        font-size: 22px;
         margin-left: 60px;
         padding-bottom: 20px;
         padding-top: 25px;
@@ -194,7 +215,7 @@ export default {
     }
 
     .lista_usuarios {
-        margin-left: 0px!important;
+        margin-left: 40px!important;
     }
 
     .lista_usuarios_desativados {
@@ -217,4 +238,15 @@ export default {
         color: green!important;
     }
 
+    .lista_adOpsTeam {
+        margin-left: 8px;
+        border-bottom: 1px solid #a8c0ff;
+    }
+
+    .name_adOpsTeam{
+        font-size: 16px;
+        font-weight: bold;
+        color: #3f2b96;
+    }
+
 </style>
\ No newline at end of file

From beeb68627b092d4d087f9cf47c2fc24441b56237 Mon Sep 17 00:00:00 2001
From: Fabiane Souza <fabianesouza9.68@gmail.com>
Date: Thu, 15 Sep 2022 17:33:07 -0300
Subject: [PATCH 2/4] feat_segmentar_usuarios_por_agencias

---
 .../GerenciamentoUsuarios.vue                 | 33 +++++--------------
 1 file changed, 9 insertions(+), 24 deletions(-)

diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
index 0e5a524..5ae505e 100644
--- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
+++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
@@ -17,7 +17,7 @@
         </md-list>
         
         <span class="titulo_categoria" v-if="users_deactivates.length > 0">Usuários Desativados</span>
-        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_disabled">
+        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_deactivate">
             <md-list-item class="lista_adOpsTeam">
                 <div class="name_adOpsTeam">{{adOpsTeam}}</div>
             </md-list-item>
@@ -73,8 +73,8 @@ export default {
             downloadError: false,
             downloadErrorMessage: 'Erro no Download!',
             responseVisibility: false,
-            adOpsTeams_active: [],
-            adOpsTeams_disabled: [],
+            adOpsTeams_active: new Set(),
+            adOpsTeams_deactivate: new Set(),
             allUsers: [],
             adOpsTeam: '',
             users_activates: [],
@@ -103,8 +103,8 @@ export default {
             const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email'));
             this.users_activates = allUsers.filter(user => user.active == true);
             this.users_deactivates = allUsers.filter(user => user.active == false);
-            this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}});
-            this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}});
+            this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
+            this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
         }).catch((err) => {
             this.apiError = true;
             this.apiErrorMessage = err.message;
@@ -122,10 +122,10 @@ export default {
             return false;
         },
         resetAdOpsTeams(){
-            this.adOpsTeams_active = [];
-            this.adOpsTeams_disabled = [];
-            this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}});
-            this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}});
+            this.adOpsTeams_active.clear();
+            this.adOpsTeams_deactivate.clear();
+            this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
+            this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
         },
         gerenciaUsuario(id, opcao) {
             let url;
@@ -178,34 +178,27 @@ export default {
         }
     }
 }
-
 </script>
 
 <style scoped>
-
     .card {
         margin-top: 10px;
         margin-left: 10px;
     }
-
     .load {
         margin-top: 50px;
         text-align: center;
     }
-
     .respostas {
         width: 100%;
     }
-
     p.response {
         margin-left: 60px;
     }
-
     ul {
         margin-left: 15px;
         list-style: none;
     }
-
     .titulo_categoria {
         font-size: 22px;
         margin-left: 60px;
@@ -213,40 +206,32 @@ export default {
         padding-top: 25px;
         display: block;
     }
-
     .lista_usuarios {
         margin-left: 40px!important;
     }
-
     .lista_usuarios_desativados {
         background-color: #ececec;
     }
-
     .usuario:hover {
         background-color: #ecf1fd;
     }
-
     i.ativar_usuario {
         font-size: 20px;
         cursor: pointer;
         color: red!important;
     }
-
     i.desativar_usuario {
         font-size: 20px;
         cursor: pointer;
         color: green!important;
     }
-
     .lista_adOpsTeam {
         margin-left: 8px;
         border-bottom: 1px solid #a8c0ff;
     }
-
     .name_adOpsTeam{
         font-size: 16px;
         font-weight: bold;
         color: #3f2b96;
     }
-
 </style>
\ No newline at end of file

From a37a5e7221614c7d6e38859e8947c14931f37a8c Mon Sep 17 00:00:00 2001
From: Fabiane Souza <fabianesouza9.68@gmail.com>
Date: Tue, 20 Sep 2022 13:32:14 -0300
Subject: [PATCH 3/4] feat_segmentar_usuarios_por_agencia

---
 .../GerenciamentoUsuarios.vue                 | 32 +++++++++----------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
index 5ae505e..4f779c2 100644
--- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
+++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
@@ -2,27 +2,27 @@
     <div>
         <titulo-principal titulo="Gerenciamento de Usuários"></titulo-principal>
     
-        <span class="titulo_categoria" v-if="users_activates.length > 0">Usuários Ativos</span>
-        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_active">
+        <span class="titulo_categoria" v-if="usersActivates.length > 0">Usuários Ativos</span>
+        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_active" :key="adOpsTeam">
             <md-list-item class="lista_adOpsTeam">
                 <div class="name_adOpsTeam">{{adOpsTeam}}</div> 
             </md-list-item>
             
             <md-card class="md-layout-item md-larger-size card">
-                <md-list-item v-for="user in users_activates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario">
+                <md-list-item v-for="user in usersActivates.filter(activeUser => activeUser.adOpsTeam === adOpsTeam)" :key="user.id" class="usuario">
                     {{user.email}} ({{user.permission}})
                 <md-icon v-if="user.permission !== 'admin'" class="md-size-2x desativar_usuario" @click.native="gerenciaUsuario(user.id, 'desativa')">toggle_on</md-icon>
                 </md-list-item>
             </md-card>
         </md-list>
         
-        <span class="titulo_categoria" v-if="users_deactivates.length > 0">Usuários Desativados</span>
-        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_deactivate">
+        <span class="titulo_categoria" v-if="usersDeactivates.length > 0">Usuários Desativados</span>
+        <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_deactivate" :key="adOpsTeam">
             <md-list-item class="lista_adOpsTeam">
                 <div class="name_adOpsTeam">{{adOpsTeam}}</div>
             </md-list-item>
             <md-card class="md-layout-item md-larger-size card">
-                    <md-list-item v-for="user in users_deactivates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario">
+                    <md-list-item v-for="user in usersDeactivates.filter(deactivateUser => deactivateUser.adOpsTeam === adOpsTeam)" :key="user.id" class="usuario">
                         {{user.email}} ({{user.permission}})
                     <md-icon v-if="user.permission !== 'admin'" class="md-size-2x ativar_usuario usuario" @click.native="gerenciaUsuario(user.id, 'ativa')">toggle_off</md-icon>
                     </md-list-item>
@@ -77,8 +77,8 @@ export default {
             adOpsTeams_deactivate: new Set(),
             allUsers: [],
             adOpsTeam: '',
-            users_activates: [],
-            users_deactivates: [],
+            usersActivates: [],
+            usersDeactivates: [],
             snackbar_message: '',
             position: 'center',
             showSnackbar: false
@@ -101,10 +101,10 @@ export default {
                 throw new Error(response.responseText || response.errorMessage);
             }
             const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email'));
-            this.users_activates = allUsers.filter(user => user.active == true);
-            this.users_deactivates = allUsers.filter(user => user.active == false);
-            this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
-            this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
+            this.usersActivates = allUsers.filter(user => user.active == true);
+            this.usersDeactivates = allUsers.filter(user => user.active == false);
+            this.usersActivates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
+            this.usersDeactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
         }).catch((err) => {
             this.apiError = true;
             this.apiErrorMessage = err.message;
@@ -124,8 +124,8 @@ export default {
         resetAdOpsTeams(){
             this.adOpsTeams_active.clear();
             this.adOpsTeams_deactivate.clear();
-            this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
-            this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
+            this.usersActivates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
+            this.usersDeactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
         },
         gerenciaUsuario(id, opcao) {
             let url;
@@ -165,8 +165,8 @@ export default {
                     throw new Error(response.responseText || response.errorMessage);
                 }
                 const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email'));
-                this.users_activates = allUsers.filter(user => user.active == true);
-                this.users_deactivates = allUsers.filter(user => user.active == false);
+                this.usersActivates = allUsers.filter(user => user.active == true);
+                this.usersDeactivates = allUsers.filter(user => user.active == false);
                 this.resetAdOpsTeams();
             }).catch((err) => {
                 this.showAuthAlert = this.isAuthError(this.statusCode);

From 1f0e632c6fd56008374bfa2d715d999ff4d8d60b Mon Sep 17 00:00:00 2001
From: Fabiane Souza <fabianesouza9.68@gmail.com>
Date: Wed, 28 Sep 2022 19:13:46 -0300
Subject: [PATCH 4/4] =?UTF-8?q?Feature=20segmentar=20usu=C3=A1rios=20por?=
 =?UTF-8?q?=20ag=C3=AAncia?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../GerenciamentoUsuarios.vue                 | 38 ++++++++++++++-----
 1 file changed, 29 insertions(+), 9 deletions(-)

diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
index 4f779c2..4bd6092 100644
--- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
+++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue
@@ -29,8 +29,10 @@
             </md-card>
         </md-list>
 
-        <div class="load" v-show="show_load">
-            <md-progress-spinner md-mode="indeterminate"></md-progress-spinner>
+        <div class="load_block" v-show="show_load">
+            <div class="load" v-show="show_load">
+                <md-progress-spinner md-mode="indeterminate"></md-progress-spinner>
+            </div>
         </div>
 
         <div class="respostas" v-show="responseVisibility">
@@ -39,7 +41,7 @@
                 {{ apiErrorMessage }}
             </p>
         </div>
-        <md-snackbar :md-position="position" :md-duration="6000" :md-active.sync="showSnackbar" md-persistent>
+        <md-snackbar :md-position="position" :md-duration="isInfinity ? Infinity : duration" :md-active.sync="showSnackbar" md-persistent>
             <span>{{ snackbar_message }}</span>
             <md-button class="md-primary" @click="showSnackbar = false">OK</md-button>
         </md-snackbar>
@@ -101,10 +103,17 @@ export default {
                 throw new Error(response.responseText || response.errorMessage);
             }
             const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email'));
-            this.usersActivates = allUsers.filter(user => user.active == true);
-            this.usersDeactivates = allUsers.filter(user => user.active == false);
-            this.usersActivates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam));
-            this.usersDeactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam));
+            allUsers.forEach(user => {
+                if(user.active === true) {
+                    this.usersActivates.push(user);
+                    this.adOpsTeams_active.add(user.adOpsTeam);
+                } else {
+                    this.usersDeactivates.push(user);
+                    this.adOpsTeams_deactivate.add(user.adOpsTeam);
+                }
+            });
+            this.adOpsTeams_active.sort();
+            console.log(this.adOpsTeams_active);
         }).catch((err) => {
             this.apiError = true;
             this.apiErrorMessage = err.message;
@@ -186,8 +195,19 @@ export default {
         margin-left: 10px;
     }
     .load {
-        margin-top: 50px;
-        text-align: center;
+        position: fixed;
+        left:50%;
+        top:50%;
+        z-index:20;
+    }
+    .load_block {
+        background-color: rgba(0, 0, 0, 0.295);
+        position: fixed;
+        left:300px;
+        top:0px;
+        z-index:20;
+        width: 100%;
+        height: 100%;
     }
     .respostas {
         width: 100%;