215 lines
12 KiB
C#
215 lines
12 KiB
C#
using Exferia_Aplicacion.General;
|
|
using Exferia_Aplicacion.Modelos_Generales;
|
|
using Exferia_Aplicacion.Modelos_Informes;
|
|
using Exferia_KairosPRO._2_Datos;
|
|
using Exferia_KairosPRO_EF;
|
|
using Microsoft.Reporting.WinForms;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Reflection;
|
|
using System.Linq;
|
|
|
|
namespace Exferia_KairosPRO.General
|
|
{
|
|
public class Verificacion_Pausas_Email
|
|
{
|
|
public static bool Enviar_Pausa_Incidencia( long _lng_codigoCliente,
|
|
INTERNO_KairosPRO_PausaIncidencias_Modelo _mdl_INTERNO_KairosPRO_PausaIncidencias_Modelo,
|
|
KRS_Empleados _mdl_KRS_Empleados)
|
|
{
|
|
bool bol_TodoCorrecto = false;
|
|
ReportViewer obj_ReportViewer = null;
|
|
|
|
try
|
|
{
|
|
//Clases de Negocio necesarias
|
|
KRS_ValoresGenerales_Datos obj_KRS_ValoresGenerales_Datos = new KRS_ValoresGenerales_Datos();
|
|
KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
|
|
|
|
KRS_ValoresGenerales mdl_KRS_ValoresGenerales = obj_KRS_ValoresGenerales_Datos.Obtener_PorCliente(_lng_codigoCliente);
|
|
KRS_ConfiguracionesEmails mdl_KRS_ConfiguracionesEmails = null;
|
|
|
|
if (mdl_KRS_ValoresGenerales != null && mdl_KRS_ValoresGenerales.KRS_ConfiguracionesEmails != null)
|
|
{
|
|
mdl_KRS_ConfiguracionesEmails = mdl_KRS_ValoresGenerales.KRS_ConfiguracionesEmails;
|
|
}
|
|
|
|
if (mdl_KRS_ConfiguracionesEmails == null)
|
|
{
|
|
Control_Errores.Errores_Log("No encontro Configuracion para Emails, codigoCliente:" + _lng_codigoCliente, null, nameof(Verificacion_Pausas_Email) + "/" + nameof(Enviar_Pausa_Incidencia));
|
|
}
|
|
else
|
|
{
|
|
//Obtener los Emails
|
|
List<string> lst_KRS_Emails = Obtener_Listado_ParaVerificacionPausas(_lng_codigoCliente, Variables.G_MDL_INFORMES_KAIROSPRO_INCIDENCIASPAUSAS.Id, _mdl_KRS_Empleados);
|
|
|
|
if (lst_KRS_Emails != null && lst_KRS_Emails.Count > 0)
|
|
{
|
|
//Listado para guardar los emails
|
|
List<INTERNO_Email_Modelo> lst_INTERNO_Email_Modelo = new List<INTERNO_Email_Modelo>();
|
|
//Rellenar el modelo de emails
|
|
foreach (string str_Emails in lst_KRS_Emails)
|
|
{
|
|
INTERNO_Email_Modelo mdl_INTERNO_Email_Modelo = new INTERNO_Email_Modelo();
|
|
mdl_INTERNO_Email_Modelo.Email = str_Emails;
|
|
mdl_INTERNO_Email_Modelo.Oculto = false;
|
|
mdl_INTERNO_Email_Modelo.Copia = false;
|
|
|
|
lst_INTERNO_Email_Modelo.Add(mdl_INTERNO_Email_Modelo);
|
|
}
|
|
|
|
string str_AsuntoEmail = "Incidencia pausa día " + _mdl_INTERNO_KairosPRO_PausaIncidencias_Modelo.Dia.ToString("dd/MM/yyyy") + " " + _mdl_INTERNO_KairosPRO_PausaIncidencias_Modelo.Empleado_Nombre;
|
|
|
|
//Cargamos el ensamblado #########################################################################################################################################################################
|
|
Assembly m_assembly_1 = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_KAIROSPROINFORMES + ".dll");
|
|
//Obtenemos el tipo de la clase
|
|
Type m_type_1 = m_assembly_1.GetType("" + Variables.G_STR_LIBRERIA_KAIROSPROINFORMES + "." + Variables.G_STR_LIBRERIA_DATOSKAIROSPROINFORMES);
|
|
//creamos la instancia
|
|
var obj_Clase_1 = Activator.CreateInstance(m_type_1);
|
|
//Cargamos el metodo solicitado
|
|
MethodInfo obj_MethodInfo_1 = obj_Clase_1.GetType().GetMethod(Variables.G_STR_LIBRERIA_DATOSKAIROSPROINFORMES_PROCEDIMIENTO_CREARINFORMESPAUSAINCIDENCIA, BindingFlags.Instance | BindingFlags.NonPublic);
|
|
|
|
//Obtener valores
|
|
object[] arr_Parametros_1 = { _mdl_INTERNO_KairosPRO_PausaIncidencias_Modelo };
|
|
|
|
//Pasamos los parametros al metodo y lo ejecutamos
|
|
obj_ReportViewer = (ReportViewer)obj_MethodInfo_1.Invoke(obj_Clase_1, arr_Parametros_1);
|
|
//##################################################################################################################################################################################################
|
|
|
|
if (obj_ReportViewer != null)
|
|
{
|
|
//Transformar ReportViewer a byte[]
|
|
// Variables
|
|
Warning[] arr_Advertenias;
|
|
string[] arr_streamIds;
|
|
string str_mimeType = string.Empty;
|
|
string str_encoding = string.Empty;
|
|
string str_extension = string.Empty;
|
|
|
|
//ReportViever
|
|
byte[] bytes = obj_ReportViewer.LocalReport.Render("PDF", null, out str_mimeType, out str_encoding, out str_extension, out arr_streamIds, out arr_Advertenias);
|
|
|
|
INTERNO_EnvioEmail_Modelo mdl_INTERNO_EnvioEmail_Modelo = new INTERNO_EnvioEmail_Modelo();
|
|
mdl_INTERNO_EnvioEmail_Modelo.email = mdl_KRS_ConfiguracionesEmails.email;
|
|
mdl_INTERNO_EnvioEmail_Modelo.nombreAMostrar = mdl_KRS_ConfiguracionesEmails.nombreAMostrar != null ? mdl_KRS_ConfiguracionesEmails.nombreAMostrar : "";
|
|
mdl_INTERNO_EnvioEmail_Modelo.asunto = str_AsuntoEmail;
|
|
mdl_INTERNO_EnvioEmail_Modelo.cuerpo = "";
|
|
mdl_INTERNO_EnvioEmail_Modelo.smtp_Servidor = mdl_KRS_ConfiguracionesEmails.smtp_Servidor;
|
|
mdl_INTERNO_EnvioEmail_Modelo.smtp_Puerto = mdl_KRS_ConfiguracionesEmails.smtp_Puerto;
|
|
mdl_INTERNO_EnvioEmail_Modelo.smtp_Usuario = mdl_KRS_ConfiguracionesEmails.smtp_Usuario;
|
|
mdl_INTERNO_EnvioEmail_Modelo.smtp_Clave = mdl_KRS_ConfiguracionesEmails.smtp_Clave;
|
|
mdl_INTERNO_EnvioEmail_Modelo.smtp_ConexionSSL = mdl_KRS_ConfiguracionesEmails.smtp_ConexionSSL;
|
|
mdl_INTERNO_EnvioEmail_Modelo.emails_destino = lst_INTERNO_Email_Modelo;
|
|
|
|
//Ficheros
|
|
mdl_INTERNO_EnvioEmail_Modelo.ficheros = new List<INTERNO_EnvioEmail_Ficheros_Modelo>();
|
|
INTERNO_EnvioEmail_Ficheros_Modelo mdl_INTERNO_EnvioEmail_Ficheros_Modelo = new INTERNO_EnvioEmail_Ficheros_Modelo();
|
|
mdl_INTERNO_EnvioEmail_Ficheros_Modelo.fichero_PDF = bytes;
|
|
mdl_INTERNO_EnvioEmail_Ficheros_Modelo.nombreFichero_A_Enviar = "Incidencias_Pausa.pdf";
|
|
mdl_INTERNO_EnvioEmail_Modelo.ficheros.Add(mdl_INTERNO_EnvioEmail_Ficheros_Modelo);
|
|
|
|
INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
|
|
mdl_ValorDevuelto_Modelo.TodoCorrecto = true;
|
|
|
|
mdl_ValorDevuelto_Modelo = Funciones.Email_Enviar(mdl_INTERNO_EnvioEmail_Modelo);
|
|
|
|
bol_TodoCorrecto = mdl_ValorDevuelto_Modelo.TodoCorrecto;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Se borrar el registro como que fue enviado, porque significa que no tiene email selecionados, por lo tanto no quieren que se envie
|
|
bol_TodoCorrecto = true;
|
|
}
|
|
}
|
|
}
|
|
catch (Control_Errores)
|
|
{ }
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas_Email) + "/" + nameof(Enviar_Pausa_Incidencia));
|
|
}
|
|
finally
|
|
{
|
|
if (obj_ReportViewer != null)
|
|
{
|
|
obj_ReportViewer.Dispose();
|
|
}
|
|
}
|
|
|
|
return bol_TodoCorrecto;
|
|
}
|
|
|
|
private static List<string> Obtener_Listado_ParaVerificacionPausas(long _lng_CodigoCliente, long _lng_idInformeTipo, KRS_Empleados _mdl_KRS_Empleados)
|
|
{
|
|
List<KRS_Emails> lst_Emails_ConEmail;
|
|
List<KRS_Emails> lst_Emails_ConParametros;
|
|
|
|
List<string> lst_Emails = new List<string>();
|
|
try
|
|
{
|
|
KRS_Emails_Datos obj_KRS_Emails_Datos = new KRS_Emails_Datos();
|
|
|
|
//Listado de Emails, con Emails
|
|
lst_Emails_ConEmail = obj_KRS_Emails_Datos.Obtener_ModeloListado_Por_InformeTipo_Email(_lng_CodigoCliente, _lng_idInformeTipo);
|
|
|
|
//Ahora los recorremos y vamos metiendo los emails en el listado
|
|
if (lst_Emails_ConEmail != null && lst_Emails_ConEmail.Count > 0)
|
|
{
|
|
foreach (KRS_Emails mdl_KRS_Email in lst_Emails_ConEmail)
|
|
{
|
|
lst_Emails.Add(mdl_KRS_Email.email);
|
|
}
|
|
}
|
|
|
|
//Solo Buscaremos los parametros si el empleado no es Nulo
|
|
if (_mdl_KRS_Empleados != null)
|
|
{
|
|
//Listado de Emails, con parametros
|
|
lst_Emails_ConParametros = obj_KRS_Emails_Datos.Obtener_ModeloListado_Por_InformeTipo_Parametros(_lng_CodigoCliente, _lng_idInformeTipo);
|
|
|
|
if (lst_Emails_ConParametros != null)
|
|
{
|
|
|
|
foreach (KRS_Emails mdl_KRS_Email_Parametro in lst_Emails_ConParametros)
|
|
{
|
|
//Obtenemos todos los parametros
|
|
string[] arr_Parametros = mdl_KRS_Email_Parametro.parametrosParaBuscarEmail.Split('|');
|
|
|
|
foreach (string str_Parametro in arr_Parametros)
|
|
{
|
|
if (str_Parametro.Equals(Variables.G_MDL_PARAMETRO_EMAIL_DEPARTAMENTO.Codigo))
|
|
{
|
|
//Vamos a buscar los Emails relacionados con el Departamento
|
|
if (_mdl_KRS_Empleados.KRS_Departamentos != null && _mdl_KRS_Empleados.KRS_Departamentos.fechaBorrado == null)
|
|
{
|
|
if (_mdl_KRS_Empleados.KRS_Departamentos.KRS_DepartamentosEmails != null && _mdl_KRS_Empleados.KRS_Departamentos.KRS_DepartamentosEmails.Count > 0)
|
|
{
|
|
foreach (KRS_DepartamentosEmails mdl_KRS_DepartamentosEmails in _mdl_KRS_Empleados.KRS_Departamentos.KRS_DepartamentosEmails)
|
|
{
|
|
lst_Emails.Add(mdl_KRS_DepartamentosEmails.email);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
lst_Emails = lst_Emails.Distinct().ToList();
|
|
}
|
|
}
|
|
catch (Control_Errores)
|
|
{
|
|
throw;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(Verificacion_Pausas_Email) + "/" + nameof(Obtener_Listado_ParaVerificacionPausas));
|
|
}
|
|
|
|
return lst_Emails;
|
|
}
|
|
}
|
|
}
|