/**
 * IncidenteResponseDto - DTO de respuesta para incidentes
 *
 * @module HSE
 */

import { Expose, Type } from 'class-transformer';

/**
 * DTO de respuesta para persona involucrada
 */
export class InvolucradoResponseDto {
  @Expose()
  id: string;

  @Expose()
  empleadoId: string;

  @Expose()
  empleadoNombre?: string;

  @Expose()
  tipoInvolucramiento: string;

  @Expose()
  descripcionLesiones?: string;
}

/**
 * DTO de respuesta para incidentes.
 * Usar con class-transformer para serializar respuestas.
 */
export class IncidenteResponseDto {
  /** ID del incidente */
  @Expose()
  id: string;

  /** ID del tenant */
  @Expose()
  tenantId: string;

  /** Folio del incidente */
  @Expose()
  folio: string;

  /** Fecha y hora del incidente */
  @Expose()
  @Type(() => Date)
  fechaHora: Date;

  /** ID del fraccionamiento */
  @Expose()
  fraccionamientoId: string;

  /** Nombre del fraccionamiento */
  @Expose()
  fraccionamientoNombre?: string;

  /** Ubicacion descriptiva */
  @Expose()
  ubicacionDescripcion?: string;

  /** Tipo de incidente */
  @Expose()
  tipo: string;

  /** Gravedad */
  @Expose()
  gravedad: string;

  /** Descripcion del incidente */
  @Expose()
  descripcion: string;

  /** Causa inmediata */
  @Expose()
  causaInmediata?: string;

  /** Causa basica */
  @Expose()
  causaBasica?: string;

  /** Estado actual */
  @Expose()
  estado: string;

  /** Involucrados */
  @Expose()
  @Type(() => InvolucradoResponseDto)
  involucrados?: InvolucradoResponseDto[];

  /** Fecha de creacion */
  @Expose()
  @Type(() => Date)
  createdAt: Date;

  /** Fecha de actualizacion */
  @Expose()
  @Type(() => Date)
  updatedAt: Date;
}
