'use stric'

const express = require('express');
const UsuarioController = require('../controllers/usuario');
const md_auth = require('../middleware/authenticated');
const api = express.Router(); // esto sirve para crear las rutas
const  multer = require('../libs/multerFotos');
const  multer2 = require('../libs/multerCI');
const  multer3 = require('../libs/multerCargaFamiliar');
const  multer4 = require('../libs/multerContrato');
const  multer5 = require('../libs/multerCapacitacion');
const  multer6 = require('../libs/multerExperiencia');
const multerHSE = require('../libs/multerHSE');

// md_auth.ensureAuth
api.post('/autenticarUsuario',UsuarioController.autenticarUsuario);
api.get('/obtenerAreas',md_auth.ensureAuth,UsuarioController.obtenerAreas);
api.get('/obtenerCargos/:id', md_auth.ensureAuth,UsuarioController.obtenerCargos);
api.get('/obtenerSistemas',md_auth.ensureAuth,UsuarioController.obtenerSistemas);
api.get('/obtenerRoles/:id', md_auth.ensureAuth,UsuarioController.obtenerRoles);
api.post('/registrarUsuario',multer.single('foto'),md_auth.ensureAuth, UsuarioController.registrarUsuario);
api.post('/obtenerUsuarios', md_auth.ensureAuth, UsuarioController.obtenerUsuarios);
api.post('/contarTotalUsuarios', md_auth.ensureAuth, UsuarioController.contarTotalUsuarios);
api.get('/obtenerUsuario/:id', md_auth.ensureAuth, UsuarioController.obtenerUsuario); 
api.post('/obtenerUsuariosPorArea/:idArea', md_auth.ensureAuth, UsuarioController.obtenerUsuariosPorArea);
api.post('/contarTotalUsuariosPorArea/:idArea', md_auth.ensureAuth, UsuarioController.contarTotalUsuariosPorArea);
api.post('/actualizarUsuario/:id',multer.single('foto'),md_auth.ensureAuth,UsuarioController.actualizarUsuario);
api.delete('/eliminarRol/:idUsuarioRol',md_auth.ensureAuth,UsuarioController.eliminarRol);
api.put('/actualizarEstadoUsuario/:id/:estado',md_auth.ensureAuth,UsuarioController.actualizarEstadoUsuario);
api.put('/actualizarContrasenia/:id', md_auth.ensureAuth, UsuarioController.actualizarContrasenia);
api.put('/recuperarContrasenia/:id', UsuarioController.recuperarContrasenia);

// MI SUAURIO
api.get('/obtenerMiUsuario/:id', md_auth.ensureAuth, UsuarioController.obtenerMiUsuario); 
api.put('/actualizarMisDatosPersonales/:id',multer2.single('archivoCI'), md_auth.ensureAuth, UsuarioController.actualizarMisDatosPersonales);
api.post('/obtener-usuarios-activos', md_auth.ensureAuth, UsuarioController.obtenerUsuariosActivos);
api.post('/registrarCapacitacion', multer5.single('archivoCapacitacion'),md_auth.ensureAuth, UsuarioController.registrarCapacitacion);
api.post('/obtenerCapacitaciones/:id', md_auth.ensureAuth, UsuarioController.obtenerCapacitaciones);
api.post('/contarTotalCapacitaciones/:id', md_auth.ensureAuth, UsuarioController.contarTotalCapacitaciones);
api.get('/obtenerCapacitacion/:id', md_auth.ensureAuth, UsuarioController.obtenerCapacitacion); 
api.put('/actualizarCapacitacion/:id',  multer5.single('archivoCapacitacion'), md_auth.ensureAuth, UsuarioController.actualizarCapacitacion);
api.delete('/eliminarCapacitacion/:id', md_auth.ensureAuth, UsuarioController.eliminarCapacitacion);

api.post('/registrarEstudio', md_auth.ensureAuth, UsuarioController.registrarEstudio);
api.post('/obtenerEstudios/:id', md_auth.ensureAuth, UsuarioController.obtenerEstudios);
api.post('/contarTotalEstudios/:id', md_auth.ensureAuth, UsuarioController.contarTotalEstudios);
api.get('/obtenerEstudio/:id', md_auth.ensureAuth, UsuarioController.obtenerEstudio); 
api.put('/actualizarEstudio/:id', md_auth.ensureAuth, UsuarioController.actualizarEstudio);
api.delete('/eliminarEstudio/:id', md_auth.ensureAuth, UsuarioController.eliminarEstudio);

api.post('/registrarCargaFamiliar', multer3.single('archivoCICargaFamiliar'),md_auth.ensureAuth, UsuarioController.registrarCargaFamiliar);
api.post('/obtenerCargasFamiliares/:id', md_auth.ensureAuth, UsuarioController.obtenerCargasFamiliares);
api.post('/contarTotalCargasFamiliares/:id', md_auth.ensureAuth, UsuarioController.contarTotalCargasFamiliares);
api.get('/obtenerCargaFamiliar/:id', md_auth.ensureAuth, UsuarioController.obtenerCargaFamiliar); 
api.put('/actualizarCargaFamiliar/:id', multer3.single('archivoCICargaFamiliar'), md_auth.ensureAuth, UsuarioController.actualizarCargaFamiliar);
api.delete('/eliminarCargaFamiliar/:id', md_auth.ensureAuth, UsuarioController.eliminarCargaFamiliar);


// admisnitrador 

api.get('/obtenerTodaInformacionUsuario/:id', md_auth.ensureAuth, UsuarioController.obtenerTodaInformacionUsuario); 


