diff --git a/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.html b/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.html index 2a7b160..3a64b9c 100644 --- a/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.html +++ b/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.html @@ -1,8 +1,15 @@
- - - -
+
+ + + + +
+
@@ -181,4 +188,59 @@
+
+
+
+
+
+

Reporte de Encuestas Usuarios

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
UsuarioTotal de encuestasEncuestas en borradorEncuestas publicadasEncuestas finalizadasEncuestas completadas por usuario
+
+
{{ usuario.nombre }} + {{ encuestasUsuario[j] }} + + {{ encuestasUsuarioBorrador[j] }} + + {{ encuestasUsuarioPublicadas[j] }} + + {{ encuestasUsuarioFinalizadas[j] }} + + {{ encuestasUsuarioCompletadas[j] }} +
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.scss b/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.scss index 1c1f9ba..487f841 100644 --- a/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.scss +++ b/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.scss @@ -31,3 +31,16 @@ .por-categoria { padding: 5% 0; } +.encuestas-por-usuario .table-responsive { + height: 500px; + max-height: 500px; +} + +.encuestas-por-usuario .photo { + width: 40px; + height: 40px; +} + +.encuestas-por-usuario .photo img { + border-radius: 100%; +} diff --git a/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.ts b/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.ts index 2dfa232..3cd2e69 100644 --- a/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.ts +++ b/src/main/webapp/app/entities/dashboard/dashboard-admin/dashboard-admin.component.ts @@ -17,6 +17,8 @@ import { finalize } from 'rxjs/operators'; import * as Chartist from 'chartist'; import { faWallet, faUsers, faUsersSlash } from '@fortawesome/free-solid-svg-icons'; +import { IUsuarioExtra } from '../../usuario-extra/usuario-extra.model'; +import { IUser } from '../../user/user.model'; @Component({ selector: 'jhi-dashboard-admin', @@ -33,6 +35,7 @@ export class DashboardAdminComponent implements OnInit { gananciasTotales: number = 0; categorias: ICategoria[] | undefined = []; encuestas: IEncuesta[] | undefined = []; + usuarios: IUsuarioExtra[] | undefined = []; faWallet = faWallet; faUsers = faUsers; faUsersSlash = faUsersSlash; @@ -40,9 +43,15 @@ export class DashboardAdminComponent implements OnInit { encuestasFinalizadas: number = 0; encuestasBorrador: number = 0; encuestasCompletadas: number = 0; + encuestasUsuario: number[] = []; + encuestasUsuarioPublicadas: number[] = []; + encuestasUsuarioFinalizadas: number[] = []; + encuestasUsuarioBorrador: number[] = []; + encuestasUsuarioCompletadas: number[] = []; + usuariosGenerales: IUser[] | null = []; - reportsGeneral = true; - reportForUsers = false; + reportsGeneral = false; + reportForUsers = true; chartFechas = []; @@ -61,32 +70,71 @@ export class DashboardAdminComponent implements OnInit { return item.id!; } + trackIdUsuario(_index: number, item: IUsuarioExtra): number { + return item.id!; + } + + cambiarVista() { + if (this.reportsGeneral) { + this.reportsGeneral = false; + this.reportForUsers = true; + } else if (this.reportForUsers) { + this.reportsGeneral = true; + this.reportForUsers = false; + } + } + loadAll() { this.cargarGananciasTotales(); - this.cargarCantidadUsuarios(); - this.cargarEncuestas(); + this.cargarUsers(); } cargarGananciasTotales() { - this.facturaService.query().subscribe( - res => { - const tempFacturas = res.body; - tempFacturas?.forEach(f => { - if (f.costo != undefined) { - this.gananciasTotales += f.costo; + this.facturaService.query().subscribe(res => { + const tempFacturas = res.body; + tempFacturas?.forEach(f => { + if (f.costo != undefined) { + this.gananciasTotales += f.costo; + } + }); + }); + } + + cargarUsers() { + this.usuarioExtraService + .retrieveAllPublicUsers() + .pipe(finalize(() => this.cargarCantidadUsuarios())) + .subscribe(res => { + res.forEach(user => { + let rolList: string[] | undefined; + rolList = user.authorities; + let a = rolList?.pop(); + if (a == 'ROLE_ADMIN') { + user.authorities = ['Admin']; + } else if (a == 'ROLE_USER') { + user.authorities = ['Usuario']; } }); - }, - () => {} - ); + this.usuariosGenerales = res; + }); } cargarCantidadUsuarios() { - this.usuarioExtraService.query().subscribe(res => { - const tmpUsuarios = res.body; - this.cantUsuarioActivos = tmpUsuarios?.filter(u => u.estado === 'ACTIVE').length; - this.cantUsuarioBloqueados = tmpUsuarios?.filter(u => u.estado === 'SUSPENDED').length; - }); + this.usuarioExtraService + .query() + .pipe(finalize(() => this.cargarEncuestas())) + .subscribe(res => { + const tmpUsuarios = res.body; + + if (tmpUsuarios) { + tmpUsuarios.forEach(u => { + u.user = this.usuariosGenerales?.find(g => g.id == u.user?.id); + }); + } + this.usuarios = tmpUsuarios?.filter(u => u.user?.authorities && u.user?.authorities[0] === 'Usuario'); + this.cantUsuarioActivos = tmpUsuarios?.filter(u => u.estado === 'ACTIVE').length; + this.cantUsuarioBloqueados = tmpUsuarios?.filter(u => u.estado === 'SUSPENDED').length; + }); } cargarEncuestas() { @@ -108,6 +156,47 @@ export class DashboardAdminComponent implements OnInit { cantidadCompletadas = cantidadCompletadas + (Number(_contadorCompletadas?.toString().split('.')[1]) - 1); }); this.encuestasCompletadas = cantidadCompletadas; + + //reportes generales de todos los usuarios + const publicadasUser: number[] | null = []; + const finalizadasUser: number[] | null = []; + const borradoresUser: number[] | null = []; + const encuestasUser: number[] | null = []; + const encuestasCompletadasUser: number[] | null = []; + + if (this.usuarios) { + this.usuarios.forEach(u => { + let cantEncuestas = 0; + let cantPublicadas = 0; + let cantFinalizadas = 0; + let cantBorradores = 0; + cantEncuestas = tmpEncuestas.filter( + e => e.estado !== 'DELETED' && e.usuarioExtra?.id === u.id && e.usuarioExtra?.user?.authorities + ).length; + cantPublicadas = tmpEncuestas.filter(e => e.estado === 'ACTIVE' && e.usuarioExtra?.id === u.id).length; + cantFinalizadas = tmpEncuestas.filter(e => e.estado === 'FINISHED' && e.usuarioExtra?.id === u.id).length; + cantBorradores = tmpEncuestas.filter(e => e.estado === 'DRAFT' && e.usuarioExtra?.id === u.id).length; + + encuestasUser.push(cantEncuestas); + borradoresUser.push(cantBorradores); + publicadasUser.push(cantPublicadas); + finalizadasUser.push(cantFinalizadas); + + let cantidadCompletadasUser: number = 0; + tmpEncuestas + .filter(e => e.estado === 'ACTIVE' && e.usuarioExtra?.id === u.id) + .forEach(e => { + const _contadorCompletadas = e.calificacion; + cantidadCompletadasUser = cantidadCompletadasUser + (Number(_contadorCompletadas?.toString().split('.')[1]) - 1); + }); + encuestasCompletadasUser.push(cantidadCompletadasUser); + }); + this.encuestasUsuarioCompletadas = encuestasCompletadasUser; + this.encuestasUsuario = encuestasUser; + this.encuestasUsuarioBorrador = borradoresUser; + this.encuestasUsuarioPublicadas = publicadasUser; + this.encuestasUsuarioFinalizadas = finalizadasUser; + } } }); }