Parcourir la source

implementacion de funcion updateWorkflow con agregado de comentario de cambio

EmilianoOrtiz il y a 2 mois
Parent
commit
9a764edcc1

+ 12 - 2
src/app/components/process-management/workflow-management/form-workflow/form-workflow.component.html

@@ -30,8 +30,18 @@
             </mat-error>
           }
         </mat-form-field>
-      </div>  
-      <mat-checkbox formControlName="AUTOMATICO">{{ interService.get('es_automatico') }}</mat-checkbox>
+      </div>
+      <div class="col-flex-12">
+        <mat-form-field appearance="outline" class="w-100">
+          <mat-label>Comentario del cambio</mat-label>
+          <textarea matInput formControlName="COMENTARIO_CAMBIO" maxlength="500" placeholder="Explique el motivo del cambio..."></textarea>
+          @if (formGroup.controls['COMENTARIO_CAMBIO'].hasError('required')) {
+            <mat-error>
+              {{ interService.get('el_campo') }} <b>Comentario del cambio</b> {{ interService.get('es_requerido') }}
+            </mat-error>
+          }
+        </mat-form-field>
+      </div>
     </form>
   }
 </mat-dialog-content>

+ 31 - 80
src/app/components/process-management/workflow-management/form-workflow/form-workflow.component.ts

