import { CloseActivity } from "../components/corrective-maintenance/operations-management/close-no-measures-order/close-no-measures-order.component";
import { PriorityInterface } from "../components/system-admin/system-params/system-params.component";
import { CounterLastMeasuresListItem } from "./counters-activators.interface";
import { TempFileInfo } from "./temp-file-info.interface";

export interface CorrectiveWorkOrdersListResponse{
  error: boolean;
  msg: string;
  response: CorrectiveWorkOrdersListItem[];
}

export interface CorrectiveWorkOrdersListItem{
  ID_ORDEN: string;
  CODIGO_EQUIPAMIENTO: string;
  TIPO_EQUIPAMIENTO: string;
  MODELO_EQUIPAMIENTO: string;
  ID_EQUIPAMIENTO: string;
  FECHA_INICIO: string;
  CONTADOR: string;
  FECHA_FIN: string | null;
  TIPO_ACTIVACION: string;
  ID_RESPONSABLE: string;
  TIPO_RESPONSABLE: string;
  PRIORIDAD: string;
  PRIORIDAD_OBJ?: PriorityInterface,
  ESTADO: string;
}

export interface CorrectiveWorkOrderDetailsResponse{
  error: boolean;
  msg: string;
  response: CorrectiveWorkOrderDetails;
}

export interface CorrectiveWorkOrderDetails{
  ID_ORDEN: string;
  DESCRIPCION: string;
  CODIGO_EQUIPAMIENTO: string;
  TIPO_EQUIPAMIENTO: string;
  MODELO_EQUIPAMIENTO: string;
  ID_EQUIPAMIENTO: string;
  FECHA_INICIO: string;
  TIEMPO_ESTIMADO: number;
  CONTADOR: string;
  MEDIDAS: string;
  MEDIDAS_OBJ?: CounterLastMeasuresListItem;
  PRIORIDAD: string;
  PRIORIDAD_OBJ?: PriorityInterface;
  FECHA_FINAL: string | null;
  DURACION_TOTAL: number | null;
  RECURSOS: string;
  RECURSOS_ARR?: any[];
  PERSONAL: string;
  PERSONAL_ARR?: any[];
  TIPO_ACTIVACION: string;
  ID_RESPONSABLE: string;
  TIPO_RESPONSABLE: string;
  ANALISIS_COSTOS: string | null;
  DOCUMENTOS_RELACIONADOS: string;
  DOCUMENTOS_RELACIONADOS_ARR?: TempFileInfo[];
  CLASIFICACION: string;
  COMENTARIOS: string;
  GERENCIA_SEGURIDAD: string;
  HISTORIAL_ESTATUS: string;
  CAMPOS_EXTRA: string;
  ESTADO: string;
  USUREG: string;
  FECREG: string;
  USUMOD: string;
  FECMOD: string;
}

export interface SecurityManagementListResponse{
  error: boolean;
  msg: string;
  response: SecurityManagementListItem[];
}

export interface SecurityManagementDetailsResponse{
  error: boolean;
  msg: string;
  response: SecurityManagementListItem;
}

export interface SecurityManagementListItem{
  ID_GERENCIA_SEGURIDAD: string;
  LADA_TELEFONO_PRINCIPAL: string;
  TELEFONO_PRINCIPAL: string;
  EXTENSION_TELEFONO_PRINCIPAL: string | null;
  LADA_TELEFONO_SECUNDARIO: string | null;
  TELEFONO_SECUNDARIO: string | null;
  EXTENSION_TELEFONO_SECUNDARIO: string | null;
  CORREO_GERENCIA: string;
  GERENTE: string;
  ESTADO: string;
  USUREG: string;
  FECREG: string;
  USUMOD: string | null;
  FECMOD: string | null;
  NUMERO_ORDENES?: number;
  ORDENES_TRABAJO?: SecurityManagementAssociatedOrders[];
}

export interface SecurityManagementAssociatedOrders{
  ID_ORDEN: string;
}

export interface BlockRegistersListResponse{
  error: boolean;
  msg: string;
  response: BlockRegistersListItem[];
}

export interface BlockRegistersListItem{
  ID_BLOQUEO: string;
  BLOQUEADO: string;
  TIPO_BLOQUEADO: string;
  ESTADO: string;
  USUREG: string;
  FECREG: string;
  USUMOD: string | null;
  FECMOD: string | null;
}

export interface WorkOrderStatusHistoryListResponse{
  error: boolean;
  msg: string;
  response: WorkOrderStatusHistoryListItem[];
}

export interface WorkOrderStatusHistoryListItem{
  FECHA: string;
  ESTADO: string;
  USUARIO: string;
  ATENCION?: CorrectiveWorkOrderAttendance[];
  PERSONAL?: string[];
}

export interface CorrectiveWorkOrderAttendance{
  ID: string;
  FIRMA: string | null;
  RESPUESTA: string;
  COMENTARIOS: string | null;
}

export interface ReportsListResponse{
  error: boolean;
  msg: string;
  response: ReportsListItem[];
}

export interface ReportsListItem{
  ID_INFORME: string;
  TIPO_INFORME: string;
  DOCUMENTO: string;
  USUREG: string;
  FECREG: string;
}

export interface MaintenancePlansListResponse{
  error: boolean;
  msg: string;
  response: MaintenancePlansListItem[];
}

