244 lines
16 KiB
C#
244 lines
16 KiB
C#
using Exferia_Aplicacion.General;
|
|
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_DetalleFichaje_PorFecha
|
|
{
|
|
#region Variables privadas
|
|
private TMP_Emails_Informes_PorFechas_Datos g_obj_TMP_Emails_Informes_PorFechas_Datos = new TMP_Emails_Informes_PorFechas_Datos();
|
|
private long g_lng_CodigoCliente =-1;
|
|
private DateTime g_dtt_Validacion ;
|
|
private bool g_bol_Grabar_Diccionarios_XML = false;
|
|
#endregion
|
|
|
|
public void Proceso(long _lng_CodigoCliente, DateTime _dtt_Validacion, bool _bol_Grabar_Diccionarios_XML)
|
|
{
|
|
try
|
|
{
|
|
g_lng_CodigoCliente = _lng_CodigoCliente;
|
|
g_dtt_Validacion= _dtt_Validacion;
|
|
g_bol_Grabar_Diccionarios_XML = _bol_Grabar_Diccionarios_XML;
|
|
|
|
//Si estuviera a nulo el diccionario
|
|
if (Variables_KairosPRO.G_DCT_DETALLEFICHAJEYAVALIDADOS == null)
|
|
{
|
|
Variables_KairosPRO.G_DCT_DETALLEFICHAJEYAVALIDADOS.Add(g_lng_CodigoCliente, new List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo>());
|
|
}
|
|
//Si tuviera valores pero no para este cliente
|
|
else if (!Variables_KairosPRO.G_DCT_DETALLEFICHAJEYAVALIDADOS.ContainsKey(g_lng_CodigoCliente))
|
|
{
|
|
Variables_KairosPRO.G_DCT_DETALLEFICHAJEYAVALIDADOS.Add(g_lng_CodigoCliente,new List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo>());
|
|
}
|
|
|
|
//Empezar a validar los dias que tengo que enviar los informes .................................................................................................................
|
|
DateTime dtt_Fecha_SinHoras = new DateTime(_dtt_Validacion.Year, _dtt_Validacion.Month, _dtt_Validacion.Day);
|
|
|
|
List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo> lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo = Variables_KairosPRO.G_DCT_DETALLEFICHAJEYAVALIDADOS[_lng_CodigoCliente];
|
|
|
|
//Para el Informe Diario, tiene que ser todos los dias, despues de las 12 de la noche, (00:00)
|
|
if (_dtt_Validacion.Hour >= 00)
|
|
{
|
|
Diario(dtt_Fecha_SinHoras.AddDays(-1), lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo);
|
|
}
|
|
|
|
//Para el Informe Semanal, tiene que ser todos lunes, despues de las 12 de la noche, (00:00)
|
|
if (_dtt_Validacion.DayOfWeek == DayOfWeek.Monday && _dtt_Validacion.Hour >= 00)
|
|
{
|
|
Semanal(dtt_Fecha_SinHoras, lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo);
|
|
}
|
|
|
|
//Para el Informe Mensual, tiene que ser todos dia 1, despues de las 12 de la noche, (00:00)
|
|
if (_dtt_Validacion.Day == 1 && _dtt_Validacion.Hour >= 00)
|
|
{
|
|
Mensual(dtt_Fecha_SinHoras, lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo);
|
|
}
|
|
|
|
//Para el Informe Mensual de Total Dispositivos, tiene que ser 2 dias antes del fin del mes, despues de las 12 de la noche (00:00)
|
|
if(_dtt_Validacion.Day == (DateTime.DaysInMonth(_dtt_Validacion.Year, _dtt_Validacion.Month)-2) && _dtt_Validacion.Hour >= 00)
|
|
{
|
|
Mensual_TotalDispositivos_2DiasAntes(dtt_Fecha_SinHoras, lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo);
|
|
}
|
|
|
|
//Para el Informe Mensual de Total Dispositivos, tiene que ser todos los dias 1, despues de las 12 de la noche (00:00)
|
|
if (_dtt_Validacion.Day == 1 && _dtt_Validacion.Hour >= 00)
|
|
{
|
|
Mensual_TotalDispositivos(dtt_Fecha_SinHoras, lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo);
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_DetalleFichaje_PorFecha) + "/" + nameof(Proceso));
|
|
}
|
|
}
|
|
|
|
private void Diario(DateTime _dtt_Fecha_SinHoras, List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo> _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo)
|
|
{
|
|
try
|
|
{
|
|
INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_DIARIO = null;
|
|
if (_lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo != null && _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Count > 0)
|
|
{
|
|
mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_DIARIO = _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Where(m => m.IdInformeTipo.Equals(Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_DIARIO.Id) && m.Fecha.Equals(_dtt_Fecha_SinHoras)).FirstOrDefault();
|
|
}
|
|
|
|
//Si esta a nulo, se tiene que enviar el informe del Diario
|
|
if (mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_DIARIO == null)
|
|
{
|
|
//Agregar para Enviar por Email
|
|
TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas = new TMP_Emails_Informes_PorFechas();
|
|
mdl_TMP_Emails_Informes_PorFechas.codigoCliente = g_lng_CodigoCliente;
|
|
mdl_TMP_Emails_Informes_PorFechas.idInformeTipo = Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_DIARIO.Id;
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaDesde = _dtt_Fecha_SinHoras;
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaHasta = _dtt_Fecha_SinHoras.AddHours(23).AddMinutes(59);
|
|
|
|
g_obj_TMP_Emails_Informes_PorFechas_Datos.Insertar(mdl_TMP_Emails_Informes_PorFechas);
|
|
|
|
//Se agrega en el Diccionario para no volver a utilizarr este dia
|
|
Verificacion_Fichajes_Diccionarios.Actualizar_Diccionario_Informes_PorFechas(g_lng_CodigoCliente, _dtt_Fecha_SinHoras, Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_DIARIO.Id, g_bol_Grabar_Diccionarios_XML);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_DetalleFichaje_PorFecha) + "/" + nameof(Diario));
|
|
}
|
|
}
|
|
|
|
private void Semanal(DateTime _dtt_Fecha_SinHoras, List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo> _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo)
|
|
{
|
|
try
|
|
{
|
|
INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_SEMANAL = null;
|
|
if (_lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo != null && _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Count > 0)
|
|
{
|
|
mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_SEMANAL = _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Where(m => m.IdInformeTipo.Equals(Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_SEMANAL.Id) && m.Fecha.Equals(_dtt_Fecha_SinHoras)).FirstOrDefault();
|
|
}
|
|
|
|
//Si esta a nulo, se tiene que enviar el informe del Semanal
|
|
if (mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_SEMANAL == null)
|
|
{
|
|
//Agregar para Enviar por Email
|
|
TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas = new TMP_Emails_Informes_PorFechas();
|
|
mdl_TMP_Emails_Informes_PorFechas.codigoCliente = g_lng_CodigoCliente;
|
|
mdl_TMP_Emails_Informes_PorFechas.idInformeTipo = Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_SEMANAL.Id;
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaDesde = _dtt_Fecha_SinHoras.AddDays(-7);
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaHasta = _dtt_Fecha_SinHoras.AddMinutes(-1);
|
|
|
|
g_obj_TMP_Emails_Informes_PorFechas_Datos.Insertar(mdl_TMP_Emails_Informes_PorFechas);
|
|
|
|
//Se agrega en el Diccionario para no volver a utilizarr este dia
|
|
Verificacion_Fichajes_Diccionarios.Actualizar_Diccionario_Informes_PorFechas(g_lng_CodigoCliente, _dtt_Fecha_SinHoras, Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_SEMANAL.Id, g_bol_Grabar_Diccionarios_XML);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_DetalleFichaje_PorFecha) + "/" + nameof(Semanal));
|
|
}
|
|
}
|
|
|
|
private void Mensual(DateTime _dtt_Fecha_SinHoras, List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo> _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo)
|
|
{
|
|
try
|
|
{
|
|
INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL = null;
|
|
if (_lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo != null && _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Count > 0)
|
|
{
|
|
mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL = _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Where(m => m.IdInformeTipo.Equals(Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_MENSUAL.Id) && m.Fecha.Equals(_dtt_Fecha_SinHoras)).FirstOrDefault();
|
|
}
|
|
|
|
//Si esta a nulo, se tiene que enviar el informe del Diario
|
|
if (mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL == null)
|
|
{
|
|
//Agregar para Enviar por Email
|
|
TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas = new TMP_Emails_Informes_PorFechas();
|
|
mdl_TMP_Emails_Informes_PorFechas.codigoCliente = g_lng_CodigoCliente;
|
|
mdl_TMP_Emails_Informes_PorFechas.idInformeTipo = Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_MENSUAL.Id;
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaDesde = _dtt_Fecha_SinHoras.AddMonths(-1);
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaHasta = _dtt_Fecha_SinHoras.AddMinutes(-1);
|
|
|
|
g_obj_TMP_Emails_Informes_PorFechas_Datos.Insertar(mdl_TMP_Emails_Informes_PorFechas);
|
|
|
|
//Se agrega en el Diccionario para no volver a utilizar este dia
|
|
Verificacion_Fichajes_Diccionarios.Actualizar_Diccionario_Informes_PorFechas(g_lng_CodigoCliente, _dtt_Fecha_SinHoras, Variables.G_MDL_INFORMES_KAIROSPRO_DETALLEFICHAJE_MENSUAL.Id, g_bol_Grabar_Diccionarios_XML);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_DetalleFichaje_PorFecha) + "/" + nameof(Mensual));
|
|
}
|
|
}
|
|
|
|
private void Mensual_TotalDispositivos(DateTime _dtt_Fecha_SinHoras, List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo> _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo)
|
|
{
|
|
try
|
|
{
|
|
INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL_DISPOSITIVOS = null;
|
|
if(_lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo != null && _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Count > 0)
|
|
{
|
|
mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL_DISPOSITIVOS = _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Where(m => m.IdInformeTipo.Equals(Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUAL_TOTALDISPOSITIVOS.Id) && m.Fecha.Equals(_dtt_Fecha_SinHoras)).FirstOrDefault();
|
|
}
|
|
|
|
//Si no esta nulo, se tiene que enviar el informe del Diario
|
|
if(mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL_DISPOSITIVOS == null)
|
|
{
|
|
//Agregar para Enviar por Email
|
|
TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas = new TMP_Emails_Informes_PorFechas();
|
|
mdl_TMP_Emails_Informes_PorFechas.codigoCliente = g_lng_CodigoCliente;
|
|
mdl_TMP_Emails_Informes_PorFechas.idInformeTipo = Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUAL_TOTALDISPOSITIVOS.Id;
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaDesde = _dtt_Fecha_SinHoras.AddMonths(-1);
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaHasta = _dtt_Fecha_SinHoras.AddMinutes(-1);
|
|
|
|
g_obj_TMP_Emails_Informes_PorFechas_Datos.Insertar(mdl_TMP_Emails_Informes_PorFechas);
|
|
|
|
//Se agrega en el Diccionario para no volver a utilizar este dia
|
|
Verificacion_Fichajes_Diccionarios.Actualizar_Diccionario_Informes_PorFechas(g_lng_CodigoCliente, _dtt_Fecha_SinHoras, Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUAL_TOTALDISPOSITIVOS.Id, g_bol_Grabar_Diccionarios_XML);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_DetalleFichaje_PorFecha) + "/" + nameof(Mensual_TotalDispositivos));
|
|
}
|
|
}
|
|
|
|
private void Mensual_TotalDispositivos_2DiasAntes(DateTime _dtt_Fecha_SinHoras, List<INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo> _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo)
|
|
{
|
|
try
|
|
{
|
|
INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL_DISPOSITIVOS = null;
|
|
if (_lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo != null && _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Count > 0)
|
|
{
|
|
mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL_DISPOSITIVOS = _lst_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo.Where(m => m.IdInformeTipo.Equals(Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUALDOSDIASANTES_TOTALDISPOSITIVOS.Id) && m.Fecha.Equals(_dtt_Fecha_SinHoras)).FirstOrDefault();
|
|
}
|
|
|
|
//Si no esta nulo, se tiene que enviar el informe del Diario
|
|
if (mdl_INTERNO_VerificacionFichajes_InformeDetalleFichaje_Validado_Modelo_MENSUAL_DISPOSITIVOS == null)
|
|
{
|
|
//Agregar para Enviar por Email
|
|
TMP_Emails_Informes_PorFechas mdl_TMP_Emails_Informes_PorFechas = new TMP_Emails_Informes_PorFechas();
|
|
mdl_TMP_Emails_Informes_PorFechas.codigoCliente = g_lng_CodigoCliente;
|
|
mdl_TMP_Emails_Informes_PorFechas.idInformeTipo = Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUAL_TOTALDISPOSITIVOS.Id;
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaDesde = _dtt_Fecha_SinHoras.AddMonths(-1);
|
|
mdl_TMP_Emails_Informes_PorFechas.fechaHasta = _dtt_Fecha_SinHoras.AddMinutes(-1);
|
|
|
|
g_obj_TMP_Emails_Informes_PorFechas_Datos.Insertar(mdl_TMP_Emails_Informes_PorFechas);
|
|
|
|
//Se agrega en el Diccionario para no volver a utilizar este dia
|
|
Verificacion_Fichajes_Diccionarios.Actualizar_Diccionario_Informes_PorFechas(g_lng_CodigoCliente, _dtt_Fecha_SinHoras, Variables.G_MDL_INFORMES_KAIROSPRO_FICHAJE_MENSUALDOSDIASANTES_TOTALDISPOSITIVOS.Id, g_bol_Grabar_Diccionarios_XML);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_DetalleFichaje_PorFecha) + "/" + nameof(Mensual_TotalDispositivos_2DiasAntes));
|
|
}
|
|
}
|
|
}
|
|
}
|