private List <NotificacionVencimiento> ObtenerNotificacionesVencimiento(int?empresaId) { List <NotificacionVencimiento> notificacionVencimientosRet = new List <NotificacionVencimiento>(); //TODO: NotificacionesVencimiento-Update //las actualizaciones de las notificaciones se realizan dentro de esta función //se debería en este punto crear las notificaciones en estado EstadoNotificacionVencimiento.NoNotificarYaActualizado //en los casos en los que corresponda ActualizarNotificacionesVencimientos(); int antelacionNotificacion = int.Parse(ConfiguracionHelper.GetInstance().GetValue("AntelacionNotificacion", "Notificaciones")); DateTime proximaFechaVencimientoNotificar = DateTime.Now.AddDays(antelacionNotificacion); //MarcarRegistrosYaActualizados(proximaFechaVencimientoNotificar); //TODO 20181214 - Agregar un atributo en los cursos indicando si se notifican los vencimientos //No se notifican los vencimientos de las certificaciones correpondientes a cursos de refresh (CursoId != 2) var notificacionVencimientos = db.NotificacionVencimientos .Where(n => n.RegistroCapacitacion.Jornada.CursoId != 2) .Where(n => n.Estado == EstadoNotificacionVencimiento.NotificacionPendiente) .Where(n => n.RegistroCapacitacion.FechaVencimiento <= proximaFechaVencimientoNotificar) .OrderBy(n => n.RegistroCapacitacion.Jornada.Curso.CursoID) .OrderBy(n => n.RegistroCapacitacion.Capacitado.Empresa.NombreFantasia) .Include(n => n.RegistroCapacitacion); if (empresaId != null) { notificacionVencimientos = notificacionVencimientos.Where(n => n.RegistroCapacitacion.Capacitado.EmpresaID == empresaId); } return(notificacionVencimientos.ToList()); }
private List <NotificacionVencimiento> ObtenerNotificacionesVencimiento(int?empresaId) { List <NotificacionVencimiento> notificacionVencimientosRet = new List <NotificacionVencimiento>(); ActualizarNotificacionesVencimientos(); int antelacionNotificacion = int.Parse(ConfiguracionHelper.GetInstance().GetValue("AntelacionNotificacion")); DateTime proximaFechaVencimientoNotificar = DateTime.Now.AddDays(antelacionNotificacion); MarcarRegistrosYaActualizados(proximaFechaVencimientoNotificar); //TODO 20181214 - Agregar un atributo en los cursos indicando si se notifican los vencimientos //No se notifican los vencimientos de las certificaciones correpondientes a cursos de refresh (CursoId != 2) var notificacionVencimientos = db.NotificacionVencimientos .Where(n => n.RegistroCapacitacion.Jornada.CursoId != 2) .Where(n => n.Estado == EstadoNotificacionVencimiento.NotificacionPendiente) .Where(n => n.RegistroCapacitacion.FechaVencimiento <= proximaFechaVencimientoNotificar) .OrderBy(n => n.RegistroCapacitacion.Jornada.Curso.CursoID) .OrderBy(n => n.RegistroCapacitacion.Capacitado.Empresa.NombreFantasia) .Include(n => n.RegistroCapacitacion); /* * var notificacionVencimientos = db.NotificacionVencimientos * .Where(n => (n.Estado == EstadoNotificacionVencimiento.NotificacionPendiente && * n.RegistroCapacitacion.FechaVencimiento <= proximaFechaVencimientoNotificar)) * .OrderBy(n => n.RegistroCapacitacion.Jornada.Curso.CursoID) * .OrderBy(n => n.RegistroCapacitacion.Capacitado.Empresa.NombreFantasia) * .Include(n => n.RegistroCapacitacion); * * List<NotificacionVencimiento> nvRet = new List<NotificacionVencimiento>(); * * foreach (var n in notificacionVencimientos) * { * if (n.Estado == EstadoNotificacionVencimiento.NotificacionPendiente && * n.RegistroCapacitacion.FechaVencimiento <= proximaFechaVencimientoNotificar) * { * if (n.RegistroCapacitacion.CapacitadoID == 2964) * { * nvRet.Add(n); * } * * nvRet.Add(n); * } * } */ if (empresaId != null) { notificacionVencimientos = notificacionVencimientos.Where(n => n.RegistroCapacitacion.Capacitado.EmpresaID == empresaId); } return(notificacionVencimientos.ToList()); }
private async Task <bool> SendMail(string Mensaje, string TituloCorreo, String NotaCorreo, CitaDTO CitaDto) { try { Func <string, string> EvaluarParametro = delegate(string Parametro){ return(string.IsNullOrEmpty(Parametro) ? string.Empty : Parametro); }; if (string.IsNullOrEmpty(CitaDto.Promovente.CorreoElectronico)) { return(false); } var lista = new List <string> { Mensaje, TituloCorreo, NotaCorreo }; var configuracion = await new LenguajeCiudadanoDAO().LenguajeCiudadanoServerAsync(lista); string tituloCorreo; string mensajeCorreo; string notaCorreo; configuracion.TryGetValue(Mensaje, out mensajeCorreo); configuracion.TryGetValue(TituloCorreo, out tituloCorreo); configuracion.TryGetValue(NotaCorreo, out notaCorreo); String CuerpoHTMLCorreo = ConfiguracionHelper.LeerTextoRuta(ConfiguracionHelper.ObtenerConfiguracion(Enumeracion.EnumSysConfiguracion.CuerpoDelCorreo)); if (CuerpoHTMLCorreo != null) { Mensaje = CuerpoHTMLCorreo.Replace("\n", string.Empty).Replace("[MensajeCorreo]", EvaluarParametro(mensajeCorreo)); Mensaje = Mensaje.Replace("[NumeroFolio]", EvaluarParametro(CitaDto.NumeroFolio)) .Replace("[NombreCompleto]", (EvaluarParametro(CitaDto.Promovente.Nombre) + " " + EvaluarParametro(CitaDto.Promovente.Paterno) + " " + EvaluarParametro(CitaDto.Promovente.Materno))) .Replace("[FechaCita]", EvaluarParametro(CitaDto.FechaCitaVista)) .Replace("[HoraCita]", EvaluarParametro(CitaDto.HoraCitaVista)); Mensaje = Mensaje.Replace("[Notas]", EvaluarParametro(notaCorreo)); } var promoventeService = new PromoventeService(); var conceptoTipoTramite = promoventeService.ConceptoTipoTramite(CitaDto.CatTipoTramiteId); if (tituloCorreo != null && (tituloCorreo.IndexOf("[NombreTramite]") != -1 && tituloCorreo.IndexOf("[NombreTramite]") != 0)) { TituloCorreo = tituloCorreo.Replace("{NombreTramite}", conceptoTipoTramite); } else { TituloCorreo = string.Concat(tituloCorreo.Replace(".", "").TrimEnd(), " ", conceptoTipoTramite.Replace(".", ""), "."); } await _mailService.SendMailAsync(CitaDto.Promovente.CorreoElectronico, TituloCorreo, Mensaje); return(true); } catch (Exception ex) { EscribirLog(new ExceptionContext(ControllerContext, ex)); return(false); } }
public bool EnviarEmailsEmpresa(int empresaId) { var empresa = db.Empresas.Where(e => e.EmpresaID == empresaId).FirstOrDefault(); if (!string.IsNullOrEmpty(empresa.Email)) //si la empresa tiene direcciones de email asociadas { var message = new MailMessage(); foreach (var emailEmpresa in empresa.Email.Split(',')) { message.To.Add(new MailAddress(emailEmpresa)); } foreach (var emailCC in ConfiguracionHelper.GetInstance().GetValue("EmailNotificacionCC").Split(',')) { message.CC.Add(new MailAddress(emailCC)); } message.From = new MailAddress("*****@*****.**"); // replace with valid value message.Subject = string.Format("{0} - {1} {2} {3}", ConfiguracionHelper.GetInstance().GetValue("EmailNotificacionAsunto"), empresa.NombreFantasia, DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString()); message.Body = ConfiguracionHelper.GetInstance().GetValue("EmailNotificacionCuerpo"); message.IsBodyHtml = true; message.Body += AgregarTableCapacitados(ObtenerNotificacionesVencimiento(empresaId)); using (var smtp = new SmtpClient()) { var credential = new NetworkCredential { UserName = ConfiguracionHelper.GetInstance().GetValue("EmailUsuario"), Password = ConfiguracionHelper.GetInstance().GetValue("PasswordUsuario") //UserName = "******", //Password = "******" }; smtp.Credentials = credential; smtp.Host = ConfiguracionHelper.GetInstance().GetValue("SMPTHost"); smtp.Port = int.Parse(ConfiguracionHelper.GetInstance().GetValue("SMTPPort")); smtp.EnableSsl = bool.Parse(ConfiguracionHelper.GetInstance().GetValue("SMTPSSL")); try { smtp.Send(message); db.SaveChanges(); //se modificó el estado de las notificaciones a "Enviada" return(true); } catch (Exception) { return(false); } } } else { return(false); } }
private async Task <bool> SendMail(string Mensaje, string TituloCorreo, RequestResultDTO PersonInfo) { try { if (string.IsNullOrEmpty(PersonInfo.Promovente.CorreoElectronico)) { return(false); } Func <string, string> EvaluarParametro = delegate(string Parametro) { return(string.IsNullOrEmpty(Parametro) ? string.Empty : Parametro); }; var lista = new List <string> { Mensaje, TituloCorreo, EnumConsCorreo.NotaBloqueoCitas }; var configuracion = await new LenguajeCiudadanoDAO().LenguajeCiudadanoServerAsync(lista); bool esUsuarioBloqueado = new CitaDAO().BloqueoPersona(new PersonaDTO { CURP = PersonInfo.Paciente.CURP }); string tituloCorreo; string mensajeCorreo; configuracion.TryGetValue(Mensaje, out mensajeCorreo); configuracion.TryGetValue(TituloCorreo, out tituloCorreo); String CuerpoHTMLCorreo = ConfiguracionHelper.LeerTextoRuta(ConfiguracionHelper.ObtenerConfiguracion(Enumeracion.EnumSysConfiguracion.CuerpoDelCorreo)); if (CuerpoHTMLCorreo != null) { Mensaje = CuerpoHTMLCorreo.Replace("\n", string.Empty).Replace("[MensajeCorreo]", EvaluarParametro(mensajeCorreo)); Mensaje = Mensaje.Replace("[NumeroFolio]", EvaluarParametro(PersonInfo.Folio)) .Replace("[NombreCompleto]", (EvaluarParametro(PersonInfo.Promovente.Nombre) + " " + EvaluarParametro(PersonInfo.Promovente.Paterno) + " " + EvaluarParametro(PersonInfo.Promovente.Materno))) .Replace("[FechaCita]", EvaluarParametro(PersonInfo.Cita.FechaCita.ToShortDateString())) .Replace("[HoraCita]", EvaluarParametro(PersonInfo.Cita.HoraCita.ToString())); if (esUsuarioBloqueado) { string notaBloqueoPaciente; configuracion.TryGetValue(EnumConsCorreo.NotaBloqueoCitas, out notaBloqueoPaciente); Mensaje = Mensaje.Replace("[Notas]", notaBloqueoPaciente); } else { Mensaje = Mensaje.Replace("[Notas]", string.Empty); } } var promoventeService = new PromoventeService(); var conceptoTipoTramite = PersonInfo.CatTipoTramiteConcepto; if (tituloCorreo != null && (tituloCorreo.IndexOf("[NombreTramite]") != -1 && tituloCorreo.IndexOf("[NombreTramite]") != 0)) { TituloCorreo = tituloCorreo.Replace("{NombreTramite}", conceptoTipoTramite); } else { TituloCorreo = string.Concat(tituloCorreo.Replace(".", "").TrimEnd(), " ", conceptoTipoTramite.Replace(".", "").TrimEnd(), "."); } await _mailService.SendMailAsync(PersonInfo.Promovente.CorreoElectronico, TituloCorreo, Mensaje); return(true); } catch (Exception ex) { //LoggerException(ex); return(false); } }
private RespuestaOVAL EnviarDatosRegistroSOAP(RegistroCapacitacion r) { const string module = "enviosOVAL"; DateTime fechaJornada = r.Jornada.Fecha; ServiceEnviarDatosFotoOVAL.WebServiceResponse rOVAL; try { string mensajelog = string.Format("Iniciando envío de datos\r\n\t{0}\r\n\t{1}\r\n\t{2}\r\n\t{3}", r.Capacitado.DocumentoCompleto, r.Capacitado.NombreCompleto, r.Jornada.JornadaIdentificacionCompleta, r.Estado.ToString()); LogHelper.GetInstance().WriteMessage(module, mensajelog); string direccionServicioEnviarDatosOVAL = r.Jornada.Curso.PuntoServicio.Direccion; LogHelper.GetInstance().WriteMessage(module, string.Format("Conectándose al servicio ubicado en {0}", direccionServicioEnviarDatosOVAL)); BasicHttpsBinding binding = new BasicHttpsBinding(); EndpointAddress address = new EndpointAddress(direccionServicioEnviarDatosOVAL); ServiceEnviarDatosFotoOVAL.ServiceSoapClient sOVAL = new ServiceEnviarDatosFotoOVAL.ServiceSoapClient(binding, address); ServiceEnviarDatosFotoOVAL.TokenSucurity token = new ServiceEnviarDatosFotoOVAL.TokenSucurity { Username = r.Jornada.Curso.PuntoServicio.Usuario, Password = r.Jornada.Curso.PuntoServicio.Password }; //Se invoca el método para validar las credenciaes del usuario (devuelve un string) string responseToken = sOVAL.AuthenticationUser(token); token.AuthenToken = responseToken; byte[] fotoCapacitadoAsArray = null; if (r.Capacitado.PathArchivo != null) { if (r.Capacitado.PathArchivo.NombreArchivo.ToLower().Contains(".jpeg")) { if (bool.Parse(ConfiguracionHelper.GetInstance().GetValue("ForzarExtensionArchivoImagenJPG", "EnvioOVAL"))) { if (CapacitadoHelper.GetInstance().CambiarExtensionFotoAJPG(r.Capacitado, this.db)) { LogHelper.GetInstance().WriteMessage(module, string.Format("Se modificó la extensión del archivo {0}", r.Capacitado.PathArchivo.NombreArchivo)); } else { LogHelper.GetInstance().WriteMessage(module, string.Format("No se pudo modificar la extensión del archivo {0}", r.Capacitado.PathArchivo.NombreArchivo)); } } else { LogHelper.GetInstance().WriteMessage(module, string.Format("No se modificará la extensión del archivo {0} porque está deshabilitada por configuración", r.Capacitado.PathArchivo.NombreArchivo)); } } //se obtiene el path donde está almacenada la imagen que se enviará al web service string carpetaArchivo = PathArchivoHelper.GetInstance().ObtenerCarpetaFotoCapacitado(r.Capacitado.CapacitadoID); string pathDirectorio = Path.Combine(HttpContext.Current.Server.MapPath("~/Images/FotosCapacitados/"), carpetaArchivo); var pathArchivoImagen = Path.Combine(pathDirectorio, r.Capacitado.PathArchivo.NombreArchivo); fotoCapacitadoAsArray = this.GetImageAsByteArray(pathArchivoImagen); } rOVAL = sOVAL.get_induccion(token, r.Capacitado.TipoDocumento.TipoDocumentoOVAL, r.Capacitado.Documento, r.Capacitado.Nombre, r.Capacitado.Apellido, string.Empty, r.Capacitado.Empresa.RUT, r.Capacitado.Empresa.NombreFantasia, "CAP_SEG", r.Estado == EstadosRegistroCapacitacion.Aprobado ? "APR" : "REC", string.Format("{0}-{1}-{2}", fechaJornada.Day.ToString().PadLeft(2, '0'), fechaJornada.Month.ToString().PadLeft(2, '0'), fechaJornada.Year.ToString()), string.Empty, fotoCapacitadoAsArray); LogHelper.GetInstance().WriteMessage(module, string.Format("Conexión finalizada\r\n\tResult: {0}\r\n\tErrorMessage: {1}", rOVAL.Result, rOVAL.ErrorMessage)); //si la propiedad Result tiene contenido, el registro se recibió correctamente if (rOVAL.Result != string.Empty) { LogHelper.GetInstance().WriteMessage(module, "El registro fue recibido por el sistema OVAL"); return(new RespuestaOVAL() { Codigo = 0, Mensaje = rOVAL.Result }); } else { LogHelper.GetInstance().WriteMessage(module, string.Format("El registro fue rechazado por el sistema OVAL ({0})", rOVAL.ErrorMessage)); return(new RespuestaOVAL() { Codigo = 1, Mensaje = rOVAL.ErrorMessage }); } } catch (Exception e) { LogHelper.GetInstance().WriteMessage(module, e.Message); return(new RespuestaOVAL() { Codigo = -1, Mensaje = e.Message }); } }