989 lines
81 KiB
C#
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
|
|
}
|
|
}
|