//LLAMADOS ATENCION
api.post('/registrarLlamadoAtencion', md_auth.ensureAuth, UsuarioController.registrarLlamadoAtencion);
api.post('/obtenerLlamadosAtencion/:id', md_auth.ensureAuth, UsuarioController.obtenerLlamadosAtencion);
api.post('/contarTotalLlamadosAtencion/:id', md_auth.ensureAuth, UsuarioController.contarTotalLlamadosAtencion);
api.get('/obtenerLlamadoAtencion/:id', md_auth.ensureAuth, UsuarioController.obtenerLlamadoAtencion);
api.put('/actualizarLlamadoAtencion/:id', md_auth.ensureAuth, UsuarioController.actualizarLlamadoAtencion);
api.put('/actualizarEstadoLlamadoAtencion/:id/:estado',md_auth.ensureAuth,UsuarioController.actualizarEstadoLlamadoAtencion);



//HISTORIAL EMPRESA
api.post('/registrarHistorialEmpresa', multer4.fields([{ name: 'archivoContrato', maxCount: 1 }, { name: 'archivoActaFiniquito', maxCount: 1 }]), md_auth.ensureAuth, UsuarioController.registrarHistorialEmpresa);
api.post('/obtenerHistorialesEmpresa/:id', md_auth.ensureAuth, UsuarioController.obtenerHistorialesEmpresa);
api.post('/contarTotalHistorialesEmpresa/:id', md_auth.ensureAuth, UsuarioController.contarTotalHistorialesEmpresa);
api.get('/obtenerHistorialEmpresa/:id', md_auth.ensureAuth, UsuarioController.obtenerHistorialEmpresa);
api.put('/actualizarHistorialEmpresa/:id', multer4.fields([{ name: 'archivoContrato', maxCount: 1 }, { name: 'archivoActaFiniquito', maxCount: 1 }]), md_auth.ensureAuth, UsuarioController.actualizarHistorialEmpresa);
api.delete('/eliminarHistorialEmpresa/:id', md_auth.ensureAuth, UsuarioController.eliminarHistorialEmpresa);


//experiencia laboral
api.post('/registrarExperienciaLaboral', multer6.single('archivoDocumento'), md_auth.ensureAuth, UsuarioController.registrarExperienciaLaboral);
api.post('/obtenerExperienciasLaborales/:id', md_auth.ensureAuth, UsuarioController.obtenerExperienciasLaborales);
api.post('/contarTotalExperienciasLaborales/:id', md_auth.ensureAuth, UsuarioController.contarTotalExperienciasLaborales);
api.get('/obtenerExperienciaLaboral/:id', md_auth.ensureAuth, UsuarioController.obtenerExperienciaLaboral);
api.put('/actualizarExperienciaLaboral/:id', multer6.single('archivoDocumento'), md_auth.ensureAuth, UsuarioController.actualizarExperienciaLaboral);
api.delete('/eliminarExperienciaLaboral/:id', md_auth.ensureAuth, UsuarioController.eliminarExperienciaLaboral);

//IDIOMA 
api.get('/obtenerIdiomasUsuario/:id', md_auth.ensureAuth, UsuarioController.obtenerIdiomasUsuario);
api.get('/obtenerIdiomaUsuario/:idIdioma', md_auth.ensureAuth, UsuarioController.obtenerIdiomaUsuario);
api.post('/registrarIdiomaUsuario', md_auth.ensureAuth, UsuarioController.registrarIdiomaUsuario);
api.put('/actualizarIdiomaUsuario/:idIdioma', md_auth.ensureAuth, UsuarioController.actualizarIdiomaUsuario);
api.delete('/eliminarIdiomaUsuario/:idIdioma', md_auth.ensureAuth, UsuarioController.eliminarIdiomaUsuario);
//hse
api.put('/actualizarInformacionHSE/:id',
  multerHSE.fields([
    { name: 'archivosLicencias', maxCount: 20 },
    { name: 'archivosLiberaciones', maxCount: 20 } ,
    { name: 'archivosCertificaciones', maxCount: 20 },
    { name: 'archivoManejoDefensivo', maxCount: 1 },
    { name: 'archivoCertificadoManejo', maxCount: 1 }
  ]),
  md_auth.ensureAuth,
  UsuarioController.actualizarInformacionHSE
);
api.get('/tipos-vacunas', md_auth.ensureAuth, UsuarioController.listarTiposVacunas);
api.get('/tipos-certificaciones-habilitantes', md_auth.ensureAuth, UsuarioController.listarTiposCertificacionesHabilitantes);

// Reportes optimizados
api.post('/reporte-vacunas', md_auth.ensureAuth, UsuarioController.obtenerReporteVacunas);
api.post('/exportar-usuarios-completos', md_auth.ensureAuth, UsuarioController.exportarUsuariosCompletos);

// Matrices IESS
api.post('/obtener-avisos-entrada', md_auth.ensureAuth, UsuarioController.obtenerAvisosEntrada);
api.post('/contar-avisos-entrada', md_auth.ensureAuth, UsuarioController.contarAvisosEntrada);
api.post('/obtener-avisos-salida', md_auth.ensureAuth, UsuarioController.obtenerAvisosSalida);
api.post('/contar-avisos-salida', md_auth.ensureAuth, UsuarioController.contarAvisosSalida);
// Reporte de Historial Laboral
api.post('/reporte-historial-laboral', md_auth.ensureAuth, UsuarioController.obtenerReporteHistorialLaboral);
api.post('/reporte-historial-laboral/contar', md_auth.ensureAuth, UsuarioController.contarReporteHistorialLaboral);

// Reporte de Hijos
api.post('/obtenerHijosFamiliares', md_auth.ensureAuth, UsuarioController.obtenerHijosFamiliares);
api.post('/contarTotalHijosFamiliares', md_auth.ensureAuth, UsuarioController.contarTotalHijosFamiliares);
module.exports = api;