export interface MaintenancePlansListItem{
  ID_PLAN: string;
  EQUIPAMIENTO: string;
  LRU: string | null;
  TIEMPO_INMOVILIZACION_ESTIMADO: number;
  DURACION_TOTAL: number;
  CLASIFICACION: string;
  CONTADOR: string;
  ACTIVADOR: string;
  PRIORIDAD: string;
  PRIORIDAD_OBJ: PriorityInterface;
  ESTADO: string;
  USRREG: string;
  FECREG: string;
  USRMOD: string | null;
  FECMOD: string | null;
}

export interface MaintenancePlanDetailsResponse{
  error: boolean;
  msg: string,
  response: MaintenancePlanDetails;
}

export interface MaintenancePlanDetails{
  ID_PLAN: string;
  EQUIPAMIENTO: string;
  LRU: string | null;
  ESTADO_FUNCIONAMIENTO_EQUIPAMIENTO: string;
  ESTADO_FUNCIONAMIENTO_LRU: string | null;
  DESCRIPCION: string;
  TIEMPO_INMOVILIZACION_ESTIMADO: number;
  DURACION_TOTAL: number;
  CLASIFICACION: string;
  ESPECIALIDADES_REQUERIDAS: string;
  ESPECIALIDADES_REQUERIDAS_CONF?: any;
  CONFIGURACION_OPERARIOS: string;
  COMENTARIOS: string | null;
  RECURSOS: string;
  DETALLES_ADICIONALES: string | null;
  DOCUMENTOS_RELACIONADOS: string;
  DOCUMENTOS_RELACIONADOS_ARR?: TempFileInfo[];
  CONTADOR: string;
  SCADA: string;
  ACTIVADOR: string;
  PRIORIDAD: string;
  PRIORIDAD_OBJ?: PriorityInterface;
  SINTOMA: string;
  ESTADO: string;
  USRREG: string;
  FECREG: string;
  USRMOD: string | null;
  FECMOD: string | null;
}

export interface WorkGroupsListResponse{
  error: boolean;
  msg: string;
  response: WorkGroupsListItem[];
}

export interface WorkGroupsListItem{
  ID_GRUPO: string;
  NOMBRE_GRUPO: string;
  ESPECIALIDAD: string;
  ESTADO: string;
  USUREG: string;
  FECREG: string;
  USUMOD: string | null;
  FECMOD: string | null;
}

export interface WorkGroupDetailsResponse{
  error: boolean;
  msg: string;
  response: WorkGroupDetails;
}

export interface WorkGroupDetails{
  ID_GRUPO: string;
  NOMBRE_GRUPO: string;
  EQUIPOS_RELACIONADOS: string;
  EQUIPOS_RELACIONADOS_ARR?: WorkGroupRelatedTeam[];
  ESPECIALIDAD: string;
  ESTADO: string;
  USUREG: string;
  FECREG: string;
  USUMOD: string | null;
  FECMOD: string | null;
}

export interface WorkGroupRelatedTeam{
  ID_EQUIPO: string;
  NOMBRE_EQUIPO: string;
  ESPECIALIDAD: string;
}

export interface CorrectiveMaintenanceOrderField{
  fieldID: string;
  allowResize: boolean;
  cols: number;
  fieldType: string;
  includeDecimal: boolean;
  includeEmptyOption: boolean;
  isMultiple: boolean;
  label: string;
  maxLength: number;
  minLength: number;
  rows: number;
  selectorOptions: CustomSelectorOption[];
  validators: string;
  defaultDate: boolean;
  enabled: boolean;
  defaultHour: boolean;
}

export interface CustomSelectorOption{
  value: string;
  label: string;
}

export interface NoMeasuresFormFieldsListResponse{
  error: boolean;
  msg: string,
  response: NoMeasuresFormFields;
}

export interface NoMeasuresFormFields{
  VERSION: number;
  FECHA_ACTUALIZACION: string;
  CAMPOS: CorrectiveMaintenanceOrderField[];
}

export interface NoMeasuresOrdersListResponse{
  error: boolean;
  msg: string;
  response: NoMeasuresOrdersListItem[];
}

export interface NoMeasuresOrdersListItem{
  ID_REGISTRO: string;
  VERSION_FORMULARIO: number;
  ESTATUS: string;
  FECHA_REGISTRO: string;
  USUARIO_REGISTRO: string;
  FECHA_ACTUALIZACION: string | null;
  USUARIO_ACTUALIZACION: string | null;
}

export interface NoMeasuresOrderResponse{
  error: boolean;
  msg: string;
  response: NoMeasuresOrder;
}

export interface NoMeasuresOrder{
  DATOS: NoMeasuresOrderData;
  FORMULARIO: NoMeasuresFormFields;
}

export interface NoMeasuresOrderData{
  ID_REGISTRO: string;
  VERSION_FORMULARIO: number;
  DATOS: string;
  VALIDADO_POR: string | null;
  EXPEDIENTE: string | null;
  ESTATUS: string;
  ACTIVIDADES: CloseActivity[] | null;
  EVIDENCIA: string[] | null;
  FECHA_REGISTRO: string;
  USUARIO_REGISTRO: string;
  FECHA_ACTUALIZACION: string | null;
  USUARIO_ACTUALIZACION: string | null;
}

export interface CorrectiveWorkOrderStaffListResponse{
  error: boolean;
  msg: string;
  response: CorrectiveWorkOrderStaffListItem[];
}

export interface CorrectiveWorkOrderStaffListItem{
  ID: string;
  ID_USER: string;
  NAME: string;
  TYPE: string;
}