/// <summary> /// Envia un correo a la lista de notificación enviada como parámetro. /// El contenido del correo depende del estatus de la bitácoa. /// </summary> /// <param name="lista">Lista a enviar</param> /// <param name="bitacora">Bitácora que se procesó</param> private void EnviarCorreoALista(ListaNotificacion lista, BitacoraVersionDocumento bitacora, DocumentoInstanciaXbrlDto documentoInstancia) { var empresa = DocumentoInstanciaRepository.ObtenerEmpresaDeDocumento(bitacora.IdDocumentoInstancia); var cuerpoCorreo = ""; if (bitacora.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO) { cuerpoCorreo = TemplateMail.ObtenerContenidoTemplateHtml(TemplateMailExito); } else if (bitacora.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_ERROR) { cuerpoCorreo = TemplateMail.ObtenerContenidoTemplateHtml(TemplateMailError); } var destinatarios = new StringBuilder(); foreach (var destinatario in lista.DestinatarioNotificacion) { if (destinatarios.Length > 0) { destinatarios.Append(","); } destinatarios.Append(destinatario.CorreoElectronico); } try { LogUtil.Info("Enviando correo a lista de distribución:" + lista.ClaveLista); MailUtil.EnviarEmail(destinatarios.ToString(), lista.TituloMensaje, String.Format(cuerpoCorreo, documentoInstancia.Titulo ?? "null", empresa != null?empresa.NombreCorto:"")); } catch (Exception ex) { LogUtil.Error("Falló el envío de correo por el host:" + MailUtil.S_HOST); LogUtil.Error(ex); } }
/// <summary> /// Envía el correo de notificación a la lista de distribución: /// En caso de procesamiento existoso, a la lista de distribución para un procesamiento exitoso /// En caso de un procesamiento no existoso a la lista de distribución para un procesamiento no exitoso /// Estas listas están dadas por parámetros de configuración generales /// </summary> /// <param name="bitacora">Objeto de bitácora actualmente procesado</param> private void NotificarAListaDeDistribucion(BitacoraVersionDocumento bitacora, DocumentoInstanciaXbrlDto documentoInstancia) { ParametroSistema paramLista = null; if (bitacora.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO) { paramLista = ParametroSistemaRepository.GetQueryable(x => x.Nombre.Equals(ConstantsParametrosSistema.CLAVE_PARAM_LISTA_DIST_EXITO_XBRL)).FirstOrDefault(); } else if (bitacora.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_ERROR) { paramLista = ParametroSistemaRepository.GetQueryable(x => x.Nombre.Equals(ConstantsParametrosSistema.CLAVE_PARAM_LISTA_DIST_ERROR_XBRL)).FirstOrDefault(); } if (paramLista != null) { var lista = ListaNotificacionRepository.ObtenerListaNotificacionCompletaPorClave(paramLista.Valor); if (lista != null) { EnviarCorreoALista(lista, bitacora, documentoInstancia); } } }
/// <summary> /// Crea u obtiene la bitácora de distribución de documentos de una distribución en específico /// </summary> /// <param name="dist">Distribución actualmente ejecutada</param> /// <param name="idBitacoraVersionDocumento">Identificador de la bitácora del documento</param> /// <returns>Bitácora de distribución que corresponde a la distribución actual y al documento</returns> private BitacoraDistribucionDocumento ObtenerOCrearBitacoraDistribucionExitosa(IDistribucionDocumentoXBRL dist, BitacoraVersionDocumento bitacoraVersionDocumento) { var bitacora = BitacoraDistribucionDocumentoRepository.GetQueryable(). Where(x => x.IdBitacoraVersionDocumento == bitacoraVersionDocumento.IdBitacoraVersionDocumento && x.CveDistribucion.Equals(dist.ClaveDistribucion) && x.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO).FirstOrDefault(); if (bitacora == null) { //crear bitácora bitacora = new BitacoraDistribucionDocumento() { CveDistribucion = dist.ClaveDistribucion, Estatus = DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_PENDIENTE, FechaRegistro = DateTime.Now, FechaUltimaModificacion = DateTime.Now }; } return(bitacora); }