subcontratist.component.ts 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. import { HttpErrorResponse } from '@angular/common/http';
  2. import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
  3. import { MatDialog } from '@angular/material/dialog';
  4. import { MatPaginator } from '@angular/material/paginator';
  5. import { MatSort } from '@angular/material/sort';
  6. import { MatTableDataSource } from '@angular/material/table';
  7. import { MatTabGroup } from '@angular/material/tabs';
  8. import { Router } from '@angular/router';
  9. import { resolve } from 'path';
  10. import { lastValueFrom } from 'rxjs';
  11. import { EncService } from 'src/app/services/enc/enc.service';
  12. import { SubcontratistService } from 'src/app/services/personal-management/subcontratist.service';
  13. import { ResourcesService } from 'src/app/services/resources/resources.service';
  14. import { AlertComponent } from '../../resources/dialogs/alert/alert.component';
  15. import { ContractHistoryComponent } from './contract-history/contract-history.component';
  16. @Component({
  17. selector: 'app-subcontratist',
  18. templateUrl: './subcontratist.component.html',
  19. styleUrls: ['./subcontratist.component.css']
  20. })
  21. export class SubcontratistComponent implements OnInit, AfterViewInit {
  22. public isLoading: boolean;
  23. public isLoadingForm: boolean;
  24. public changeOnTab : boolean = false;
  25. public btnSmall: boolean;
  26. public cardSmall: boolean;
  27. // Para Subcontratistas
  28. public txtBuscadorSubcontratists: string;
  29. public displayedColumnsSubcontratists: Array<string>;
  30. public dataSourceSubcontratists: MatTableDataSource<any>;
  31. // Para Contratos
  32. public txtBuscadorContracts: string;
  33. public displayedColumnsContracts: Array<string>;
  34. public dataSourceContracts: MatTableDataSource<any>;
  35. @ViewChild(MatPaginator) paginator!: MatPaginator;
  36. @ViewChild(MatSort) sort!: MatSort;
  37. @ViewChild('MatPaginator2') paginator2!: MatPaginator;
  38. @ViewChild('MatSort2') sort2!: MatSort;
  39. @ViewChild('TabGroup') tabGroup!: MatTabGroup;
  40. constructor(
  41. private _subcontratistService: SubcontratistService,
  42. public resourcesService: ResourcesService,
  43. private _dialog: MatDialog,
  44. private _router: Router,
  45. private _encService: EncService
  46. ) {
  47. this.isLoading = false;
  48. this.isLoadingForm = false;
  49. this.btnSmall = false;
  50. this.cardSmall = false;
  51. this.txtBuscadorSubcontratists = '';
  52. this.displayedColumnsSubcontratists = [
  53. 'NAME',
  54. 'INTERVENTIONS_COUNT',
  55. 'UPDATE_DATE',
  56. 'UPDATED_BY_USER',
  57. 'STATUS',
  58. 'ACCIONES']
  59. this.dataSourceSubcontratists = new MatTableDataSource<any>();
  60. this.txtBuscadorContracts = '';
  61. this.displayedColumnsContracts = [
  62. 'NAME',
  63. 'CONTRACTS_COUNT',
  64. 'ACCIONES']
  65. this.dataSourceContracts = new MatTableDataSource<any>();
  66. }
  67. ngAfterViewInit() {
  68. this.dataSourceSubcontratists.paginator = this.paginator;
  69. this.dataSourceSubcontratists.sort = this.sort;
  70. this.dataSourceContracts.paginator = this.paginator2;
  71. this.dataSourceContracts.sort = this.sort2;
  72. }
  73. ngOnInit(): void {
  74. this.onResize();
  75. this.getSubcontratists();
  76. this.getContractsBySubcontratists();
  77. }
  78. public tabChange(tab : any){
  79. if(tab.index == 0){
  80. this.changeOnTab = false;
  81. }else{
  82. this.changeOnTab = true;
  83. }
  84. }
  85. public async openDialog(typeForm: string, element?: any) {
  86. if (typeForm === 'REG') {
  87. const id = await this._encService.encriptar("0");
  88. this._router.navigate(['sam/GPRS/subcontratist/form/' + id + '/1']);
  89. } else if (typeForm === 'UPD') {
  90. const id = await this._encService.encriptar(element.ID_SUBCONTRATIST);
  91. this._router.navigate(['sam/GPRS/subcontratist/form/' + id + '/1']);
  92. } else if (typeForm === 'HIS') {
  93. const id = await this._encService.encriptar(element.ID_SUBCONTRATIST);
  94. this._router.navigate(['sam/GPRS/subcontratist/contracts/' + id]);
  95. } else if (typeForm === 'DET') {
  96. const id = await this._encService.encriptar(element.ID_SUBCONTRATIST);
  97. this._router.navigate(['sam/GPRS/subcontratist/form/' + id + '/0']);
  98. }else if (typeForm === 'PRO') {
  99. this.resourcesService.openSnackBar('Función para la vista de Proveedores');
  100. // const id = await this._encService.encriptar(element.ID_SUBCONTRATIST);
  101. // this._router.navigate(['sam/GPRS/subcontratist/form/' + id + '/0']);
  102. } else if (typeForm === 'DEL') {
  103. this._dialog.open(AlertComponent, {
  104. data: {
  105. title: 'Eliminación de Subcontratista',
  106. description: '¿Está seguro que desea eliminar al subcontratista?',
  107. icon: 'warning',
  108. },
  109. disableClose: true,
  110. }).afterClosed().subscribe((result) => {
  111. if (result) {
  112. this.deleteSubcontratist(element!.ID_SUBCONTRATIST);
  113. }
  114. });
  115. } else if (typeForm === 'ACT') {
  116. this._dialog.open(AlertComponent, {
  117. data: {
  118. title: 'Activación de Subcontratista',
  119. description: '¿Está seguro que desea activar al subcontratista?',
  120. icon: 'warning',
  121. },
  122. disableClose: true,
  123. }).afterClosed().subscribe((result) => {
  124. if (result) {
  125. this.activateSubcontratist(element!.ID_SUBCONTRATIST);
  126. }
  127. });
  128. }
  129. }
  130. public async getSubcontratists() {
  131. this.isLoading = true;
  132. await lastValueFrom(this._subcontratistService.getConsultOfSubcontratists()).then(
  133. (responseData: any) => {
  134. this.dataSourceSubcontratists.data = responseData.response;
  135. }, (error: HttpErrorResponse) => this.resourcesService.checkErrors(error)
  136. );
  137. this.isLoading = false;
  138. }
  139. private async deleteSubcontratist(subcontratistId: string) {
  140. await lastValueFrom(this._subcontratistService.updateToInactiveStatus({
  141. ID_SUBCONTRATIST: subcontratistId,
  142. LINE_NUMBER: '01',
  143. SAVED_BY_USER: this.resourcesService.getUser()
  144. })).then(
  145. (responseData: any) => {
  146. this.getSubcontratists();
  147. this.resourcesService.openSnackBar('¡Eliminación Exitosa!');
  148. }, (error: HttpErrorResponse) => this.resourcesService.checkErrors(error)
  149. );
  150. }
  151. private async activateSubcontratist(subcontratistId: string) {
  152. await lastValueFrom(this._subcontratistService.updateToActiveStatus({
  153. ID_SUBCONTRATIST: subcontratistId,
  154. LINE_NUMBER: '01',
  155. SAVED_BY_USER: this.resourcesService.getUser()
  156. })).then(
  157. (responseData: any) => {
  158. this.getSubcontratists();
  159. this.resourcesService.openSnackBar('¡Activación Exitosa!');
  160. }, (error: HttpErrorResponse) => this.resourcesService.checkErrors(error)
  161. );
  162. }
  163. public async getContractsBySubcontratists() {
  164. this.isLoading = true;
  165. await lastValueFrom(this._subcontratistService.getContractsOfEverySubcontratist()).then(
  166. (responseData: any) => {
  167. this.dataSourceContracts.data = responseData.response;
  168. }, (error: HttpErrorResponse) => this.resourcesService.checkErrors(error)
  169. );
  170. this.isLoading = false;
  171. }
  172. // Método de filtrado de datos
  173. public applyFilterSubcontratists(event: any, type: string): void {
  174. let filterValue: string;
  175. if (type == 'INP') {
  176. filterValue = (event.target as HTMLInputElement).value;
  177. } else {
  178. this.txtBuscadorSubcontratists = event;
  179. filterValue = event;
  180. }
  181. this.dataSourceSubcontratists.filter = filterValue.trim().toLowerCase();
  182. if (this.dataSourceSubcontratists.paginator) {
  183. this.dataSourceSubcontratists.paginator.firstPage();
  184. }
  185. }
  186. // Método de filtrado de datos
  187. public applyFilterContracts(event: any, type: string): void {
  188. let filterValue: string;
  189. if (type == 'INP') {
  190. filterValue = (event.target as HTMLInputElement).value;
  191. } else {
  192. this.txtBuscadorContracts = event;
  193. filterValue = event;
  194. }
  195. this.dataSourceContracts.filter = filterValue.trim().toLowerCase();
  196. if (this.dataSourceContracts.paginator) {
  197. this.dataSourceContracts.paginator.firstPage();
  198. }
  199. }
  200. // Método para reajustar los botones según sus dimensiones
  201. public onResize(): void {
  202. this.btnSmall = window.innerWidth <= 1885;
  203. this.cardSmall = window.innerWidth >= 722;
  204. }
  205. }