瀏覽代碼

fusion de formularios registro y actualizacion

EmilianoOrtiz 1 月之前
父節點
當前提交
5bf76babd8

+ 13 - 11
src/app/components/process-management/workflow-management/form-workflow/form-workflow.component.html

@@ -31,17 +31,19 @@
           }
         </mat-form-field>
       </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>
+      @if (isEditMode) {
+        <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>

+ 76 - 23
src/app/components/process-management/workflow-management/form-workflow/form-workflow.component.ts

@@ -8,6 +8,7 @@ import {
 import {
   DetailsFormWorkflow,
   RequestFormWorkflow,
+  RegisterWorkflowRequest,
   ResponseDataWorkflow,
 } from '../../../../interfaces/process-managementv/workflow-management.interface';
 import {
@@ -32,6 +33,7 @@ export class FormWorkflowComponent implements OnInit {
   public formGroup: FormGroup;
   public isLoading: boolean;
   public idWorkflow!: string;
+  public isEditMode: boolean;
 
   constructor(
     @Inject(MAT_DIALOG_DATA) public detailsFormWorkflow: DetailsFormWorkflow,
@@ -42,21 +44,32 @@ export class FormWorkflowComponent implements OnInit {
     private _encService: EncService,
     private _processManagementService: ProcessManagementService
   ) {
-    this.titleForm = this.interService.get('modificacion_flujo_trabajo');
+    this.isEditMode = this.detailsFormWorkflow.type === 'UPD';
+    this.titleForm = this.isEditMode
+      ? this.interService.get('modificacion_flujo_trabajo')
+      : this.interService.get('registro_flujo_trabajo');
     this.isLoading = false;
     this.formGroup = this._createFormGroup();
   }
 
   private _createFormGroup() {
-    return new FormGroup({
+    const formControls: any = {
       NOMBRE_WORKFLOW: new FormControl(null, Validators.required),
       DESCRIPCION: new FormControl(null, Validators.required),
-      COMENTARIO_CAMBIO: new FormControl(null, Validators.required),
-    });
+    };
+
+    if (this.isEditMode) {
+      formControls.COMENTARIO_CAMBIO = new FormControl(
+        null,
+        Validators.required
+      );
+    }
+
+    return new FormGroup(formControls);
   }
 
   async ngOnInit() {
-    if (this.detailsFormWorkflow.idWorkflow !== undefined) {
+    if (this.isEditMode && this.detailsFormWorkflow.idWorkflow !== undefined) {
       this.idWorkflow = this.detailsFormWorkflow.idWorkflow.toString();
       await this.getWorkflowById();
     }
@@ -107,24 +120,28 @@ export class FormWorkflowComponent implements OnInit {
     this.isLoading = false;
   }
 
-  public save() {
-    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();
-        }
-      });
+  public async save() {
+    if (this.isEditMode) {
+      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();
+          }
+        });
+    } else {
+      await this._registerWorkflow();
+    }
   }
 
   private async _updateWorkflow() {
@@ -157,6 +174,42 @@ export class FormWorkflowComponent implements OnInit {
     this.isLoading = false;
   }
 
+  private async _registerWorkflow() {
+    this.isLoading = true;
+    const registerRequest: RegisterWorkflowRequest = {
+      NOMBRE_WORKFLOW: this.formGroup.controls['NOMBRE_WORKFLOW'].value
+        .toString()
+        .trim(),
+      DESCRIPCION: this.formGroup.controls['DESCRIPCION'].value
+        .toString()
+        .trim(),
+      USUARIO: this.resourcesService.getUser(),
+      NUMERO_LINEA: this.resourcesService.getLineNumber(),
+    };
+
+    await lastValueFrom(
+      this._processManagementService.registerNewWorkflow(registerRequest)
+    ).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.isLoading = false;
+  }
+
   private _createRequestFormWorkflow(): RequestFormWorkflow {
     let nombreWorkflow = this.formGroup.controls['NOMBRE_WORKFLOW'].value;
     nombreWorkflow = nombreWorkflow.toString().trim();

+ 5 - 3
src/app/components/process-management/workflow-management/workflow-details/workflow-details.component.html

@@ -30,10 +30,12 @@
     <div class="detail-row">
       <strong>Predeterminado:</strong>
       <span>
-        <mat-icon [style.color]="workflowData.PREDETERMINADO === 1 ? '#4CAF50' : '#757575'">
-          {{ workflowData.PREDETERMINADO === 1 ? 'check_circle' : 'cancel' }}
+        <mat-icon
+          [style.color]="workflowData.PREDETERMINADO ? '#4CAF50' : '#757575'"
+        >
+          {{ workflowData.PREDETERMINADO ? "check_circle" : "cancel" }}
         </mat-icon>
-        {{ workflowData.PREDETERMINADO === 1 ? 'Sí' : 'No' }}
+        {{ workflowData.PREDETERMINADO ? "Sí" : "No" }}
       </span>
     </div>
 

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

@@ -9,7 +9,6 @@ export interface GetWorkflows {
   NOMBRE_WORKFLOW: string;
   DESCRIPCION: string;
   MODULOS: string;
-  MODULO_WORKFLOW: string;
   PREDETERMINADO: boolean;
   VERSION: string;
   ESTADO: string;
@@ -20,15 +19,16 @@ export interface Workflow {
   NUMERO_LINEA: number;
   NOMBRE_WORKFLOW: string;
   DESCRIPCION: string;
-  PREDETERMINADO: number;
+  PREDETERMINADO: boolean;
   ESTADO: string;
   VERSION: number;
-  INFORMACION_EXTRA: string;
+  //INFORMACION_EXTRA: string;
   MODULOS: string;
   USUARIO_MODIFICA: string;
   FECHA_MODIFICA: string;
 }
 
+//Este es el que usamos cuando se actualiza
 export interface RequestFormWorkflow {
   NOMBRE_WORKFLOW: string;
   DESCRIPCION: string;
@@ -45,7 +45,7 @@ export interface RegisterWorkflowRequest {
 }
 
 export interface DetailsFormWorkflow {
-  type: 'UPD';
+  type: 'REG' | 'UPD';
   idWorkflow?: string;
 }