import { Component, Inject, OnInit } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { lastValueFrom } from 'rxjs';
import { EncService } from 'src/app/services/enc/enc.service';
import { PreventiveMaintenanceService } from 'src/app/services/preventive-maintenance.service';

interface EquipmentInfo{
  CODIGO: string;
  DENOMI: string;
  FAMILI: string;
  SUBFAM: string;
  ESTADO: string;
}
const EQUIPMENT_TMP: EquipmentInfo[] = [
  {
    CODIGO: '01.110.P01-15001.CAM_TCG.CTV.I.HICDE-X3G21-000001',
    DENOMI: 'Hickvision Cámara IP DOMO IR para Exteriores',
    FAMILI: 'Sistema de Telecomunicaciones',
    SUBFAM: 'Videovigilante',
    ESTADO: 'Instalado'
  },
  {
    CODIGO: '01.502.P01-09001.DIS_TN.FRN.I.PAFRE-XXOEM-000001',
    DENOMI: 'Pastillas de Freno',
    FAMILI: 'Tren Nuevo',
    SUBFAM: 'Sistema de Frenos',
    ESTADO: 'Instalado'
  },
  {
    CODIGO: '01.PCC.P01-13001.R42.B4-01_TC.RMS.I.ENCIS-NCC500-000002',
    DENOMI: 'Enrutador CISCO',
    FAMILI: 'Telecomunicaciones',
    SUBFAM: 'Red Multiservicios',
    ESTADO: 'Instalado'
  },
  {
    CODIGO: '01.PCC.P01-13001.R42.H7-06_TC.RMS.I.PAPCI-XXX96F-000001',
    DENOMI: 'Patch Panel Cisco',
    FAMILI: 'Telecomunicaciones',
    SUBFAM: 'Red Multiservicios',
    ESTADO: 'Instalado'
  },
  {
    CODIGO: '01.302.P01-14002.DVR.10,02:315.P01.14002-DVR.16,02_TCG.CTV.T.HICTU-HIM1-000020',
    DENOMI: 'Hickivision DVR de 16 Canales Turbo HD',
    FAMILI: 'Sistema de Telecomunicaciones',
    SUBFAM: 'Videovigilancia',
    ESTADO: 'Traslado'
  },
  {
    CODIGO: '01.110.S01-14001.UDF.17,08:160.UDF.S01-14001.18,08_V1.014.I.CALIG-XGB6KG-000100',
    DENOMI: 'Carril Ligero',
    FAMILI: 'Sistema de Vías',
    SUBFAM: 'Distribución de Durmientes',
    ESTADO: 'Instalado'
  },
  {
    CODIGO: '01.160.S01-03010.VEN.00010:110.P02-03010.VEN.00020_MEP.ACC.I.DUVEN-XXTDC-000002',
    DENOMI: 'Cable de Red',
    FAMILI: 'Telecomunicaciones',
    SUBFAM: 'Red Multiservicios',
    ESTADO: 'Instalado'
  }
];
@Component({
  selector: 'app-copy-order',
  templateUrl: './copy-order.component.html',
  styleUrls: ['./copy-order.component.css']
})
export class CopyOrderComponent implements OnInit {
  idOrder: number;
  equipments: EquipmentInfo[];

  equipmentControl = new FormControl('', Validators.required);

  constructor(
    @Inject(MAT_DIALOG_DATA) private _data: any,
    private _dialogRef: MatDialogRef<CopyOrderComponent>,
    private _snackBar: MatSnackBar,
    private _encService: EncService,
    private _prevMaintService: PreventiveMaintenanceService,
  ) { 
    this.idOrder = 0;
    this.equipments = [];
  }

  ngOnInit(): void {
    this.idOrder = parseInt(this._data.idOrder);
    EQUIPMENT_TMP.forEach(item => {
      if(item.CODIGO != this._data.equipment){
        this.equipments.push(item);
      }
    })
  }

  async copyOrder(){
    try{
      let idUser = localStorage.getItem('idusuario');
      let idEqEnc = await this._encService.encriptar(this.equipmentControl.value!);
      let formData = new FormData();
      
      formData.append('id_user', idUser!);
      formData.append('linea', '1');
      formData.append('id_order', `${this.idOrder}`);
      formData.append('equipment', idEqEnc);
      
      await lastValueFrom(this._prevMaintService.copyWorkOrder(formData));
      this.openSnackBar('La orden se copio correctamente.');
      this._dialogRef.close();
    }catch(error: any){
      if(error.error == undefined){
        this.openSnackBar('Ocurrió un error inesperado.');
      }else if(error.error.msg == undefined){
        this.openSnackBar('Ocurrió un error inesperado.');
      }else{
        this.openSnackBar(error.error.msg);
      }
    }
  }

  openSnackBar(msg: string){
    this._snackBar.open(msg, undefined, {
      duration: 2500,
    });
  }
}
