コード例 #1
0
        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());
        }
コード例 #2
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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
                });
            }
        }