@@ -29,7 +29,6 @@ import { AlertComponent } from '../../../resources/dialogs/alert/alert.component
 })
 export class FormWorkflowComponent implements OnInit {
   public titleForm: string;
-  public typeForm: 'REG' | 'UPD';
   public formGroup: FormGroup;
   public isLoading: boolean;
   public idWorkflow!: string;
@@ -43,11 +42,7 @@ export class FormWorkflowComponent implements OnInit {
     private _encService: EncService,
     private _processManagementService: ProcessManagementService
   ) {
-    this.typeForm = this.detailsFormWorkflow.type;
-    this.titleForm =
-      this.typeForm === 'REG'
-        ? this.interService.get('registro_flujo_trabajo')
-        : this.interService.get('modificacion_flujo_trabajo');
+    this.titleForm = this.interService.get('modificacion_flujo_trabajo');
     this.isLoading = false;
     this.formGroup = this._createFormGroup();
   }
@@ -56,15 +51,12 @@ export class FormWorkflowComponent implements OnInit {
     return new FormGroup({
       NOMBRE_WORKFLOW: new FormControl(null, Validators.required),
       DESCRIPCION: new FormControl(null, Validators.required),
-      AUTOMATICO: new FormControl(false, Validators.required),
+      COMENTARIO_CAMBIO: new FormControl(null, Validators.required),
     });
   }
 
   async ngOnInit() {
-    if (
-      this.typeForm === 'UPD' &&
-      this.detailsFormWorkflow.idWorkflow !== undefined
-    ) {
+    if (this.detailsFormWorkflow.idWorkflow !== undefined) {
       this.idWorkflow = this.detailsFormWorkflow.idWorkflow.toString();
       await this.getWorkflowById();
     }
@@ -72,11 +64,16 @@ export class FormWorkflowComponent implements OnInit {
 
   private async getWorkflowById() {
     this.isLoading = true;
-    const encWorkflow: string = await this._encService.encrypt(this.idWorkflow);
+    //Necesario mandarlo encriptado
+    //const encWorkflow: string = await this._encService.encrypt(this.idWorkflow);
     const user: string = this.resourcesService.getUser();
     const line: number = this.resourcesService.getLineNumber();
     await lastValueFrom(
-      this._processManagementService.getWorkflowById(encWorkflow, user, line)
+      this._processManagementService.getWorkflowById(
+        this.idWorkflow,
+        user,
+        line
+      )
     ).then(
       (responseData: ResponseDataWorkflow) => {
         if (
@@ -114,80 +111,33 @@ export class FormWorkflowComponent implements OnInit {
   }
 
   public save() {
-    if (this.typeForm === 'REG') {
-      this._dialog
-        .open(AlertComponent, {
-          disableClose: true,
-          data: {
-            title: this.interService.get('confirmacion'),
-            description: this.interService.get('register_description_alert'),
-            icon: `warning`,
-            btnCancelar: this.interService.get('cancelar'),
-            btnAceptar: this.interService.get('aceptar'),
-          },
-        })
-        .afterClosed()
-        .subscribe(async (result) => {
-          if (result) {
-            await this._registerWorkflow();
-          }
-        });
-    } else if (this.typeForm === 'UPD') {
-      this._dialog
-        .open(AlertComponent, {
-          disableClose: true,
-          data: {
-            title: this.interService.get('confirmacion'),
-            description: this.interService.get('update_description_alert'),
-            icon: `warning`,
-            btnCancelar: this.interService.get('cancelar'),
-            btnAceptar: this.interService.get('aceptar'),
-          },
-        })
-        .afterClosed()
-        .subscribe(async (result) => {
-          if (result) {
-            await this._updateWorkflow();
-          }
-        });
-    }
-  }
-
-  private async _registerWorkflow() {
-    this.isLoading = true;
-    const requestFormWorkflow: RequestFormWorkflow =
-      this._createRequestFormWorkflow();
-    await lastValueFrom(
-      this._processManagementService.registerWorkflow(requestFormWorkflow)
-    ).then(
-      (responseData: ResponseData) => {
-        if (!responseData.error) {
-          this.resourcesService.openSnackBar(
-            this.interService.get('registro_exitoso')
-          );
-          this._dialogRef.close(true);
-        } else {
-          this.resourcesService.openSnackBar(`${responseData.msg}`);
-        }
-      },
-      async (httpErrorResponse: HttpErrorResponse) => {
-        let response = this.resourcesService.checkErrors(httpErrorResponse);
-        if (response !== null && response.reload) {
-          await this._registerWorkflow();
+    this._dialog
+      .open(AlertComponent, {
+        disableClose: true,
+        data: {
+          title: this.interService.get('confirmacion'),
+          description: this.interService.get('update_description_alert'),
+          icon: `warning`,
+          btnCancelar: this.interService.get('cancelar'),
+          btnAceptar: this.interService.get('aceptar'),
+        },
+      })
+      .afterClosed()
+      .subscribe(async (result) => {
+        if (result) {
+          await this._updateWorkflow();
         }
-      }
-    );
-    this.isLoading = false;
+      });
   }
 
   private async _updateWorkflow() {
     this.isLoading = true;
-    const encWorkflow: string = await this._encService.encrypt(this.idWorkflow);
+    //const encWorkflow: string = await this._encService.encrypt(this.idWorkflow);
     const requestFormWorkflow: RequestFormWorkflow =
       this._createRequestFormWorkflow();
     await lastValueFrom(
       this._processManagementService.updateWorkflow(
-        encWorkflow,
+        this.idWorkflow,
         requestFormWorkflow
       )
     ).then(
@@ -218,12 +168,13 @@ export class FormWorkflowComponent implements OnInit {
     let descripcion = this.formGroup.controls['DESCRIPCION'].value;
     descripcion = descripcion.toString().trim();
 
-    let automatico = this.formGroup.controls['AUTOMATICO'].value;
+    let comentarioCambio = this.formGroup.controls['COMENTARIO_CAMBIO'].value;
+    comentarioCambio = comentarioCambio.toString().trim();
 
     const requestFormWorkflow: RequestFormWorkflow = {
       NOMBRE_WORKFLOW: nombreWorkflow,
       DESCRIPCION: descripcion,
-      AUTOMATICO: automatico,
+      COMENTARIO_CAMBIO: comentarioCambio,
       USUARIO: this.resourcesService.getUser(),
       NUMERO_LINEA: this.resourcesService.getLineNumber(),
     };

+ 136 - 77
src/app/components/process-management/workflow-management/workflow-management.component.html

@@ -1,129 +1,184 @@
 <main class="main-container animated fadeIn">
-    
-  <app-btn-navigate navigate="/sam/GEPR" class="pink_primary_background" [nameButton]="interService.get('S002V01M03GEPR')" [changeLanguage]="true"  />
+  <app-btn-navigate
+    navigate="/sam/GEPR"
+    class="pink_primary_background"
+    [nameButton]="interService.get('S002V01M03GEPR')"
+    [changeLanguage]="true"
+  />
 
   <mat-card class="override-card override-elevation-z8">
-    @if (isLoadingForm) { 
-      <mat-progress-bar mode="indeterminate"></mat-progress-bar>
+    @if (isLoadingForm) {
+    <mat-progress-bar mode="indeterminate"></mat-progress-bar>
     }
     <section class="override-section">
       <nav class="override-nav">
         <div class="w-100 align-center pv-15">
-          <span class="title-card" style="font-family: 'Movilidad' !important;">{{ interService.get('S002V01S01GFTR').toUpperCase() }}</span>
+          <span
+            class="title-card"
+            style="font-family: 'Movilidad' !important"
+            >{{ interService.get("S002V01S01GFTR").toUpperCase() }}</span
+          >
         </div>
         <div class="override-actions">
-          <app-search-card 
-          [dataSource]="dataSource" 
-          [disabled]="isLoading || isLoadingForm" 
-          [label]="interService.get('buscador')" 
-          [placeholder]="interService.get('ingrese_palabra_buscar')" 
-          [btnRemoveFilter]="interService.get('eliminar_filtro')" 
-          (dataValue)="dataSource = $event" />
+          <app-search-card
+            [dataSource]="dataSource"
+            [disabled]="isLoading || isLoadingForm"
+            [label]="interService.get('buscador')"
+            [placeholder]="interService.get('ingrese_palabra_buscar')"
+            [btnRemoveFilter]="interService.get('eliminar_filtro')"
+            (dataValue)="dataSource = $event"
+          />
 
           <div class="override-buttons">
-            <!--<app-btn-resize 
-            class="mr-8"
-            (click)="goForm('REG')"
-            [disabled]="isLoading || isLoadingForm"
-            [backgroundColor]="'primary'" 
-            [textColor]="'white_font'" 
-            [nameButton]="interService.get('nuevo')" 
-            [icon]="'add'"/>-->
-            <app-btn-resize 
-              class="mr-8 raised_button_background"
-              (click)="alertRestore()"
-              [disabled]="isLoading || isLoadingForm"
-              [backgroundColor]="'primary raised-button-background'"
-              [textColor]="'white_font'" 
-              [nameButton]="interService.get('reset_configuration')" 
-              [icon]="'history'"
-            />
-            <button 
-            mat-mini-fab 
-            [matTooltip]="interService.get('actualizar_datos')"
-            (click)="getWorkflows()"
-            class="orange_primary_background white_font override_no_shadow ml-8">
+            <button
+              mat-mini-fab
+              [matTooltip]="interService.get('actualizar_datos')"
+              (click)="getWorkflows()"
+              class="orange_primary_background white_font override_no_shadow ml-8"
+            >
               <mat-icon>refresh</mat-icon>
             </button>
           </div>
         </div>
       </nav>
 
-      <app-loading-card [isLoading]="isLoading" [txtLoading]="interService.get('cargando_informacion_flujos')" />
+      <app-loading-card
+        [isLoading]="isLoading"
+        [txtLoading]="interService.get('cargando_informacion_flujos')"
+      />
 
       <div class="override-table scroll-x">
-        <table mat-table matSort [dataSource]="dataSource" class="animated fadeIn" [style.display]="isLoading ? 'none' : 'revert'">
-          <ng-container matColumnDef="ID_WORKFLOW" style="display: none;">
-            <th mat-header-cell *matHeaderCellDef style="display: none;"> ID </th>
-            <td mat-cell *matCellDef="let element" style="display: none;"> {{ element.ID_WORKFLOW }} </td>
+        <table
+          mat-table
+          matSort
+          [dataSource]="dataSource"
+          class="animated fadeIn"
+          [style.display]="isLoading ? 'none' : 'revert'"
+        >
+          <ng-container matColumnDef="ID_WORKFLOW" style="display: none">
+            <th mat-header-cell *matHeaderCellDef style="display: none">ID</th>
+            <td mat-cell *matCellDef="let element" style="display: none">
+              {{ element.ID_WORKFLOW }}
+            </td>
           </ng-container>
           <ng-container matColumnDef="SEGUIMIENTO">
-            <th mat-header-cell *matHeaderCellDef> No </th>
-            <td mat-cell *matCellDef="let element; let i = index"> #{{ i + 1 }} </td>
+            <th mat-header-cell *matHeaderCellDef>No</th>
+            <td mat-cell *matCellDef="let element; let i = index">
+              #{{ i + 1 }}
+            </td>
           </ng-container>
           <ng-container matColumnDef="NOMBRE_WORKFLOW">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header> {{ interService.get('nombre_flujo_trabajo') }} </th>
-            <td mat-cell *matCellDef="let element"> {{ element.NOMBRE_WORKFLOW }} </td>
+            <th mat-header-cell *matHeaderCellDef mat-sort-header>
+              {{ interService.get("nombre_flujo_trabajo") }}
+            </th>
+            <td mat-cell *matCellDef="let element">
+              {{ element.NOMBRE_WORKFLOW }}
+            </td>
           </ng-container>
           <ng-container matColumnDef="DESCRIPCION">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header> {{ interService.get('descripcion') }} </th>
-            <td mat-cell *matCellDef="let element"> {{ resourcesService.resizeText(element.DESCRIPCION, 147) }} </td>
+            <th mat-header-cell *matHeaderCellDef mat-sort-header>
+              {{ interService.get("descripcion") }}
+            </th>
+            <td mat-cell *matCellDef="let element">
+              {{ resourcesService.resizeText(element.DESCRIPCION, 147) }}
+            </td>
           </ng-container>
           <ng-container matColumnDef="MODULOS">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header> Módulos </th>
-            <td mat-cell *matCellDef="let element"> {{ element.MODULOS }} </td>
+            <th mat-header-cell *matHeaderCellDef mat-sort-header>Módulos</th>
+            <td mat-cell *matCellDef="let element">{{ element.MODULOS }}</td>
           </ng-container>
           <ng-container matColumnDef="PREDETERMINADO">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header style="text-align: center;"> Predeterminado </th>
-            <td mat-cell *matCellDef="let element" style="text-align: center;"> 
-              <mat-icon [style.color]="element.PREDETERMINADO ? '#4CAF50' : '#757575'">
-                {{ element.PREDETERMINADO ? 'check_circle' : 'cancel' }}
+            <th
+              mat-header-cell
+              *matHeaderCellDef
+              mat-sort-header
+              style="text-align: center"
+            >
+              Predeterminado
+            </th>
+            <td mat-cell *matCellDef="let element" style="text-align: center">
+              <mat-icon
+                [style.color]="element.PREDETERMINADO ? '#4CAF50' : '#757575'"
+              >
+                {{ element.PREDETERMINADO ? "check_circle" : "cancel" }}
               </mat-icon>
             </td>
           </ng-container>
           <ng-container matColumnDef="VERSION">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header style="text-align: center;"> Versión </th>
-            <td mat-cell *matCellDef="let element" style="text-align: center;"> {{ element.VERSION || 'N/A' }} </td>
+            <th
+              mat-header-cell
+              *matHeaderCellDef
+              mat-sort-header
+              style="text-align: center"
+            >
+              Versión
+            </th>
+            <td mat-cell *matCellDef="let element" style="text-align: center">
+              {{ element.VERSION || "N/A" }}
+            </td>
           </ng-container>
           <ng-container matColumnDef="ESTADO">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header> {{ interService.get('estado') }} </th>
-            <td mat-cell *matCellDef="let element"> 
-              <button mat-flat-button [class]="resourcesService.setChipList(element.ESTADO)" class="white_font">
+            <th mat-header-cell *matHeaderCellDef mat-sort-header>
+              {{ interService.get("estado") }}
+            </th>
+            <td mat-cell *matCellDef="let element">
+              <button
+                mat-flat-button
+                [class]="resourcesService.setChipList(element.ESTADO)"
+                class="white_font"
+              >
                 {{ element.ESTADO }}
               </button>
             </td>
           </ng-container>
           <ng-container matColumnDef="ACCIONES">
-            <th mat-header-cell *matHeaderCellDef mat-sort-header> {{ interService.get('acciones') }} </th>
+            <th mat-header-cell *matHeaderCellDef mat-sort-header>
+              {{ interService.get("acciones") }}
+            </th>
             <td mat-cell *matCellDef="let element">
-              <button 
-              mat-mini-fab 
-              color="primary" 
-              class="override_no_shadow gray_dark_font transparent_background" 
-              [matTooltip]="interService.get('clic_desplegar')" 
-              [matMenuTriggerFor]="menu" 
-              [disabled]="isLoadingForm || element.ESTADO === 'Eliminado'"
-              #menuTrigger>
+              <button
+                mat-mini-fab
+                color="primary"
+                class="override_no_shadow gray_dark_font transparent_background"
+                [matTooltip]="interService.get('clic_desplegar')"
+                [matMenuTriggerFor]="menu"
+                [disabled]="isLoadingForm || element.ESTADO === 'Eliminado'"
+                #menuTrigger
+              >
                 <mat-icon>more_vert</mat-icon>
               </button>
               <mat-menu #menu="matMenu">
-                <button mat-menu-item (click)="viewWorkflowDetails(element.ID_WORKFLOW)">
+                <button
+                  mat-menu-item
+                  (click)="viewWorkflowDetails(element.ID_WORKFLOW)"
+                >
                   <mat-icon>visibility</mat-icon> Ver detalles
                 </button>
-                <button mat-menu-item (click)="getTaskByWorkflow(element.ID_WORKFLOW)">
-                  <mat-icon>task</mat-icon> {{ interService.get('ver_tareas') }}
+                <button
+                  mat-menu-item
+                  (click)="getTaskByWorkflow(element.ID_WORKFLOW)"
+                >
+                  <mat-icon>task</mat-icon> {{ interService.get("ver_tareas") }}
                 </button>
-                <button mat-menu-item (click)="openGraphicWorkflow(element.ID_WORKFLOW)">
-                  <mat-icon>account_tree</mat-icon> {{ interService.get('ver_flujo') }}
+                <button
+                  mat-menu-item
+                  (click)="openGraphicWorkflow(element.ID_WORKFLOW)"
+                >
+                  <mat-icon>account_tree</mat-icon>
+                  {{ interService.get("ver_flujo") }}
                 </button>
-                <button mat-menu-item (click)="alertActivateWorkflow(element.ID_WORKFLOW)">
-                  <mat-icon>check_circle</mat-icon> {{ interService.get('activar_flujo_trabajo') }}
+                <button
+                  mat-menu-item
+                  (click)="alertActivateWorkflow(element.ID_WORKFLOW)"
+                >
+                  <mat-icon>check_circle</mat-icon>
+                  {{ interService.get("activar_flujo_trabajo") }}
                 </button>
-                <button mat-menu-item (click)="goForm('UPD', element)">
-                  <mat-icon>edit</mat-icon> {{ interService.get('editar') }}
+                <button mat-menu-item (click)="goForm(element)">
+                  <mat-icon>edit</mat-icon> {{ interService.get("editar") }}
                 </button>
                 <button mat-menu-item (click)="alert(element)">
-                  <mat-icon>delete</mat-icon> {{ interService.get('eliminar') }}
+                  <mat-icon>delete</mat-icon> {{ interService.get("eliminar") }}
                 </button>
               </mat-menu>
             </td>
@@ -141,6 +196,10 @@
         </table>
       </div>
     </section>
-    <mat-paginator [pageSizeOptions]="[10, 20, 50]" class="override-paginator" showFirstLastButtons></mat-paginator>
+    <mat-paginator
+      [pageSizeOptions]="[10, 20, 50]"
+      class="override-paginator"
+      showFirstLastButtons
+    ></mat-paginator>
   </mat-card>
-</main>
+</main>

+ 17 - 40
src/app/components/process-management/workflow-management/workflow-management.component.ts

@@ -197,46 +197,23 @@ export class WorkflowManagementComponent implements OnInit, AfterViewInit {
     );
   }
 
-  public goForm(typeForm: 'REG' | 'UPD', element?: GetWorkflows) {
-    if (typeForm === 'REG') {
-      this._dialog
-        .open(FormWorkflowComponent, {
-          disableClose: true,
-          width: '500px',
-          maxWidth: '500px',
-          data: {
-            type: typeForm,
-          },
-        })
-        .afterClosed()
-        .subscribe(async (result) => {
-          if (result) {
-            await this.getWorkflows();
-          }
-        });
-    } else if (typeForm === 'UPD' && element !== undefined) {
-      this._dialog
-        .open(FormWorkflowComponent, {
-          disableClose: true,
-          width: '500px',
-          maxWidth: '500px',
-          data: {
-            type: typeForm,
-            idWorkflow: element.ID_WORKFLOW,
-          },
-        })
-        .afterClosed()
-        .subscribe(async (result) => {
-          if (result) {
-            await this.getWorkflows();
-          }
-        });
-    } else {
-      this.resourcesService.openSnackBar(
-        this.interService.get('opcion_no_disponible')
-      );
-      return;
-    }
+  public goForm(element: GetWorkflows) {
+    this._dialog
+      .open(FormWorkflowComponent, {
+        disableClose: true,
+        width: '500px',
+        maxWidth: '500px',
+        data: {
+          type: 'UPD',
+          idWorkflow: element.ID_WORKFLOW,
+        },
+      })
+      .afterClosed()
+      .subscribe(async (result) => {
+        if (result) {
+          await this.getWorkflows();
+        }
+      });
   }
 
   public alertRestore() {

+ 2 - 10
src/app/interfaces/process-managementv/workflow-management.interface.ts

@@ -32,24 +32,16 @@ export interface Workflow {
 export interface RequestFormWorkflow {
   NOMBRE_WORKFLOW: string;
   DESCRIPCION: string;
-  AUTOMATICO: string;
+  COMENTARIO_CAMBIO: string;
   USUARIO: string;
   NUMERO_LINEA: number;
 }
 
 export interface DetailsFormWorkflow {
-  type: 'REG' | 'UPD';
+  type: 'UPD';
   idWorkflow?: string;
 }
 
-export interface RequestFormWorkflow {
-  NOMBRE_WORKFLOW: string;
-  DESCRIPCION: string;
-  AUTOMATICO: string;
-  USUARIO: string;
-  NUMERO_LINEA: number;
-}
-
 export interface ResponseDataWorkflow {
   error: boolean;
   msg: string;