public void EnviarNotificacion(string tipoNotificacion, string descripcionTipo, string asunto, string nombreDestinatario, string correoDestinatario, string textoAdicional = null) { var asuntoConcatenado = string.Empty; ParametrosNotificacion datos = new ParametrosNotificacion(); datos.TipoNotificacion = tipoNotificacion; datos.variables = new Dictionary <string, string>(); PlantillaNotificacionRequest filtro = new PlantillaNotificacionRequest(); filtro.CodigoSistema = ConfigurationManager.AppSettings["CODIGO_SISTEMA"].ToString(); filtro.CodigoTipoNotificacion = datos.TipoNotificacion; var datosPlantilla = plantillaNotificacionService.BuscarPlantillaNotificacion(filtro).Result.FirstOrDefault(); if (datosPlantilla != null) { var profile = politicaService.ListaCuentaNotificacionSGC(null, "3").Result.FirstOrDefault(); datos.profileCorreo = (profile != null ? profile.Valor.ToString() : ""); var urlSistema = politicaService.ListaUrlSistemas(null, "3").Result.FirstOrDefault().Valor.ToString(); urlSistema = string.Format("{0}{1}{2}{3}{4}{5}{6}", "<a href='", urlSistema, DatosConstantes.UrlOpcionesSistema.RutaConsulta, "'>", urlSistema, DatosConstantes.UrlOpcionesSistema.RutaConsulta, "</a>"); if (tipoNotificacion == DatosConstantes.TipoNotificacion.RespuestaConsultas) { asuntoConcatenado = datosPlantilla.Asunto; datos.variables.Add("@para", nombreDestinatario); datos.variables.Add("@asunto_consulta", asunto); datos.variables.Add("@url_opcion_sistema", urlSistema); datos.textoNotificar = datosPlantilla.Contenido; } else { asuntoConcatenado = datosPlantilla.Asunto + " " + asunto; datos.variables.Add("@para", nombreDestinatario); datos.variables.Add("@tipo_consulta", descripcionTipo); datos.variables.Add("@url_opcion_sistema", urlSistema); datos.textoNotificar = datosPlantilla.Contenido; } foreach (var item in datos.variables) { datos.textoNotificar = datos.textoNotificar.Replace(item.Key, item.Value); } } consultaLogicRepository.NotificarConsulta(asuntoConcatenado, datos.textoNotificar, correoDestinatario, null, datos.profileCorreo); }
public void enviarCorreo(int IdPeticion, string AppPath) { ParametrosNotificacion objParametrosNotificacion = new ParametrosNotificacion(); ErrorProcedimientoAlmacenado objErrorProcedimientoAlmacenado = new ErrorProcedimientoAlmacenado(); NotificacionesRdn objConsultaNotificacionesRdn = new NotificacionesRdn(); Boolean RespuestaEnvio = false; objParametrosNotificacion.IdPeticion = IdPeticion; var Notificaciones = objConsultaNotificacionesRdn.Obtener_NotificacionesRdn(objParametrosNotificacion, objErrorProcedimientoAlmacenado).ToList(); foreach (pa_PeticionesWeb_Notificaciones_Obtener_Notificaciones_Result notificacion in Notificaciones) { //Obtiene los datos para el correo string asuntoNotificacion = obtAsuntoNotificacion(notificacion, AppPath); string contenidoNotificacion = obtContenidoNotificacion(notificacion, AppPath); string destinatario = string.IsNullOrEmpty(notificacion.Destinatario) ? string.Empty : notificacion.Destinatario.ToString(); List <string> Adjuntos = new List <string>(); //Envía el correo Correo objCorreo = new Correo(); string msgError = string.Empty; if (asuntoNotificacion == string.Empty || contenidoNotificacion == string.Empty || destinatario == string.Empty) { msgError = "No existe asunto, contenido o destinatario"; } if (msgError == string.Empty) { RespuestaEnvio = objCorreo.enviarCorreo(asuntoNotificacion, contenidoNotificacion, true, destinatario, string.Empty, Adjuntos, out msgError); } //Guarda en la base de datos lo que se envió clsDetallePeticionNotificacion objDetalleNotificacion = new clsDetallePeticionNotificacion(); objDetalleNotificacion.IdPeticion = IdPeticion; objDetalleNotificacion.IdNotificacion = notificacion.IdNotificacion; objDetalleNotificacion.Remitente = ConfigurationManager.AppSettings["MailAccountSender"].ToString(); objDetalleNotificacion.Destinatario = notificacion.Destinatario; objDetalleNotificacion.ConCopiaA = string.Empty; objDetalleNotificacion.Asunto = asuntoNotificacion; objDetalleNotificacion.EstatusEnvio = RespuestaEnvio; objDetalleNotificacion.ComentariosEnvio = msgError; objDetalleNotificacion.Fecha = DateTime.Now; ErrorProcedimientoAlmacenado objErrProcAlma = new ErrorProcedimientoAlmacenado(); NotificacionesRdn objRegistraNotificacionesRdn = new NotificacionesRdn(); int RespuestaInsert; RespuestaInsert = objRegistraNotificacionesRdn.Insertar_NotificacionRdn(objDetalleNotificacion, objErrProcAlma); } }
public List <pa_PeticionesWeb_Notificaciones_Obtener_Notificaciones_Result> Obtener_NotificacionesRdn(ParametrosNotificacion ParametrosEntrada, ErrorProcedimientoAlmacenado ParametrosError) { Procesos.Modulos.Notificaciones.Notificaciones objNotificacionesP = new Procesos.Modulos.Notificaciones.Notificaciones(); List <pa_PeticionesWeb_Notificaciones_Obtener_Notificaciones_Result> Notificaciones = new List <pa_PeticionesWeb_Notificaciones_Obtener_Notificaciones_Result>(); try { Notificaciones = objNotificacionesP.Obtener_NotificacionesP(ParametrosEntrada, ParametrosError); } catch (Exception) { #region Manejo de la excepcion throw; #endregion } return(Notificaciones); }
/// <summary> /// Reenvia Consulta /// </summary> /// <param name="data"></param> /// <returns>Indicador con el resultado de la operación</returns> public ProcessResult <ConsultaRequest> ReenviarConsulta(ConsultaRequest data) { ProcessResult <ConsultaRequest> resultado = new ProcessResult <ConsultaRequest>(); try { ConsultaEntity entidad = ConsultaAdapter.ObtenerConsultaEntity(data); entidad.EstadoConsulta = DatosConstantes.EstadoConsulta.Enviado; entidad.FechaEnvio = DateTime.Now; //Obtenemos la consulta original var entidadSincronizar = consultaEntityRepository.GetById(new Guid(data.CodigoConsultaRelacionado)); entidad.Asunto = "RE: " + entidadSincronizar.Asunto; var nombreRemitenteOriginal = trabajadorService.BuscarTrabajador(new TrabajadorRequest() { CodigoTrabajador = entidadSincronizar.CodigoRemitente }).Result.FirstOrDefault().NombreCompleto; entidad.Contenido = data.Adicional + "</br></br> Enviado por " + nombreRemitenteOriginal + " el " + entidadSincronizar.FechaEnvio.Value.ToString("dd/M/yyyy") + ":</br></br>" + entidadSincronizar.Contenido; entidad.Tipo = entidadSincronizar.Tipo; entidad.CodigoDestinatario = new Guid(data.CodigoDestinatario); entidad.CodigoRemitente = new Guid(data.CodigoRemitente); entidad.CodigoUnidadOperativa = entidadSincronizar.CodigoUnidadOperativa; entidad.CodigoArea = entidadSincronizar.CodigoArea; entidad.CodigoConsultaRelacionado = new Guid(data.CodigoConsultaRelacionado); entidad.CodigoConsultaOriginal = (entidadSincronizar.CodigoConsultaOriginal == null ? entidadSincronizar.CodigoConsulta : entidadSincronizar.CodigoConsultaOriginal); entidad.VistoRemitenteOriginal = true; consultaEntityRepository.Insertar(entidad); consultaEntityRepository.GuardarCambios(); //Cambiamos el estado en la consulta original a reenviado entidadSincronizar.EstadoConsulta = DatosConstantes.EstadoConsulta.Reenviado; consultaEntityRepository.Editar(entidadSincronizar); consultaEntityRepository.GuardarCambios(); //Enviar Correo ParametrosNotificacion datos = new ParametrosNotificacion(); datos.TipoNotificacion = DatosConstantes.TipoNotificacion.RegistroConsultas; datos.variables = new Dictionary <string, string>(); PlantillaNotificacionRequest filtro = new PlantillaNotificacionRequest(); filtro.CodigoSistema = ConfigurationManager.AppSettings["CODIGO_SISTEMA"].ToString(); filtro.CodigoTipoNotificacion = datos.TipoNotificacion; var datosPlantilla = plantillaNotificacionService.BuscarPlantillaNotificacion(filtro).Result.FirstOrDefault(); if (datosPlantilla != null) { var profile = politicaService.ListaCuentaNotificacionSGC(null, "3").Result.FirstOrDefault(); datos.profileCorreo = (profile != null ? profile.Valor.ToString() : ""); var urlSistema = politicaService.ListaUrlSistemas(null, "3").Result.FirstOrDefault().Valor.ToString(); urlSistema = string.Format("{0}{1}{2}{3}{4}{5}{6}", "<a href='", urlSistema, DatosConstantes.UrlOpcionesSistema.RutaConsulta, "'>", urlSistema, DatosConstantes.UrlOpcionesSistema.RutaConsulta, "</a>"); var destinatario = trabajadorService.BuscarTrabajador(new TrabajadorRequest() { CodigoTrabajador = entidad.CodigoDestinatario }).Result.FirstOrDefault(); datos.variables.Add("@para", destinatario.NombreCompleto); datos.variables.Add("@tipo_consulta", data.DescripcionTipo); datos.variables.Add("@url_opcion_sistema", urlSistema); datos.textoNotificar = data.Adicional + "</br></br> Enviado por " + nombreRemitenteOriginal + " el " + entidadSincronizar.FechaEnvio.Value.ToString("dd/M/yyyy") + ":</br></br>" + datosPlantilla.Contenido; foreach (var item in datos.variables) { datos.textoNotificar = datos.textoNotificar.Replace(item.Key, item.Value); } consultaLogicRepository.NotificarConsulta(entidadSincronizar.Asunto, datos.textoNotificar, destinatario.CorreoElectronico, null, datos.profileCorreo); } //copiar los adjuntos del original var resultAdjunto = consultaAdjuntoLogicRepository.BuscarConsultaAdjunto( null, new Guid(data.CodigoConsultaRelacionado), null, null, DatosConstantes.EstadoRegistro.Activo ); if (resultAdjunto != null && resultAdjunto.Count > 0) { foreach (var item in resultAdjunto) { item.CodigoConsultaAdjunto = Guid.NewGuid(); item.CodigoConsulta = entidad.CodigoConsulta; consultaAdjuntoEntityRepository.Insertar(ConsultaAdapter.ObtenerConsultaAdjuntoEntityDeLogic(item)); consultaAdjuntoEntityRepository.GuardarCambios(); } } //Guardar nuevos adjuntos if (data.ListaAdjuntos != null) { foreach (var item in data.ListaAdjuntos) { byte[] bytes = System.IO.File.ReadAllBytes(item.RutaArchivoSharePoint); item.CodigoConsulta = entidad.CodigoConsulta; item.ArchivoAdjunto = bytes; var resultadoAdjunto = RegistrarConsultaAdjunto(item); } } data.ListaAdjuntos = null; resultado.Result = data; } catch (Exception e) { resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <ConsultaService>(e); } return(resultado); }