import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { FormControl, Validators } from '@angular/forms';
import { Component, Inject, OnInit } from '@angular/core';
import { MatTableDataSource } from '@angular/material/table';

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-operation',
  templateUrl: './copy-operation.component.html',
  styleUrls: ['./copy-operation.component.css']
})
export class CopyOperationComponent implements OnInit {
  equipments: EquipmentInfo[];
  currentEquipment: string;
  dataSource: MatTableDataSource<any>;

  equipmentControl = new FormControl('', [Validators.required]);
  titleControl = new FormControl('', [Validators.required, Validators.maxLength(75)])

  isLoading: boolean;
  hasError: boolean;
  errorStr: string;

  displayedColumns: string[] =  ['CODIGO', 'DENOMI', 'FAMILI', 'SUBFAM', 'ESTADO', 'ACCIONES'];

  constructor(
    @Inject(MAT_DIALOG_DATA) private data: any,
    private _dialogRef: MatDialogRef<CopyOperationComponent>
  ) { 
    this.equipments = EQUIPMENT_TMP;
    this.currentEquipment = "";
    this.dataSource = new MatTableDataSource<any>;

    this.isLoading = true;
    this.hasError = false;
    this.errorStr = "";
  }

  ngOnInit(): void {
    this.currentEquipment = this.data.equipment;
    this.titleControl.valueChanges.subscribe((_) => {
      this.titleControl.markAsTouched();
    });
    setTimeout(() => {
      this.isLoading = false;
      this.hasError = false;
      this.errorStr = "ERROR DE PRUEBA";
    }, 1500);
  }

  updateTable(equipment: string){
    let eq = this.equipments.filter(item => item.CODIGO == equipment);
    this.dataSource = new MatTableDataSource(eq);
  }

  copyWorkOrder(){
    let resObj = {
      title: this.titleControl.value,
      equipment: this.equipmentControl.value,
    };
    this._dialogRef.close(JSON.stringify(resObj));
  }
}
