import { EstadoCaptacion, TipoCaptacion } from '@win2win/shared';
import { IncidenciaTIPO } from './archivos';
import { Gama } from './gama';
import { Producto } from './producto';
import { TieRaw } from './tie';
import { ZonaPais } from './ubicaciones';

export enum ArchivosESTADO_APROBACION {
  PENDIENTE_A_SUBIR = '-2',
  PENDIENTE_A_APROBAR = '-1',
  RECHAZADA = '0',
  APROBADA = '1',
}

export type CaptacionManagerActionCode =
  | 'anular'
  | 'preaprobar'
  | 'aprobar'
  | 'restablecer'
  | 'solicitar_documentos'
  | 'solicitar_localizacion'
  | 'crear_incidencia'
  | 'confirmar'
  | 'finalizar'
  | 'aceptar_y_finalizar'
  | 'dar_alta_usuario'
  | 'nueva_meet'
  | 'eliminar';
export interface DocumentFilter {
  tags: Array<string>;
  types: Array<number>;
}

export interface Archivos {
  ID_CAPTACION?: number | null;
  ID_ARCHIVO: number;
  LOCATION: string;
  FILENAME: string;
  POSICION: number;
  FILETYPE: 'image' | 'video' | 'document';
  CODIGO: string;
  DESCRIPCION: string;
  OBSERVACION: string;
  TAGS: string | null | undefined;
  APROBADA: ArchivosESTADO_APROBACION;
  ESTADO: number;
  FECHA_SUBIDA: Date;
  FECHA_APROBADO: Date;
  PUBLICO: boolean;
  PRINCIPAL: boolean;
  APROBADO_POR?: number;
  SUBIDO_POR?: number;
  ID_TIPO_DOCUMENTO?: number | null;
  ID_CONTACTO?: number | null;
  ID_PRODUCTO?: number;
  R_ARCHIVOS_ARTICULO_DOCUMENTO?: any;
  CONTACTO_ARTICULO_ARCHIVO?: any;
  TYPE?: any;
  ID_INGRESO?: number | null;
  ID_DEUDA?: number | null;
  ID_GARANTIA?: number | null;
  CONTACTO: Contacto;
  FIRMABLE?: boolean | number;
  DETALLE_FIRMA?: {
    page: number;
    x: number;
    y: number;
    width: number;
    height: number;
  }[];
  ORIGINAL?: Archivos;
}

export interface UIArchivos extends Archivos {
  title: string;
  subtitle: string;
}

export interface ContactoReArticulo {
  ID_CONTACTO_RE_ARTICULO: number;
  COD_ART_MVX: string;
  ROLES: string;
  CONTACTO_ARTICULO: Contacto;
  ID_CONTACTO: number;
}

export interface Ubicacion {
  ID_UBICACION: number;
  ID_CONTACTO: number;
  COD_ART_MVX: string;
  DESCRIPCION: string;
  NOMBRE: string;
  ID_PAIS: number;
  PROVINCIA: string;
  PAIS: string;
  ID_ZONA: number;
  CIUDAD: string;
  MUNICIPIO: string;
  LOCALIDAD: string;
  COLONIA: string;
  COD_POSTAL: string;
  POBLACION: string;
  CALLE: string;
  NUMERO: number;
  NUMERO_INTERIOR: number;
  ENTRE_CALLE: string;
  ENTRE_CALLE2: string;
  MANZANA: string;
  LOTE: string;
  EDIFICIO: string;
  DEPARTAMENTO: string;
  LONGITUDE: number;
  LATITUDE: number;
  CATASTRO: string;
  FECHA_VALIDACION: Date;
  FECHA_UPD: Date;
  ESTADO: number;
}

export type MapType = 'satellite' | 'roadmap' | 'hybrid' | 'terrain';

export interface Contacto {
  ID_CONTACTO: number;
  RAZON_SOCIAL: string;
  NOMBRE: string;
  APELLIDO: string;
  APELLIDO2: string;
  PERSONA_CONTACTO: string;
  NIF: string;
  NUMERO_DOC: string;
  FOTO: string;
  TIPO_DOC: string;
  PAGINA_WEB: string;
  EMAIL: string;
  ESTADO_DOCUMENTOS: number;
  ESTADO_DIRECCION: null;
  INCIDENCIAS: Incidencia[];
  DOCUMENTOS: DOCUMENTOElement[];
  TELEFONOS: Telefono[];
  CUESTIONARIO_RESPUESTAS: {
    PREGUNTA: Pregunta;
    RESPUESTA: string;
  }[];
  DIRECCION: Ubicacion;
  CONTACTO_ARTICULO_ARCHIVOS?: Archivos[];
  CONTACTO_ARTICULO_TELEFONO?: { NUMERO: string };
}

export interface Direccion {
  ID_PAIS: number;
  PROVINCIA: null;
  ID_ZONA: number;
  COD_POSTAL: string;
  POBLACION: null;
  CALLE: null;
  NUMERO: null;
  MANZANA: null;
  EDIFICIO: null;
  PAIS_ZONA: ZonaPais;
  PAIS: Pais;
}

