Exferia/Exferia_KairosPro/Exferia_KairosPRO/General/Verificacion_Fichaje_EnvioE...

989 lines
81 KiB
C#

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<TMP_Emails_FichajesIncidencias> 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<INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo> lst_INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo = new List<INTERNO_KairosPRO_FichajeIncidencias_Jornada_Modelo>();
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<KRS_JornadasLinea> 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<KRS_JornadasLinea> 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<KRS_JornadasLinea> 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<long> 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<TMP_Emails_Informes_PorFechas> 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<KRS_Empleados> 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<TMP_Emails_Informes_PorFechas> 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<KRS_Empleados> 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<TMP_Emails_Informes_PorFechas> 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<KRS_Empleados> 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<TMP_Emails_Informes_PorFechas> 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<KRS_Empleados> 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<TMP_Emails_RecordatorioFichajes> 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<KRS_Empleados> _lst_KRS_Empleados,long _lng_idEmpresa)
{
List<INTERNO_KairosPRO_Detalle_Fichaje_Modelo> lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo = new List<INTERNO_KairosPRO_Detalle_Fichaje_Modelo>();
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<KRSS_Fichajes> 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<KRS_Empleados> _lst_KRS_Empleados,long _lng_idEmpresa)
{
List<INTERNO_KairosPRO_Detalle_Fichaje_Modelo> lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo = new List<INTERNO_KairosPRO_Detalle_Fichaje_Modelo>();
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<KRSS_Fichajes> 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<KRS_Empleados> _lst_KRS_Empleados,long _lng_idEmpresa)
{
List<INTERNO_KairosPRO_Detalle_Fichaje_Modelo> lst_INTERNO_KairosPRO_Detalle_Fichaje_Modelo = new List<INTERNO_KairosPRO_Detalle_Fichaje_Modelo>();
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<KRSS_Fichajes> 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<INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos_Modelo> lst_INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos = new List<INTERNO_KairosPRO_Fichaje_PorFechas_TotalDispositivos_Modelo>();
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
}
}