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

interface WorkflowHistoryItem {
  TIPO: string;
  VERSION?: string;
  NOMBRE_WORKFLOW?: string;
  DESCRIPCION?: string;
  ESTADO?: string;
  ID_WORKFLOW: string;
  FECHA_CAMBIO: string;
  COMENTARIO: string;
}

@Component({
  selector: 'app-workflow-history',
  templateUrl: './workflow-history.component.html',
  styleUrls: ['./workflow-history.component.css'],
  standalone: false
})
export class WorkflowHistoryComponent implements OnInit {
  public dataSource = new MatTableDataSource<WorkflowHistoryItem>();
  public displayedColumns = ['fecha', 'tipo', 'cambio', 'comentario'];

  constructor(
    public dialogRef: MatDialogRef<WorkflowHistoryComponent>,
    @Inject(MAT_DIALOG_DATA) public data: { idWorkflow: number }
  ) {}

  ngOnInit() {
    this.loadHistoryData();
  }

  private loadHistoryData() {
    const historyData: WorkflowHistoryItem[] = [
      {
        TIPO: 'VERSION',
        VERSION: '3',
        NOMBRE_WORKFLOW: 'Mantenimiento Correctivo de Vías Ferreas',
        DESCRIPCION: 'Workflow para gestión de mantenimiento correctivo en vías férreas.',
        ID_WORKFLOW: '1',
        FECHA_CAMBIO: '2025-09-09 14:05:28',
        COMENTARIO: 'test 2'
      },
      {
        TIPO: 'ESTADO',
        ESTADO: 'Activo',
        ID_WORKFLOW: '1',
        FECHA_CAMBIO: '2025-09-09 14:05:28',
        COMENTARIO: 'test 2'
      },
      {
        TIPO: 'VERSION',
        VERSION: '3',
        NOMBRE_WORKFLOW: 'Mantenimiento Correctivo de Vías Ferreas',
        DESCRIPCION: 'Workflow para gestión de mantenimiento correctivo.',
        ID_WORKFLOW: '1',
        FECHA_CAMBIO: '2025-09-09 14:03:45',
        COMENTARIO: 'test'
      },
      {
        TIPO: 'ESTADO',
        ESTADO: 'Eliminado',
        ID_WORKFLOW: '1',
        FECHA_CAMBIO: '2025-09-09 14:03:45',
        COMENTARIO: 'test'
      }
    ];

    this.dataSource.data = historyData.sort((a, b) => 
      new Date(b.FECHA_CAMBIO).getTime() - new Date(a.FECHA_CAMBIO).getTime()
    );
  }

  public getChangeDescription(item: WorkflowHistoryItem): string {
    return item.TIPO === 'VERSION' ? `Versión ${item.VERSION}` : `Estado: ${item.ESTADO}`;
  }

  public close() {
    this.dialogRef.close();
  }
}