export interface Pais {
  ID_PAIS?: number;
  CODIGO?: string;
  ID_DIVISA?: number;
  NUM_USU?: number;
  NOMBRE: string;
  TITULO_ZONA: string;
}

export interface DOCUMENTOElement {
  ID_CONTACTO_DOC: number;
  ARCHIVO: string;
  APROBADA: number;
  DOCUMENTO: DocumentoDocumento;
}

export interface DocumentoDocumento {
  ID_TIPO_DOCUMENTO: number;
  NOMBRE: string;
}

export interface Incidencia {
  ID_INCIDENCIA?: number;
  ID_CONTACTO_INCIDENCIA?: number;
  NOMBRE: string;
  OBSERVACION: string;
  TIPO: IncidenciaTIPO;
  ID_DOCUMENTO?: number;
  ESTADO: number;
  FECHA: Date;
  FECHA_RESOLUCION: Date;
}

export interface Telefono {
  NUMERO: string;
  NOMBRE: string;
}

export enum IncidenciaESTADO {
  INACTIVA = '0',
  ACTIVA = '1',
}

export interface DatosAdicionale {
  ID_DATOS_CAPTACION: number;
  ID_CAPTACION: number;
  ID_CONFIGURACION_DATOS_CAPTACION: number;
  OPCIONES_SELECCIONADA: string;
  CONFIGURACION_DATO: ConfiguracionDato;
}

export interface ConfiguracionDato {
  CLAVE: string;
  DESCRIPCION: string;
}

export interface EntidadComercial {
  MONEDA: string;
  AN_CONSTITUCION: string;
  FACTURACION_COMPARATIVA: string;
  CANT_EMPLEADOS: number;
  CANT_AGENTES_COMERCIALES: number;
  CANT_REPARTIDORES: number;
  MARGEN_OPERACIONES: number;
  FACTURACION_MENSUAL_PROMEDIO: string;
  CONTRATACION_ANUAL: number;
  PEDIDOS_TRAMITADOS: number;
}

export interface BlockFieldProps {
  label: string;
  value: string | number | { state: number; labels: string[] };
}

export interface Captacion {
  LANDING: any;
  TIPO: TipoCaptacion;
  ID_CAPTACION: number;
  COD_CAPTACION: string;
  FECHA_CAPTADO: string;
  ESTADO: EstadoCaptacion;
  PUBLIC_TOKEN: string;
  DESCRIPCION_GENERAL: null;
  CAPTADOR: null;
  ENTIDAD_COMERCIAL: null;
  DATOS_ADICIONALES: any[];
  CONTACTO: Contacto;
  ARTICULO: Producto;
  FECHA_REVISADO: Date | null;
  TIES: TieRaw[];
  PROVEEDOR: {
    ID_PROVEEDOR: number;
    COD_PROVEEDOR: string;
  } | null;
  GAMAS: any[];
  PRODUCTOS_PEDIDO?: any[];

  LAYOUT?: any;
  PROPS?: any;
  GAMA: Gama;
}
export interface CuestionarioRespuesta {
  RESPUESTA: string;
  PREGUNTA: Pregunta;
}

export interface Pregunta {
  NOMBRE: null | string;
  CLAVE: string;
  TIPO: string;
  TITULO_GRUPO: null | string;
}

export interface Telefono {
  NUMERO: string;
  NOMBRE: string;
}

export interface CaptacionRaw {
  ID_CAPTACION: number;
  ID_PRODUCTO: number;
  COD_EMP_MVX: number;
  COD_CLI_MVX: null;
  COD_MOTIVO_ALTA: null;
  ID_CONTACTO: number;
  ID_CAPTADOR: null;
  ID_ZONA: null;
  ID_SEGMENTO: null;
  ID_REGION: null;
  ID_ALMACEN: null;
  ID_RUTA: null;
  ID_DELEGACION: null;
  ID_LANDING: number;
  TIPO: string;
  UNI_ID_TPV: null;
  FECHA_RECHAZO: null;
  FECHA_APROBACION_INICIAL: Date;
  FECHA_ALTA: null;
  FECHA_CAPTADO: Date;
  AFORO: null;
  V_COMP_AN_E: null;
  P_CON_HEL: null;
  P_CON_N_HEL: null;
  COD_LM: null;
  COD_SF: null;
  COD_CP_MVX: null;
  COD_FP_MVX: null;
  F_INI_TMP_ALTA: null;
  F_FIN_TMP_ALTA: null;
  LATITUD: null;
  LONGITUD: null;
  OBSERVACIONES: null;
  PERMANENCIA_COMPETENCIA: null;
  VENCIMIENTO_COMPETENCIA: null;
  ESTADO: string;
  INCIDENCIA: number;
  PUBLIC_TOKEN: string;
  DESCRIPCION_GENERAL: null;
  TIPO_FACTURACION: null;
  FTRA_RESUMEN: null;
  IBAN: null;
  DIAS_CREDITO: null;
  DIAS_PAGO: null;
  CAPTADO: null;
  STATUS_COMERCIALES: null;
  STATUS_DATOS_CLIENTE: null;
  STATUS_NEVERAS: null;
  SIN_COND_COMER: null;
  SIN_NEVERAS: null;
  FECHA_UPD: Date;
}
