import { keys } from 'lodash';
import { Delegacion, Gerencia } from 'src/pages/liquidaciones/models';
import { Campanias } from './campania';

export enum RolUsuario {
  JEFE_EQUIPO = 130,
  PREVENTA = 131,
  ADMINISTRADOR = 133,
  REPARTIDOR = 134,
  JEFE_REGIONAL = 135,
  CAPTADOR = 162,
  KEY_ACCOUNT = 172,
  GERENTE = 202,
  PROMOTOR = 203,
  SUPERVISOR = 204,
  COMERCIAL_CONTRACT = 234,
  ORGANIZADOR = 237,
  PROVEEDOR = 266,
  CLIENTE = 269,
  CANDIDATO = 278,
  SUPERADMIN = 999,
}

export const RolPermissions = keys(RolUsuario)
  .filter((key) => !isNaN(Number(key)))
  .map((v) => Number(v));

export const RolPermissionLabels = {
  [RolUsuario.JEFE_EQUIPO]: 'Jefe de equipo',
  [RolUsuario.PREVENTA]: 'Preventa',
  [RolUsuario.ADMINISTRADOR]: 'Administrador',
  [RolUsuario.REPARTIDOR]: 'Repartidor',
  [RolUsuario.JEFE_REGIONAL]: 'Jefe regional',
  [RolUsuario.CAPTADOR]: 'Captador',
  [RolUsuario.KEY_ACCOUNT]: 'Key Account',
  [RolUsuario.GERENTE]: 'Gerente',
  [RolUsuario.PROMOTOR]: 'Promotor',
  [RolUsuario.SUPERVISOR]: 'Supervisor',
  [RolUsuario.COMERCIAL_CONTRACT]: 'Comercial Contract',
  [RolUsuario.ORGANIZADOR]: 'Organizador',
  [RolUsuario.PROVEEDOR]: 'Proveedor',
  [RolUsuario.CLIENTE]: 'Cliente',
  [RolUsuario.CANDIDATO]: 'Candidato',
  [RolUsuario.SUPERADMIN]: 'Superadmin',
};

export const ROL_PERMISSIONS = RolPermissions.map((v) => ({ label: RolPermissionLabels[v], value: v }))

export interface Usuario {
  ID_USUARIO: number;
  ID_EXTERNO: string;
  COD_USU_MVX: number;
  COD_EMP_MVX: string;
  ID_PER_USU: number;
  ID_CONTACTO: number;
  ID_DEL_PRED: number;
  NOMBRE_USUARIO: string;
  ESTADO: Number;
  FECHA_CREADO?: Date;
  FECHA_ULTIMO_LOGIN?: Date;
  FECHA_ULTIMO_CAMBIO_PASSWORD?: Date;
  DELEGACION: Delegacion;
  DELEGACION_DESC: {
    COD_DEL_MVX: string;
    DESCRIPCION_COR: string;
    DESCRIPCION_LAR: string;
  };
  GERENCIA: Gerencia;
  CAMPANIA: Campanias;
  F_R_PERF: {
    DESCRIPCION: string;
  };
  CONTACTO: {
    ID_CONTACTO: number;
    ID_GAMA: number;
    NOMBRE: string;
    APELLIDO: string;
    APELLIDO2: string;
    PROPS: any;
    TELEFONO: {
      NUMERO: string;
    };
  };

  CONTACTO_NOMBRE?: string;
  CONTACTO_APELLIDO?: string;
  CONTACTO_APELLIDO2?: string;
  PROPS: any;
}
