preventive-maintenance.component.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import { Component, OnInit } from '@angular/core';
  2. import { Submodules, SubmodulesResponse } from '../../interfaces/submodules.interface';
  3. import { EncService } from '../../services/enc.service';
  4. import { ModulesService } from '../../services/modules.service';
  5. import { MatDialog } from '@angular/material/dialog';
  6. import { Router } from '@angular/router';
  7. import { Permissions, PermissionsInterface } from '../../interfaces/permissions.interface';
  8. import { lastValueFrom } from 'rxjs';
  9. import { SubmoduleFunctionsComponent } from '../template/menu-item/submodule-functions/submodule-functions.component';
  10. import { ProfileInterface } from '../../interfaces/profile.interface';
  11. import { UserConsultResponse } from '../../interfaces/user.interface';
  12. import { SocketService } from '../../services/socket.service';
  13. import { UsersProfilesService } from '../../services/users-profiles.service';
  14. import { ResourcesService } from '../../services/resources.service';
  15. import { FunctionsService } from '../../services/functions.service';
  16. const ID_MODULE = "S002V01M10GMPR";
  17. @Component({
  18. selector: 'app-preventive-maintenance',
  19. templateUrl: './preventive-maintenance.component.html',
  20. styleUrl: './preventive-maintenance.component.css',
  21. standalone: false
  22. })
  23. export class PreventiveMaintenanceComponent implements OnInit {
  24. isLoading: boolean;
  25. hasError: boolean;
  26. errorStr: string;
  27. submodules: Submodules[];
  28. submodulesAux: Submodules[];
  29. constructor(
  30. private _encService: EncService,
  31. private _modulesService: ModulesService,
  32. private _dialog: MatDialog,
  33. private _router: Router,
  34. private _socketService: SocketService,
  35. private _usersProfilesService: UsersProfilesService,
  36. private _resourcesService: ResourcesService,
  37. private _functionsService: FunctionsService,
  38. ) {
  39. this._functionsService.consultModuleStatus(ID_MODULE);
  40. this.isLoading = true;
  41. this.hasError = false;
  42. this.errorStr = "";
  43. this.submodules = [];
  44. this.submodulesAux = [];
  45. }
  46. ngOnInit(): void {
  47. this.getSubmodules();
  48. this._socketService.refreshPermissions().subscribe(async (profUpdEnc) => {
  49. try{
  50. let idUser = localStorage.getItem('idusuario')!;
  51. let usrInfo: UserConsultResponse = await lastValueFrom(this._usersProfilesService.getUser(idUser, idUser, 1));
  52. if(usrInfo.error){
  53. this._resourcesService.openSnackBar('ERR_NPE000: Ocurrió un error inesperado.');
  54. }else{
  55. let idProfDec = await this._encService.decrypt(usrInfo.response.PERFIL);
  56. let currentProfile = await this._encService.decrypt(localStorage.getItem('perfil')!);
  57. if(idProfDec != currentProfile){
  58. this._router.navigate(['/sam/home']);
  59. return;
  60. }
  61. let profileUpdated = await this._encService.decrypt(`${profUpdEnc}`);
  62. if(profileUpdated == currentProfile){
  63. let profile = localStorage.getItem('perfil')!;
  64. let profInfo: ProfileInterface = await lastValueFrom(this._usersProfilesService.getProfile(
  65. profile,
  66. idUser,
  67. 1
  68. ));
  69. let permArr = await this._functionsService.processPermissions(profInfo.response.PERMISOS.permissions);
  70. let modPerm = permArr.filter(item => item.id == ID_MODULE);
  71. if(modPerm.length > 0){
  72. let newSubmod: Submodules[] = [];
  73. for(let item of this.submodulesAux){
  74. let idSub = item.IDSUBMODULO;
  75. let sub = modPerm[0].children.filter(item2 => item2.id == idSub);
  76. if(sub.length > 0){
  77. if(sub[0].access > 0){
  78. newSubmod.push(item);
  79. }
  80. }
  81. }
  82. this.submodules = newSubmod;
  83. }
  84. }
  85. }
  86. }catch(error: any){
  87. if(error.error == undefined){
  88. this._resourcesService.openSnackBar('ERR_PAD001: Ocurrió un error inesperado.');
  89. }else if(error.error.msg == undefined){
  90. this._resourcesService.openSnackBar('ERR_PAD002: Ocurrió un error inesperado.');
  91. }else{
  92. this._resourcesService.openSnackBar(`ERR_PAD003: ${error.error.msg}`);
  93. }
  94. }
  95. });
  96. this._socketService.refreshModules().subscribe(async () => this._functionsService.consultModuleStatus(ID_MODULE));
  97. }
  98. async getSubmodules(){
  99. try{
  100. let permissionsEnc = localStorage.getItem('permisos');
  101. let permissionsDec = '';
  102. if(permissionsEnc == '' || permissionsEnc == undefined || permissionsEnc == null){
  103. permissionsDec = '[]';
  104. }else{
  105. permissionsDec = await this._encService.decrypt(permissionsEnc!);
  106. }
  107. let permissionsArr: Permissions = JSON.parse(permissionsDec);
  108. let permFun: PermissionsInterface[] = [];
  109. if(permissionsArr.permissions == undefined){
  110. permFun = [];
  111. }else{
  112. permFun = permissionsArr.permissions.filter(item => item.id == 'S002V01M10GMPR');
  113. }
  114. let moduleEnc = await this._encService.encrypt('S002V01M10GMPR');
  115. let idEnc = localStorage.getItem('idusuario')!;
  116. let submodules: SubmodulesResponse = await lastValueFrom(this._modulesService.getSubmodules(
  117. moduleEnc,
  118. idEnc,
  119. 1
  120. ));
  121. this.hasError = submodules.error;
  122. this.errorStr = submodules.msg;
  123. if(!this.hasError){
  124. for(const submodule of submodules.response){
  125. let idSub = await this._encService.decrypt(submodule.IDSUBMODULO);
  126. submodule.IDSUBMODULO = idSub;
  127. if(permFun.length > 0){
  128. let subm = permFun[0].children.filter(item2 => idSub == item2.id);
  129. if(subm.length > 0){
  130. if(subm[0].access > 0){
  131. this.submodules.push(submodule);
  132. }
  133. }
  134. }
  135. }
  136. this.submodulesAux = submodules.response;
  137. }
  138. this.isLoading = false;
  139. }catch(error: any){
  140. if(error.error == undefined){
  141. this.errorStr = "Ocurrió un error inesperado.";
  142. }else if(error.error.msg == undefined){
  143. this.errorStr = "Ocurrió un error inesperado.";
  144. }else{
  145. this.errorStr = error.error.msg;
  146. }
  147. this.hasError = true;
  148. this.isLoading = false;
  149. }
  150. }
  151. openMenu(submodule: Submodules){
  152. let dialogRef = this._dialog.open(SubmoduleFunctionsComponent, {
  153. width: '560px',
  154. maxWidth: '560px',
  155. data: {
  156. module: 'S002V01M10GMPR',
  157. submodule: submodule.IDSUBMODULO,
  158. },
  159. });
  160. dialogRef.afterClosed().subscribe(res => {
  161. if(res != null && res != undefined && res != ""){
  162. let idFunc = res.IDFUNCION.replace("S002V01F", "");
  163. idFunc = idFunc.substring(2);
  164. let idSub = submodule.IDSUBMODULO.replace("S002V01S", "");
  165. idSub = idSub.substring(2);
  166. this._router.navigate([`sam/GMPR/${idSub}/${idFunc}`]);
  167. }
  168. });
  169. }
  170. }