using Exferia_Aplicacion.General; using Exferia_Aplicacion.Modelos_Informes; using Exferia_KairosPRO._1_Modelos; using Exferia_KairosPRO._2_Datos; using Exferia_KairosPRO_EF; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Exferia_KairosPRO.General { public class Verificacion_Fichaje_EnvioEmail { #region Variables privadas private TMP_Emails_FichajesIncidencias_Datos g_obj_TMP_Emails_FichajesIncidencias_Datos = new TMP_Emails_FichajesIncidencias_Datos(); private TMP_Emails_Informes_PorFechas_Datos g_obj_TMP_Emails_Informes_PorFechas_Datos = new TMP_Emails_Informes_PorFechas_Datos(); private TMP_Emails_RecordatorioFichajes_Datos g_obj_TMP_Emails_RecordatorioFichajes_Datos = new TMP_Emails_RecordatorioFichajes_Datos(); private KRS_Empleados_Datos g_obj_KRS_Empleados_Datos = new KRS_Empleados_Datos(); private KRS_AusenciasProgramadas_Datos g_obj_KRS_AusenciasProgramadas_Datos = new KRS_AusenciasProgramadas_Datos(); private KRS_DiasFestivos_Datos g_obj_KRS_DiasFestivos_Datos = new KRS_DiasFestivos_Datos(); private KRSS_Fichajes_Datos g_obj_KRSS_Fichajes_Datos = new KRSS_Fichajes_Datos(); private KRS_JornadasCabecera_Datos g_obj_KRS_JornadasCabecera_Datos = new KRS_JornadasCabecera_Datos(); private KRS_JornadasLinea_Datos g_obj_KRS_JornadasLinea_Datos = new KRS_JornadasLinea_Datos(); #endregion public void Fichajes_Invalidos(long _lng_CodigoCliente) { try { //Emails pendiente de Enviar de validacion de fichajes List lst_TMP_Emails_FichajesIncidencias = g_obj_TMP_Emails_FichajesIncidencias_Datos.Obtener_Listado(_lng_CodigoCliente); if (lst_TMP_Emails_FichajesIncidencias != null && lst_TMP_Emails_FichajesIncidencias.Count > 0) { //Validar los fichajes por Empleado DateTime? dtt_FechaFichaje = null; foreach (TMP_Emails_FichajesIncidencias mdl_TMP_Emails_FichajesIncidencias in lst_TMP_Emails_FichajesIncidencias) { INTERNO_KairosPRO_FichajeIncidencias_Modelo mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo = null; List lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo = new List(); KRS_Empleados mdl_KRS_Empleados = g_obj_KRS_Empleados_Datos.Obtener_Modelo_Por_Id(mdl_TMP_Emails_FichajesIncidencias.idEmpleado,_lng_CodigoCliente,true,true ); if (mdl_KRS_Empleados != null) { mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo = new INTERNO_KairosPRO_FichajeIncidencias_Modelo(); //Datos del Empleado mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Empleado_Nombre = mdl_KRS_Empleados.nombre; mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Empleado_Foto = null; if (mdl_KRS_Empleados.KRS_EmpleadosFotos != null && mdl_KRS_Empleados.KRS_EmpleadosFotos.Count > 0) { mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Empleado_Foto = mdl_KRS_Empleados.KRS_EmpleadosFotos.FirstOrDefault().foto; } //Datos del Fichaje if (mdl_TMP_Emails_FichajesIncidencias.idFichaje != null) { KRSS_Fichajes mdl_KRSS_Fichajes = g_obj_KRSS_Fichajes_Datos.Obtener_Modelo_Por_Id(mdl_TMP_Emails_FichajesIncidencias.idFichaje.Value, _lng_CodigoCliente,true,true); if (mdl_KRSS_Fichajes != null) { dtt_FechaFichaje = mdl_KRSS_Fichajes.fechaHora; mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Fichaje_Observaciones = mdl_KRSS_Fichajes.observaciones; //Datos del Dispositivo if (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null) { mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Dispositivo_Marca = mdl_KRSS_Fichajes.KRSS_DispositivosModelo.marca; mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Dispositivo_Modelo = mdl_KRSS_Fichajes.KRSS_DispositivosModelo.modelo; mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Dispositivo_MAC = mdl_KRSS_Fichajes.KRSS_DispositivosModelo.mac; } mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Fichaje_Foto = null; if (mdl_KRSS_Fichajes.KRSS_FichajesFotos != null && mdl_KRSS_Fichajes.KRSS_FichajesFotos.Count > 0) { mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Fichaje_Foto = mdl_KRSS_Fichajes.KRSS_FichajesFotos.FirstOrDefault().foto; } } } //Datos de la Jornada if (mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera != null) { KRS_JornadasCabecera mdl_KRS_JornadasCabecera = g_obj_KRS_JornadasCabecera_Datos.Obtener_Modelo_Por_Id(mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera.Value,_lng_CodigoCliente,false); if (mdl_KRS_JornadasCabecera != null) { mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Jornada_TiempoTeorio = mdl_KRS_JornadasCabecera.tiempoTeorico; } } mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo.Jornada_Dia = mdl_TMP_Emails_FichajesIncidencias.fecha; //FUERA DE JORNADA ############################################################################################################### if (mdl_TMP_Emails_FichajesIncidencias.incidencia_Tipo.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_FICHAJE_FUERAJORNADA)) { //Buscar las Jornadas Lineas bool bol_FechaHoraFichaje_Utilizados = false; if (mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera != null) { List lst_KRS_JornadasLinea = g_obj_KRS_JornadasLinea_Datos.Obtener_ModeloListado_Por_JornadaCabeceraCodigoCliente(mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera.Value, _lng_CodigoCliente); if (lst_KRS_JornadasLinea != null && lst_KRS_JornadasLinea.Count > 0) { string str_Tipo = ""; TimeSpan obj_Jornada = lst_KRS_JornadasLinea[0].hora; DateTime dtt_DiaActual = mdl_TMP_Emails_FichajesIncidencias.fecha; foreach (KRS_JornadasLinea mdl_KRS_JornadasLinea in lst_KRS_JornadasLinea) { //TIPO DE JORNADA LINEA .............................................................. str_Tipo = ""; //Ausencia Obligada if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_AUSENCIAOBLIGADA)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_AUSENCIAOBLIGADA; } //Flexible else if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_FLEXIBLE)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_FLEXIBLE; } //Presencia obligada else if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_PRESENCIAOBLIGADA)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_PRESENCIAOBLIGADA; } //..................................................................................... //Cambio de Dia ...................................................... if (obj_Jornada > mdl_KRS_JornadasLinea.hora) { dtt_DiaActual = dtt_DiaActual.AddDays(1); } obj_Jornada = mdl_KRS_JornadasLinea.hora; //.................................................................... //Incidencia del Fichaje DateTime dtt_FechaJornadaLinea = new DateTime(dtt_DiaActual.Year, dtt_DiaActual.Month, dtt_DiaActual.Day, obj_Jornada.Hours, obj_Jornada.Minutes, 0); if (bol_FechaHoraFichaje_Utilizados == false && dtt_FechaJornadaLinea >= dtt_FechaFichaje.Value) { lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(new TimeSpan(dtt_FechaFichaje.Value.Hour, dtt_FechaFichaje.Value.Minute, 0), "", true, mdl_TMP_Emails_FichajesIncidencias.incidencia_descripcion)); bol_FechaHoraFichaje_Utilizados = true; } lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(mdl_KRS_JornadasLinea.hora, str_Tipo, false, "")); } } } //Si no está en ninugn rango de jornada se pone solo, el ultimo if (bol_FechaHoraFichaje_Utilizados == false) { lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(new TimeSpan(dtt_FechaFichaje.Value.Hour, dtt_FechaFichaje.Value.Minute, 0), "", true, mdl_TMP_Emails_FichajesIncidencias.incidencia_descripcion)); } } //NO HAY NINGUN FICHAJE Y DEBERIA HABERLO ############################################################################################# else if (mdl_TMP_Emails_FichajesIncidencias.incidencia_Tipo.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_FICHAJE_NOHAYFICHAJE)) { //Buscar las Jornadas Lineas if (mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera != null) { List lst_KRS_JornadasLinea = g_obj_KRS_JornadasLinea_Datos.Obtener_ModeloListado_Por_JornadaCabeceraCodigoCliente( mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera.Value, _lng_CodigoCliente); if (lst_KRS_JornadasLinea != null && lst_KRS_JornadasLinea.Count > 0) { string str_Tipo = ""; string str_Incidencia = ""; bool bol_TieneIncidencia = false; foreach (KRS_JornadasLinea mdl_KRS_JornadasLinea in lst_KRS_JornadasLinea) { str_Incidencia = ""; bol_TieneIncidencia = false; str_Tipo = ""; //TIPO DE JORNADA LINEA .............................................................. //Ausencia Obligada if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_AUSENCIAOBLIGADA)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_AUSENCIAOBLIGADA; } //Flexible else if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_FLEXIBLE)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_FLEXIBLE; } //Presencia obligada else if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_PRESENCIAOBLIGADA)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_PRESENCIAOBLIGADA; } //..................................................................................... if (mdl_TMP_Emails_FichajesIncidencias.idJornadaLinea != null) { if (mdl_KRS_JornadasLinea.id.Equals(mdl_TMP_Emails_FichajesIncidencias.idJornadaLinea.Value)) { str_Incidencia = mdl_TMP_Emails_FichajesIncidencias.incidencia_descripcion; bol_TieneIncidencia = true; } } lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(mdl_KRS_JornadasLinea.hora, str_Tipo, bol_TieneIncidencia, str_Incidencia)); } } } } //HAY UN FICHAJE Y NO DEBERIA HABERLO ######################################################################################################## else if (mdl_TMP_Emails_FichajesIncidencias.incidencia_Tipo.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_FICHAJE_HAYFICHAJENODEBERIA_AUSENCIAPROGRAMA) || mdl_TMP_Emails_FichajesIncidencias.incidencia_Tipo.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_FICHAJE_HAYFICHAJENODEBERIA_DIAFESTIVO)) { lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(new TimeSpan(dtt_FechaFichaje.Value.Hour, dtt_FechaFichaje.Value.Minute, 0), "", true, mdl_TMP_Emails_FichajesIncidencias.incidencia_descripcion)); } //TIPO INCORRECTO DE FICHAJE, E SUNA ENTRADA Y DEBERIA HABER UNA SALIDA Y VICEVERSA ################################################################### else if (mdl_TMP_Emails_FichajesIncidencias.incidencia_Tipo.Equals(Variables_KairosPRO.G_INT_TIPOINCIDENCIA_FICHAJE_TIPOINCORRECTO_ENTRADASALIDA)) { //Buscar las Jornadas Lineas bool bol_FechaHoraFichaje_Utilizados = false; if (mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera != null) { List lst_KRS_JornadasLinea = g_obj_KRS_JornadasLinea_Datos.Obtener_ModeloListado_Por_JornadaCabeceraCodigoCliente(mdl_TMP_Emails_FichajesIncidencias.idJornadaCabecera.Value, _lng_CodigoCliente); if (lst_KRS_JornadasLinea != null && lst_KRS_JornadasLinea.Count > 0) { string str_Tipo = ""; TimeSpan obj_Jornada = lst_KRS_JornadasLinea[0].hora; DateTime dtt_DiaActual = mdl_TMP_Emails_FichajesIncidencias.fecha; foreach (KRS_JornadasLinea mdl_KRS_JornadasLinea in lst_KRS_JornadasLinea) { //TIPO DE JORNADA LINEA .............................................................. str_Tipo = ""; //Ausencia Obligada if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_AUSENCIAOBLIGADA)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_AUSENCIAOBLIGADA; } //Flexible else if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_FLEXIBLE)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_FLEXIBLE; } //Presencia obligada else if (mdl_KRS_JornadasLinea.tipo.Equals(Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_PRESENCIAOBLIGADA)) { str_Tipo = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_PRESENCIAOBLIGADA; } //..................................................................................... //Cambio de Dia ...................................................... if (obj_Jornada > mdl_KRS_JornadasLinea.hora) { dtt_DiaActual = dtt_DiaActual.AddDays(1); } obj_Jornada = mdl_KRS_JornadasLinea.hora; //.................................................................... //Incidencia del Fichaje DateTime dtt_FechaJornadaLinea = new DateTime(dtt_DiaActual.Year, dtt_DiaActual.Month, dtt_DiaActual.Day, obj_Jornada.Hours, obj_Jornada.Minutes, 0); if (bol_FechaHoraFichaje_Utilizados == false && dtt_FechaJornadaLinea >= dtt_FechaFichaje.Value) { lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(new TimeSpan(dtt_FechaFichaje.Value.Hour, dtt_FechaFichaje.Value.Minute, 0), "", true, mdl_TMP_Emails_FichajesIncidencias.incidencia_descripcion)); bol_FechaHoraFichaje_Utilizados = true; } lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(mdl_KRS_JornadasLinea.hora, str_Tipo, false, "")); } } } //Si no está en ninugn rango de jornada se pone solo, el ultimo if (bol_FechaHoraFichaje_Utilizados == false) { lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo.Add(new INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo(new TimeSpan(dtt_FechaFichaje.Value.Hour, dtt_FechaFichaje.Value.Minute, 0), "", true, mdl_TMP_Emails_FichajesIncidencias.incidencia_descripcion)); } } if (mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo != null) { if (Verificacion_Fichajes_Email.Enviar_FichajeIncidencia_Jornada(_lng_CodigoCliente, mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo, lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo,mdl_KRS_Empleados)) { //Se borra el registro de base de datos g_obj_TMP_Emails_FichajesIncidencias_Datos.Borrar(mdl_TMP_Emails_FichajesIncidencias.id, _lng_CodigoCliente); } } } else { mdl_INTERNO_KairosPRO_FichajeIncidencias_Modelo = null; //No hay Empleado Control_Errores.Errores_Log("No hay empleado", null, nameof(Verificacion_Fichaje_EnvioEmail) + "/" + nameof(Fichajes_Invalidos)); } } } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Fichaje_EnvioEmail) + "/" + nameof(Fichajes_Invalidos)); } } #region Informes por Fechas public void Informes_PorFechas(long _lng_CodigoCliente) { try { List lst_idEmpresa = g_obj_KRS_Empleados_Datos.Obtener_Empresas_Segun_CodigoCliente(_lng_CodigoCliente); if (lst_idEmpresa!=null && lst_idEmpresa.Count>0) { foreach (long lng_idEmpresa in lst_idEmpresa) { //Emails pendiente de Enviar de Informes Tipo Diario ################################################################################################################################################################## List lst_TMP_Emails_Informes_PorFechas_DIARIO = g_obj_TMP_Emails_Informes_PorFechas_Datos.Obtener_Listado(_lng_CodigoCliente, Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_DIARIO.Id); if (lst_TMP_Emails_Informes_PorFechas_DIARIO != null && lst_TMP_Emails_Informes_PorFechas_DIARIO.Count > 0) { List lst_KRS_Empleados = null; foreach (TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas in lst_TMP_Emails_Informes_PorFechas_DIARIO) { lst_KRS_Empleados = g_obj_KRS_Empleados_Datos.Obtener_ModeloListado(mdl_TMP_Emails_Informes_PorFechas.codigoCliente); if (lst_KRS_Empleados != null && lst_KRS_Empleados.Count > 0) { Informes_PorFechas_Diario(mdl_TMP_Emails_Informes_PorFechas, lst_KRS_Empleados, lng_idEmpresa); } } } //##################################################################################################################################################################################################################### //Emails pendiente de Enviar de Informes Tipo Semanal ################################################################################################################################################################## List lst_TMP_Emails_Informes_PorFechas_SEMANAL = g_obj_TMP_Emails_Informes_PorFechas_Datos.Obtener_Listado(_lng_CodigoCliente, Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_SEMANAL.Id); if (lst_TMP_Emails_Informes_PorFechas_SEMANAL != null && lst_TMP_Emails_Informes_PorFechas_SEMANAL.Count > 0) { List lst_KRS_Empleados = null; foreach (TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas in lst_TMP_Emails_Informes_PorFechas_SEMANAL) { lst_KRS_Empleados = g_obj_KRS_Empleados_Datos.Obtener_ModeloListado(mdl_TMP_Emails_Informes_PorFechas.codigoCliente); if (lst_KRS_Empleados != null && lst_KRS_Empleados.Count > 0) { Informes_PorFechas_Semanal(mdl_TMP_Emails_Informes_PorFechas, lst_KRS_Empleados, lng_idEmpresa); } } } //##################################################################################################################################################################################################################### //Emails pendiente de Enviar de Informes Tipo Mensual ################################################################################################################################################################## List lst_TMP_Emails_Informes_PorFechas_MENSUAL = g_obj_TMP_Emails_Informes_PorFechas_Datos.Obtener_Listado(_lng_CodigoCliente, Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_MENSUAL.Id); if (lst_TMP_Emails_Informes_PorFechas_MENSUAL != null && lst_TMP_Emails_Informes_PorFechas_MENSUAL.Count > 0) { List lst_KRS_Empleados = null; foreach (TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas in lst_TMP_Emails_Informes_PorFechas_MENSUAL) { lst_KRS_Empleados = g_obj_KRS_Empleados_Datos.Obtener_ModeloListado(mdl_TMP_Emails_Informes_PorFechas.codigoCliente); if (lst_KRS_Empleados != null && lst_KRS_Empleados.Count > 0) { Informes_PorFechas_Mensual(mdl_TMP_Emails_Informes_PorFechas, lst_KRS_Empleados, lng_idEmpresa); } } } //##################################################################################################################################################################################################################### //Emails pendiente de Enviar de Informes Tipo Mensual TotalDispositivos ############################################################################################################################################### List lst_TMP_Emails_Informes_PorFechas_MENSUAL_DISPOSITIVOS = g_obj_TMP_Emails_Informes_PorFechas_Datos.Obtener_Listado(_lng_CodigoCliente, Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUAL_TOTALDISPOSITIVOS.Id); if(lst_TMP_Emails_Informes_PorFechas_MENSUAL_DISPOSITIVOS != null && lst_TMP_Emails_Informes_PorFechas_MENSUAL_DISPOSITIVOS.Count > 0) { //List lst_KRS_Empleados = null; foreach(TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas in lst_TMP_Emails_Informes_PorFechas_MENSUAL_DISPOSITIVOS) { Informes_PorFechas_Mensual_TotalDispositivos(mdl_TMP_Emails_Informes_PorFechas, lng_idEmpresa); } } //##################################################################################################################################################################################################################### //Emails pendiente de Enviar de Informes Tipo Diario RecordatorioFichajes ############################################################################################################################################### List lst_TMP_Emails_RecordatorioFichajes_DIARIO_RECORDATORIO = g_obj_TMP_Emails_RecordatorioFichajes_Datos.Obtener_Listado(_lng_CodigoCliente); if(lst_TMP_Emails_RecordatorioFichajes_DIARIO_RECORDATORIO != null && lst_TMP_Emails_RecordatorioFichajes_DIARIO_RECORDATORIO.Count > 0) { foreach (TMP_Emails_RecordatorioFichajes mdl_TMP_Emails_RecordatorioFichajes in lst_TMP_Emails_RecordatorioFichajes_DIARIO_RECORDATORIO) { Informes_PorFechas_Diario_RecordatorioFichaje(mdl_TMP_Emails_RecordatorioFichajes); } } //##################################################################################################################################################################################################################### } } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(Verificacion_Fichaje_EnvioEmail) + "/" + nameof(Informes_PorFechas)); } } private void Informes_PorFechas_Diario(TMP_Emails_Informes_PorFechas _mdl_TMP_Emails_Informes_PorFechas, List _lst_KRS_Empleados,long _lng_idEmpresa) { List lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo = new List(); DateTime dtt_FechaDesde_BusquedaFichaje = _mdl_TMP_Emails_Informes_PorFechas.fechaDesde; DateTime dtt_FechaHasta_BusquedaFichaje = _mdl_TMP_Emails_Informes_PorFechas.fechaHasta; INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = null; List lst_KRSS_Fichajes = null; KRS_AusenciasProgramadas mdl_KRS_AusenciasProgramadas = null; KRS_DiasFestivos mdl_KRS_DiasFestivos = null; TimeSpan? obj_tms_Nulo = null; bool bol_TienePresenciaProgramada = false; foreach (KRS_Empleados mdl_KRS_Empleados in _lst_KRS_Empleados) { mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = null; lst_KRSS_Fichajes = null; mdl_KRS_AusenciasProgramadas = null; mdl_KRS_DiasFestivos = null; bol_TienePresenciaProgramada = false; //BUscar la Jornada Cabecera para ese dia ......................................................................................................................... //1º -> Por Presencias Programas mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde); //2º Por JornadaCabcera Directamente if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo == null) { mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde); } else { bol_TienePresenciaProgramada = true; } TimeSpan? obj_TimeSpan = null; if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { obj_TimeSpan = mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico; } //.................................................................................................................................................................. //Ver si el empleado tiene fecha de baja, y si es asi, que sea superior al afeha hasta, sino no se pone en el informe if (mdl_KRS_Empleados.fechaBaja == null || mdl_KRS_Empleados.fechaBaja.Value > dtt_FechaHasta_BusquedaFichaje) { //Obtener los fichajes lst_KRSS_Fichajes = g_obj_KRSS_Fichajes_Datos.Obtener_ModeloListado_Por_CodigoClienteEmpleadoFechaEmpresa(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, mdl_KRS_Empleados.id, dtt_FechaDesde_BusquedaFichaje, dtt_FechaHasta_BusquedaFichaje, _lng_idEmpresa); if (lst_KRSS_Fichajes != null) { foreach (KRSS_Fichajes mdl_KRSS_Fichajes in lst_KRSS_Fichajes.OrderBy(m => m.fechaHora).ToList()) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, obj_TimeSpan, mdl_KRSS_Fichajes.fechaHora, mdl_KRSS_Fichajes.entradaSalida, (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.marca : ""), (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.modelo : ""), (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.mac : ""), false, "" )); } } //Ver si hay que grabar un registro para ese dia else { //Si tuviera una presencia programada y no tiene fichajes if (bol_TienePresenciaProgramada && mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, "", "", "", "", true, "No hay fichajes" )); } //Ver si tiene una Ausencia Programada else { mdl_KRS_AusenciasProgramadas = g_obj_KRS_AusenciasProgramadas_Datos.Obtener_Modelo_Por_EmpleadoClienteFecha_SinHoras(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde,true); if (mdl_KRS_AusenciasProgramadas != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, "", "", "", "", true, "Ausencia programada: " + mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.descripcion )); } //Ver si tiene un dia festivo else { mdl_KRS_DiasFestivos = g_obj_KRS_DiasFestivos_Datos.Obtener_Modelo_Por_CodigoClienteFecha(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde); if (mdl_KRS_DiasFestivos != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, "", "", "", "", true, "Día festivo: " + mdl_KRS_DiasFestivos.descripcion )); } //Ver si tiene que tener una Jornada else { if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, "", "", "", "", true, "No hay fichajes" )); } } } } } } } //Enviar Email if (lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo != null && lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Count > 0) { if (Verificacion_Fichajes_Email.Enviar_DetalleFichaje(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, _mdl_TMP_Emails_Informes_PorFechas.fechaHasta)) { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } else { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } private void Informes_PorFechas_Semanal(TMP_Emails_Informes_PorFechas _mdl_TMP_Emails_Informes_PorFechas, List _lst_KRS_Empleados,long _lng_idEmpresa) { List lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo = new List(); DateTime dtt_FechaDesde_RangoFechas = _mdl_TMP_Emails_Informes_PorFechas.fechaDesde; DateTime dtt_FechaHasta_RangoFechas = _mdl_TMP_Emails_Informes_PorFechas.fechaHasta; INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = null; List lst_KRSS_Fichajes = null; KRS_AusenciasProgramadas mdl_KRS_AusenciasProgramadas = null; KRS_DiasFestivos mdl_KRS_DiasFestivos = null; TimeSpan? obj_tms_Nulo = null; DateTime dtt_FechaDesde_BusquedaFichaje = dtt_FechaDesde_RangoFechas; DateTime dtt_FechaHasta_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddHours(23).AddMinutes(59); bool bol_TienePresenciaProgramada = false; foreach (KRS_Empleados mdl_KRS_Empleados in _lst_KRS_Empleados) { dtt_FechaDesde_BusquedaFichaje = dtt_FechaDesde_RangoFechas; dtt_FechaHasta_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddHours(23).AddMinutes(59); for (int int_Contador = 0; int_Contador < 7; int_Contador++) { bol_TienePresenciaProgramada = false; mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = null; lst_KRSS_Fichajes = null; mdl_KRS_AusenciasProgramadas = null; mdl_KRS_DiasFestivos = null; //BUscar la Jornada Cabecera para ese dia ......................................................................................................................... //1º -> Por Presencias Programas mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje); //2º Por JornadaCabcera DIrectamente if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo == null) { mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje); } else { bol_TienePresenciaProgramada = true; } TimeSpan? obj_TimeSpan = null; if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { obj_TimeSpan = mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico; } //.................................................................................................................................................................. //Obtener los fichajes lst_KRSS_Fichajes = g_obj_KRSS_Fichajes_Datos.Obtener_ModeloListado_Por_CodigoClienteEmpleadoFechaEmpresa(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, mdl_KRS_Empleados.id, dtt_FechaDesde_BusquedaFichaje, dtt_FechaHasta_BusquedaFichaje, _lng_idEmpresa); if (lst_KRSS_Fichajes != null) { foreach (KRSS_Fichajes mdl_KRSS_Fichajes in lst_KRSS_Fichajes.OrderBy(m => m.fechaHora).ToList()) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, obj_TimeSpan, mdl_KRSS_Fichajes.fechaHora, mdl_KRSS_Fichajes.entradaSalida, (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.marca : ""), (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.modelo : ""), (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.mac : ""), false, "" )); } } //Ver si hay que grabar un registro para ese dia else { //Si tuviera una presencia programada y no tiene fichajes if (bol_TienePresenciaProgramada && mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "No hay fichajes" )); } //Ver si tiene una Ausencia Programada else { mdl_KRS_AusenciasProgramadas = g_obj_KRS_AusenciasProgramadas_Datos.Obtener_Modelo_Por_EmpleadoClienteFecha_SinHoras(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje,true); if (mdl_KRS_AusenciasProgramadas != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, null, dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "Ausencia programada: " + mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.descripcion )); } //Ver si tiene un dia festivo else { mdl_KRS_DiasFestivos = g_obj_KRS_DiasFestivos_Datos.Obtener_Modelo_Por_CodigoClienteFecha(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje); if (mdl_KRS_DiasFestivos != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, null, dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "Día festivo: " + mdl_KRS_DiasFestivos.descripcion )); } //Ver si tiene que tener una Jornada else { //Tiene Jornada pero no hay fichajes if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "No hay fichajes" )); } } } } } dtt_FechaDesde_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddDays(1); dtt_FechaHasta_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddHours(23).AddMinutes(59); } } //Enviar Email if (lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo != null && lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Count > 0) { if (Verificacion_Fichajes_Email.Enviar_DetalleFichaje(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, _mdl_TMP_Emails_Informes_PorFechas.fechaHasta)) { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } else { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } private void Informes_PorFechas_Mensual(TMP_Emails_Informes_PorFechas _mdl_TMP_Emails_Informes_PorFechas, List _lst_KRS_Empleados,long _lng_idEmpresa) { List lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo = new List(); DateTime dtt_FechaDesde_RangoFechas = _mdl_TMP_Emails_Informes_PorFechas.fechaDesde; DateTime dtt_FechaHasta_RangoFechas = _mdl_TMP_Emails_Informes_PorFechas.fechaHasta; INTERNO_Verificacion_JornadasCabecera_Modelo mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = null; List lst_KRSS_Fichajes = null; KRS_AusenciasProgramadas mdl_KRS_AusenciasProgramadas = null; KRS_DiasFestivos mdl_KRS_DiasFestivos = null; TimeSpan? obj_tms_Nulo = null; DateTime dtt_FechaDesde_BusquedaFichaje = dtt_FechaDesde_RangoFechas; DateTime dtt_FechaHasta_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddHours(23).AddMinutes(59); bool bol_TienePresenciaProgramada = false; foreach (KRS_Empleados mdl_KRS_Empleados in _lst_KRS_Empleados) { dtt_FechaDesde_BusquedaFichaje = dtt_FechaDesde_RangoFechas; dtt_FechaHasta_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddHours(23).AddMinutes(59); for (int int_Contador = 0; int_Contador < DateTime.DaysInMonth(dtt_FechaDesde_RangoFechas.Year, dtt_FechaDesde_RangoFechas.Month); int_Contador++) { bol_TienePresenciaProgramada = false; mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = null; lst_KRSS_Fichajes = null; mdl_KRS_AusenciasProgramadas = null; mdl_KRS_DiasFestivos = null; //BUscar la Jornada Cabecera para ese dia ......................................................................................................................... //1º -> Por Presencias Programas mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_PresenciasProgramadas_ParaVerificacion(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje); //2º Por JornadaCabcera DIrectamente if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo == null) { mdl_INTERNO_Verificacion_JornadasCabecera_Modelo = g_obj_KRS_JornadasCabecera_Datos.Obtener_JornadasCabecera_ParaVerificacion(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje); } else { bol_TienePresenciaProgramada = true; } TimeSpan? obj_TimeSpan = null; if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { obj_TimeSpan = mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico; } //.................................................................................................................................................................. //Obtener los fichajes lst_KRSS_Fichajes = g_obj_KRSS_Fichajes_Datos.Obtener_ModeloListado_Por_CodigoClienteEmpleadoFechaEmpresa(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, mdl_KRS_Empleados.id, dtt_FechaDesde_BusquedaFichaje, dtt_FechaHasta_BusquedaFichaje, _lng_idEmpresa); if (lst_KRSS_Fichajes != null) { foreach (KRSS_Fichajes mdl_KRSS_Fichajes in lst_KRSS_Fichajes.OrderBy(m => m.fechaHora).ToList()) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, obj_TimeSpan, mdl_KRSS_Fichajes.fechaHora, mdl_KRSS_Fichajes.entradaSalida, (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.marca : ""), (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.modelo : ""), (mdl_KRSS_Fichajes.KRSS_DispositivosModelo != null ? mdl_KRSS_Fichajes.KRSS_DispositivosModelo.mac : ""), false, "" )); } } //Ver si hay que grabar un registro para ese dia else { //Tiene JOrnada pero no hay fichajes if (bol_TienePresenciaProgramada && mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "No hay fichajes" )); } //Ver si tiene una Ausencia Programada else { mdl_KRS_AusenciasProgramadas = g_obj_KRS_AusenciasProgramadas_Datos.Obtener_Modelo_Por_EmpleadoClienteFecha_SinHoras(mdl_KRS_Empleados.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje,true); if (mdl_KRS_AusenciasProgramadas != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, null, dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "Ausencia programada: " + mdl_KRS_AusenciasProgramadas.KRS_AusenciasProgramadasTipos.descripcion )); } //Ver si tiene un dia festivo else { mdl_KRS_DiasFestivos = g_obj_KRS_DiasFestivos_Datos.Obtener_Modelo_Por_CodigoClienteFecha(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, dtt_FechaDesde_BusquedaFichaje); if (mdl_KRS_DiasFestivos != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, null, dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "Día festivo: " + mdl_KRS_DiasFestivos.descripcion )); } //Ver si tiene que tener una Jornada else { //Tiene JOrnada pero no hay fichajes if (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null) { lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Add(new INTERNO_KairosPRO_Detalle_Fichaje_Modelo(mdl_KRS_Empleados.id, mdl_KRS_Empleados.nombre, (mdl_INTERNO_Verificacion_JornadasCabecera_Modelo != null ? mdl_INTERNO_Verificacion_JornadasCabecera_Modelo.tiempoTeorico : obj_tms_Nulo), dtt_FechaDesde_BusquedaFichaje, "", "", "", "", true, "No hay fichajes" )); } } } } } dtt_FechaDesde_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddDays(1); dtt_FechaHasta_BusquedaFichaje = dtt_FechaDesde_BusquedaFichaje.AddHours(23).AddMinutes(59); } } //Enviar Email if (lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo != null && lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo.Count > 0) { if (Verificacion_Fichajes_Email.Enviar_DetalleFichaje(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, _mdl_TMP_Emails_Informes_PorFechas.fechaHasta)) { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } else { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } public void Informes_PorFechas_Mensual_TotalDispositivos(TMP_Emails_Informes_PorFechas _mdl_TMP_Emails_Informes_PorFechas,long _lng_idEmpresa) { List lst_INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos = new List(); DateTime dtt_FechaDesde_RangoFechas = _mdl_TMP_Emails_Informes_PorFechas.fechaDesde; DateTime dtt_FechaHasta_RangoFechas = _mdl_TMP_Emails_Informes_PorFechas.fechaHasta; //Obtener los fichajes lst_INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos = g_obj_KRSS_Fichajes_Datos.Obtener_Listado_Fichajes_Dispositivos(_mdl_TMP_Emails_Informes_PorFechas.codigoCliente, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, _mdl_TMP_Emails_Informes_PorFechas.fechaHasta, _lng_idEmpresa); //Enviar Email if (lst_INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos != null && lst_INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos.Count > 0) { if (Verificacion_Fichajes_Email.Enviar_Fichaje_TotalDispositivos(Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO_EXFERIA, lst_INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos, _mdl_TMP_Emails_Informes_PorFechas.fechaDesde, _mdl_TMP_Emails_Informes_PorFechas.fechaHasta, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente)) { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } else { //Se borra el registro de base de datos g_obj_TMP_Emails_Informes_PorFechas_Datos.Borrar(_mdl_TMP_Emails_Informes_PorFechas.id, _mdl_TMP_Emails_Informes_PorFechas.codigoCliente); } } public void Informes_PorFechas_Diario_RecordatorioFichaje(TMP_Emails_RecordatorioFichajes _mdl_TMP_Emails_RecordatorioFichajes) { //Obtener el Empleado KRS_Empleados mdl_KRS_Empleados = g_obj_KRS_Empleados_Datos.Obtener_Modelo_Por_Id(_mdl_TMP_Emails_RecordatorioFichajes.idEmpleado , _mdl_TMP_Emails_RecordatorioFichajes.codigoCliente,false,false); //Si no existe el empleado if (mdl_KRS_Empleados != null) { //si no tiene email if (mdl_KRS_Empleados.email.Trim().Length > 0) { if (Verificacion_Fichajes_Email.Enviar_Fichaje_Recordatorio(_mdl_TMP_Emails_RecordatorioFichajes.codigoCliente, _mdl_TMP_Emails_RecordatorioFichajes, mdl_KRS_Empleados.email)) { //se borra el registro de baso de datos g_obj_TMP_Emails_RecordatorioFichajes_Datos.Borrar(_mdl_TMP_Emails_RecordatorioFichajes.id, _mdl_TMP_Emails_RecordatorioFichajes.codigoCliente); } } else { //se crea un mensaje en el log indicando que el empleado no tiene correo con su idCliente por si hiciera falta Control_Errores.Errores_Log(Variables_KairosPRO.G_STR_TMP_RECORDATORIO_NOTIENEEMAIL(mdl_KRS_Empleados.nombre +"(" + (mdl_KRS_Empleados.id) + ")"), nameof(TMP_Emails_RecordatorioFichajes.codigoCliente) + ": " + _mdl_TMP_Emails_RecordatorioFichajes.codigoCliente.ToString()); //se borra el registro de baso de datos g_obj_TMP_Emails_RecordatorioFichajes_Datos.Borrar(_mdl_TMP_Emails_RecordatorioFichajes.id, _mdl_TMP_Emails_RecordatorioFichajes.codigoCliente); } } //Si no existe el empleado se borra ya que nunca se envia el correo else { //se borra el registro de baso de datos g_obj_TMP_Emails_RecordatorioFichajes_Datos.Borrar(_mdl_TMP_Emails_RecordatorioFichajes.id, _mdl_TMP_Emails_RecordatorioFichajes.codigoCliente); } } #endregion } }