import {Component, ElementRef, inject, Inject, OnInit, ViewChild} from '@angular/core'; import {MatOption, provideNativeDateAdapter} from '@angular/material/core'; import {MatTableModule} from '@angular/material/table'; import { MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle, MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; import {JsonPipe, NgForOf, NgIf} from "@angular/common"; import {Observable} from "rxjs"; import {MatFormField, MatLabel,MatFormFieldModule } from "@angular/material/form-field"; import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms"; import {MatIconModule} from '@angular/material/icon'; import {MatDividerModule} from '@angular/material/divider'; import {MatButtonModule} from '@angular/material/button'; import {MatCard, MatCardContent} from "@angular/material/card"; import {MatInput} from "@angular/material/input"; import {MatSelect} from "@angular/material/select"; import {SoloNumerosDirective} from "../../../service/directivas_service/soloNumeros/solo-numeros.directive"; import Notiflix from "notiflix"; import {MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition} from "@angular/material/snack-bar"; interface listadoComun { codigo: string; nombre: string; } @Component({ selector: 'app-modalArticuloOC', standalone: true, providers: [provideNativeDateAdapter()], templateUrl: './modalArticuloOC.componente.html', imports: [ MatDialogActions, MatDialogClose, MatDialogContent, JsonPipe, MatLabel, ReactiveFormsModule, MatFormField, MatDialogTitle, MatTableModule, MatButtonModule, MatDividerModule, MatIconModule, MatCard, MatCardContent, MatInput, MatOption, MatSelect, NgForOf, NgIf, SoloNumerosDirective, MatFormFieldModule ], }) export class modalArticuloOC { //INICIALIZANDO VARIABLES private barraAlerta = inject(MatSnackBar); alertaPosicionHorizontal: MatSnackBarHorizontalPosition = 'center'; alertaPosicionVertical: MatSnackBarVerticalPosition = 'bottom'; alertaDuracion : number = 3; Estados : listadoComun[] = []; Unidades : listadoComun[] = []; Articulo : any = {}; Editar : boolean = false; datos_Articulo = new FormGroup({ nombreArticulo : new FormControl<string>('' ,Validators.required), unidadArticulo : new FormControl<string>('' ,Validators.required), cantidadArticulo : new FormControl<number | null >(null,Validators.required), estadoArticulo : new FormControl<string>('' ,Validators.required) }); constructor(@Inject(MAT_DIALOG_DATA) public data: any ,public dialogRef: MatDialogRef<modalArticuloOC>) { this.Estados = data.Estados; this.Unidades = data.Unidades; this.Articulo = data.DatoArticulo || {}; this.Editar = data.Editar || false; if(this.Editar){ this.datos_Articulo.get('nombreArticulo')?.setValue(this.Articulo.nombre); this.datos_Articulo.get('unidadArticulo')?.setValue(this.Articulo.unidad); this.datos_Articulo.get('cantidadArticulo')?.setValue(this.Articulo.cantidad); this.datos_Articulo.get('estadoArticulo')?.setValue(this.Articulo.estado); } } onCancelar(): void { this.Articulo = {Editar: this.Editar, Cancelado : true}; this.dialogRef.close(this.Articulo); } onConfirmar(): void { this.Articulo = { Cancelado : false, codigoArticulo : '', nombreArticulo : this.datos_Articulo.get('nombreArticulo')?.value, unidadArticulo : this.datos_Articulo.get('unidadArticulo')?.value, cantidadArticulo : this.datos_Articulo.get('cantidadArticulo')?.value, estadoArticulo : this.datos_Articulo.get('estadoArticulo')?.value } const validacion = this.validarRegistroArticulo(this.Articulo) ; if(validacion){ this.dialogRef.close(this.Articulo); }else{ this.mostrarAlerta('VALIDAR DATOS INGRESADOS'); return; } } validarRegistroArticulo(valores: any): boolean { if (valores.nombreArticulo && valores.unidadArticulo && valores.cantidadArticulo && valores.estadoArticulo) { return true; } else { return false; } } mostrarAlerta(mensaje: string): void { Notiflix.Loading.remove(); this.barraAlerta.open(mensaje, '', { horizontalPosition: this.alertaPosicionHorizontal, verticalPosition: this.alertaPosicionVertical, duration: this.alertaDuracion * 1000, panelClass: ['custom-snackbar'], }); } }