Exferia/Exferia_KairosPro/Exferia_KairosPRO/General/Verificacion_DetalleFichaje...

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));
}
}
}
}