public async Task <PartialViewResult> _IndexGrid(String search)
        {
            //Permisos
            Permisos(ControllerContext.RouteData.Values["controller"].ToString());

            ViewBag.NombreListado = Etiquetas.TituloGridNotificaciones;
            //Búsqueda
            var listado = NotificacionesDAL.ListarNotificaciones();

            search = !string.IsNullOrEmpty(search) ? search.Trim() : "";

            if (!string.IsNullOrEmpty(search))//filter
            {
                var type       = listado.GetType().GetGenericArguments()[0];
                var properties = type.GetProperties();

                listado = listado.Where(x => properties
                                        .Any(p =>
                {
                    var value = p.GetValue(x);
                    return(value != null && value.ToString().ToLower().Contains(search.ToLower()));
                })).ToList();
            }
            // Only grid query values will be available here.
            return(PartialView(await Task.Run(() => listado)));
        }
        private IGrid <NotificacionesInfo> CreateExportableGrid()
        {
            IGrid <NotificacionesInfo> grid = new Grid <NotificacionesInfo>(NotificacionesDAL.ListarNotificaciones());

            grid.ViewContext = new ViewContext {
                HttpContext = HttpContext
            };
            grid.Query = Request.QueryString;

            grid.Columns.Add(model => model.NombreTarea).Titled("Nombre");
            grid.Columns.Add(model => model.DescripcionTarea).Titled("Descripción");
            grid.Columns.Add(model => model.NombreEmisor).Titled("Emisor");
            grid.Columns.Add(model => model.CorreoEmisor).Titled("Correo Emisor");
            grid.Columns.Add(model => model.CorreosDestinarios).Titled("Correos Destinatarios");
            grid.Columns.Add(model => model.AsuntoCorreo).Titled("Asunto Correo");
            grid.Columns.Add(model => model.NombreArchivoPlantillaCorreo).Titled("Nombre Archivo Plantilla Correo");
            grid.Columns.Add(model => model.CorreosDestinarios).Titled("Correos Destinatarios");
            grid.Columns.Add(model => model.CuerpoCorreo).Titled("Cuerpo Correo");
            grid.Columns.Add(model => model.AdjuntosCorreo).Titled("Adjuntos Correo");
            grid.Columns.Add(model => model.CorreosDestinarios).Titled("Correos Destinatarios");
            grid.Columns.Add(model => model.FechaEnvioCorreo).Titled("Fecha de Envío Correo");
            grid.Columns.Add(model => model.EstadoNotificacion).Titled("Estado Activación");
            grid.Columns.Add(model => model.EstadoEjecucionNotificacion).Titled("Estado En Cola");
            grid.Columns.Add(model => model.EstadoEnviadoNotificacion).Titled("Estado Envío");
            grid.Columns.Add(model => model.DetalleEstadoEjecucionNotificacion).Titled("Detalle");


            foreach (IGridColumn column in grid.Columns)
            {
                column.Filter.IsEnabled = true;
                column.Sort.IsEnabled   = true;
            }

            return(grid);
        }
        public ActionResult Cancelar(int id)
        {
            if (id == 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RespuestaTransaccion resultado = NotificacionesDAL.CancelarNotificacion(id);// await db.Cabecera.FindAsync(id);

            return(Json(new { Resultado = resultado }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult EnviarPrueba(string Destinatarios, string description, string Asunto)
        {
            if (string.IsNullOrEmpty(Destinatarios))
            {
                Resultado.Estado    = false;
                Resultado.Respuesta = "Los campos con * son requeridos";
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }

            var           listado       = Destinatarios.Split(',').ToList();
            List <string> mailNoValidos = new List <string>();

            foreach (var item in listado)
            {
                if (!Validaciones.ValidarMail(item))
                {
                    mailNoValidos.Add(item);
                }
            }

            if (mailNoValidos.Any())
            {
                var resultadoMails = String.Join(" ; ", mailNoValidos); // Invalidos
                Resultado.Estado    = false;
                Resultado.Respuesta = Mensajes.MensajeTransaccionFallida + " Los siguientes emails no son válidos: " + resultadoMails;
                Resultado.Adicional = resultadoMails;
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                Destinatarios = Destinatarios.Replace(",", ";");
            }

            description = !string.IsNullOrEmpty(description) ? description :  GetEmailTemplate("TemplateEnviosMasivosFocus");
            Resultado   = NotificacionesDAL.CrearNotificacion(new Notificaciones
            {
                NombreTarea                  = "Notificación Focus de prueba generado por el usuario.",
                DescripcionTarea             = "El usuario prueba un envío de notificación para verificar que todo esté funcional.",
                NombreEmisor                 = nombreCorreoEmisor,
                CorreoEmisor                 = correoEmisor,
                ClaveCorreo                  = claveEmisor,
                CorreosDestinarios           = Destinatarios,
                AsuntoCorreo                 = string.IsNullOrEmpty(Asunto) ? "NOTIFICACIÓN SORTEO" : Asunto,
                NombreArchivoPlantillaCorreo = "MailingSorteosFocus",
                CuerpoCorreo                 = description,
                AdjuntosCorreo               = "",//ruta,
                FechaEnvioCorreo             = DateTime.Now,
                Empresa = "FOCUS AND RESEARCH",
                Canal   = "PRUEBA NOTIFICACION FOCUS",
                Tipo    = "PRUEBA",
            });

            return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 5
0
        public ActionResult CambiarClave(CambiarClave formulario)
        {
            RespuestaTransaccion respuesta = new RespuestaTransaccion {
                Estado = false, Respuesta = Mensajes.MensajeTransaccionFallida, EntidadID = 0
            };

            try
            {
                Resultado = UsuarioDAL.CambiarClaveReset(formulario);
                if (Resultado.Estado)
                {
                    SessionHelper.DestroyUserSession();
                    Session.Clear();

                    string enlace       = GetUrlSitio(Url.Action("Index", "Login"));
                    var    datosusuario = UsuarioDAL.ConsultarUsuario(Convert.ToInt32(formulario.UsuaCodi));
                    string body         = GetEmailTemplate("TemplateCambioClaveUsuario");
                    body = body.Replace("@ViewBag.EnlaceDirecto", enlace);
                    body = body.Replace("@ViewBag.EnlaceSecundario", enlace);
                    body = body.Replace("@ViewBag.Usuario", datosusuario.NombresApellidos);

                    //Siempre que un usuario se haya creado con éxito.

                    var notificacion = NotificacionesDAL.CrearNotificacion(new Notificaciones
                    {
                        NombreTarea                  = "Cambio de Usuario",
                        DescripcionTarea             = "El usuario cambio de clave.",
                        NombreEmisor                 = nombreCorreoEmisor,
                        CorreoEmisor                 = correoEmisor,
                        ClaveCorreo                  = claveEmisor,
                        CorreosDestinarios           = datosusuario.MailCorporativo,
                        AsuntoCorreo                 = "CAMBIO DE CLAVE",
                        NombreArchivoPlantillaCorreo = TemplateNotificaciones,
                        CuerpoCorreo                 = body,
                        AdjuntosCorreo               = "",//ruta,
                        FechaEnvioCorreo             = DateTime.Now,
                        Empresa = "",
                        Canal   = CanalNotificaciones,
                        Tipo    = "USUARIO",
                    });
                }
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                Resultado.Respuesta = Resultado.Respuesta + ";" + ex.Message;
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult DescargarReporteFormatoCSV()
        {
            var comlumHeadrs = new string[]
            {
                "NOMBRE",
                "DESCRIPCION",
                "EMISOR",
                "CORREO EMISOR",
                "CORREOS DESTINATARIOS",
                "ASUNTO CORREO",
                "HTML PLANTILLA",
                "ADJUNTOS CORREO",
                "FECHA DE ENVÍO",
                "ESTADO ACTIVACIÓN",
                "ESTADO EN COLA",
                "ESTADO ENVÍO",
                "DETALLE"
            };

            var listado = (from item in NotificacionesDAL.ListarNotificaciones()
                           select new object[]
            {
                item.NombreTarea,
                item.DescripcionTarea,
                item.NombreEmisor,
                item.CorreoEmisor,
                item.CorreosDestinarios,
                item.AsuntoCorreo,
                item.NombreArchivoPlantillaCorreo,
                item.AdjuntosCorreo,
                item.FechaEnvioCorreo,
                item.EstadoActivacionNotificacion,
                item.EstadoEnColaNotificacion,
                item.EstadoEnvioNotificacion,
                item.DetalleEstadoEjecucionNotificacion
            }).ToList();

            // Build the file content
            var employeecsv = new StringBuilder();

            listado.ForEach(line =>
            {
                employeecsv.AppendLine(string.Join(",", line));
            });

            byte[] buffer = Encoding.Default.GetBytes($"{string.Join(",", comlumHeadrs)}\r\n{employeecsv.ToString()}");
            return(File(buffer, "text/csv", $"Notificaciones.csv"));
        }
Esempio n. 7
0
        public ActionResult RecoveryPassword(ForgotViewModel formulario)
        {
            try
            {
                Resultado = UsuarioDAL.RecuperarClave(formulario);
                string enlace = GetUrlSitio(Url.Action("Index", "Login"));

                string body = GetEmailTemplate("TemplateResetClaveUsuario");
                body = body.Replace("@ViewBag.EnlaceDirecto", enlace);
                body = body.Replace("@ViewBag.EnlaceSecundario", enlace);
                body = body.Replace("@ViewBag.Usuario", formulario.Login);
                body = body.Replace("@ViewBag.Contrasenia", Resultado.EntidadID.ToString());


                if (Resultado.Estado)
                {
                    var notificacion = NotificacionesDAL.CrearNotificacion(new Notificaciones
                    {
                        NombreTarea                  = "Reset Clave",
                        DescripcionTarea             = "El usuario olvidó su contraseña.",
                        NombreEmisor                 = nombreCorreoEmisor,
                        CorreoEmisor                 = correoEmisor,
                        ClaveCorreo                  = claveEmisor,
                        CorreosDestinarios           = formulario.Login,
                        AsuntoCorreo                 = "RECUPERAR CLAVE",
                        NombreArchivoPlantillaCorreo = TemplateNotificaciones,
                        CuerpoCorreo                 = body,
                        AdjuntosCorreo               = "",//ruta,
                        FechaEnvioCorreo             = DateTime.Now,
                        Empresa = "",
                        Canal   = CanalNotificaciones,
                        Tipo    = "USUARIO",
                    });
                }
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                Resultado.Respuesta = Resultado.Respuesta + ";" + ex.Message;
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult DescargarReporteFormatoPDF()
        {
            // Seleccionar las columnas a exportar
            var results = NotificacionesDAL.ListarNotificaciones().Select(s => new NotificacionesCompletaPDF
            {
                NombreTarea                        = s.NombreTarea,
                DescripcionTarea                   = s.DescripcionTarea,
                NombreEmisor                       = s.NombreEmisor,
                CorreoEmisor                       = s.CorreoEmisor,
                CorreosDestinarios                 = s.CorreosDestinarios,
                AsuntoCorreo                       = s.AsuntoCorreo,
                HtmlPlantilla                      = s.NombreArchivoPlantillaCorreo,
                AdjuntosCorreo                     = s.AdjuntosCorreo,
                FechaEnvioCorreo                   = s.FechaEnvioCorreo,
                EstadoActivacionNotificacion       = s.EstadoActivacionNotificacion,
                EstadoEnColaNotificacion           = s.EstadoEnColaNotificacion,
                EstadoEnvioNotificacion            = s.EstadoEnvioNotificacion,
                DetalleEstadoEjecucionNotificacion = s.DetalleEstadoEjecucionNotificacion
            }).Take(10).ToList();

            var list = Reportes.SerializeToJSON(results);

            return(Content(list, "application/json"));
        }
Esempio n. 9
0
        public ActionResult Create(FichaIngreso formulario, List <DetalleEstudios> estudios, List <DetalleExperiencias> experiencias, List <DetalleCargasFamiliares> cargasFamiliares, Usuario usuario)
        {
            string FileName = string.Empty;

            try
            {
                estudios         = estudios ?? new List <DetalleEstudios>();
                experiencias     = experiencias ?? new List <DetalleExperiencias>();
                cargasFamiliares = cargasFamiliares ?? new List <DetalleCargasFamiliares>();

                var fichaIngreso = HttpContext.Request.Params.Get("formulario");
                formulario = JsonConvert.DeserializeObject <FichaIngresoOverload>(fichaIngreso, settingsJsonDeserilize).formulario;

                var datosUsuario = HttpContext.Request.Params.Get("usuario");
                usuario = JsonConvert.DeserializeObject <UsuarioOverload>(datosUsuario).usuario;

                var dataEstudios = HttpContext.Request.Params.Get("estudios");
                estudios = JsonConvert.DeserializeObject <EstudiosOverload>(dataEstudios).estudios;

                var dataExperiencias = HttpContext.Request.Params.Get("experiencias");
                experiencias = JsonConvert.DeserializeObject <ExperienciaOverload>(dataExperiencias, settingsJsonDeserilize).experiencias;

                var dataCargasFamiliares = HttpContext.Request.Params.Get("cargasFamiliares");
                cargasFamiliares = JsonConvert.DeserializeObject <CargasFamiliaresOverload>(dataCargasFamiliares, settingsJsonDeserilize).cargasFamiliares;

                //Usuario
                usuario.IdUsuario = formulario.UsuarioID;

                //Obtener archivos
                HttpFileCollectionBase files = Request.Files;

                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFileBase file = files[i];
                    string             path = string.Empty;

                    // Checking for Internet Explorer
                    if (Request.Browser.Browser.ToUpper() == "IE" || Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER")
                    {
                        string[] testfiles = file.FileName.Split(new char[] { '\\' });
                        path = testfiles[testfiles.Length - 1];
                    }
                    else
                    {
                        path     = file.FileName;
                        FileName = file.FileName;
                    }

                    string tipoArchivo = file.ContentType;

                    using (var reader = new BinaryReader(file.InputStream))
                    {
                        formulario.Foto = reader.ReadBytes(file.ContentLength);
                    }
                }

                usuario.Direccion = formulario.DireccionCallePrincipal + " ; " + formulario.DireccionCalleSecundaria + " ; " + formulario.DireccionConjuntoResidencial + " N. " + formulario.DireccionNumeroCasa;

                var actualizacionDatosUsuario = UsuarioDAL.ActualizarDatosUsuarioFichaIngreso(usuario);

                if (actualizacionDatosUsuario.Estado)
                {
                    var    destinatarios = PerfilesDAL.ConsultarCorreoNotificacion(14);
                    string enlace        = GetUrlSitio(Url.Action("Index", "FichaIngreso"));

                    string body = GetEmailTemplate("TemplateFormularioIngreso");
                    body = body.Replace("@ViewBag.EnlaceDirecto", enlace);
                    body = body.Replace("@ViewBag.EnlaceSecundario", enlace);
                    body = body.Replace("@ViewBag.Empleado", usuario.Nombres + " " + usuario.Apellidos);

                    Resultado = FichaIngresoDAL.CrearFichaIngreso(formulario, cargasFamiliares, estudios, experiencias);
                    //Siempre que la ficha de ingreso haya sido creado con éxito.
                    if (Resultado.Estado)
                    {
                        var notificacion = NotificacionesDAL.CrearNotificacion(new Notificaciones
                        {
                            NombreTarea                  = "Nueva Ficha Ingreso",
                            DescripcionTarea             = "Correo de notificación de registro de ficha un nuevo empleado en el corporativo a RRHH y al área médica.",
                            NombreEmisor                 = nombreCorreoEmisor,
                            CorreoEmisor                 = correoEmisor,
                            ClaveCorreo                  = claveEmisor,
                            CorreosDestinarios           = destinatarios,
                            AsuntoCorreo                 = "NOTIFICACION DE FICHA DE INGRESO",
                            NombreArchivoPlantillaCorreo = TemplateNotificaciones,
                            CuerpoCorreo                 = body,
                            AdjuntosCorreo               = "",//ruta,
                            FechaEnvioCorreo             = DateTime.Now,
                            Empresa = "ATISCODE",
                            Canal   = CanalNotificaciones,
                            Tipo    = "FICHA INGRESO",
                        });
                    }
                }
                else
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = actualizacionDatosUsuario.Respuesta
                                      } }, JsonRequestBehavior.AllowGet));
                }

                return(Json(new { Resultado = Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Excepción al crear ficha de ingreso.");
                return(Json(new { Resultado = new RespuestaTransaccion {
                                      Estado = false, Respuesta = ex.Message
                                  } }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 10
0
        public ActionResult Create(Usuario usuario)
        {
            RespuestaTransaccion resultado = new RespuestaTransaccion {
                Estado = false, Respuesta = Mensajes.MensajeTransaccionFallida
            };

            try
            {
                if (!Validaciones.ValidarMail(usuario.MailCorporativo))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeCorreoCorporativoIncorrecto
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (!Validaciones.ValidarMail(usuario.Mail))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeCorreoIncorrecto
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (!Validaciones.VerificaIdentificacion(usuario.Identificacion))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeCedulaRucIncorrecto
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (usuario.Username.Length < 4)
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeLongitudUserName
                                      } }, JsonRequestBehavior.AllowGet));
                }

                Resultado = UsuarioDAL.CrearUsuario(usuario);
                string enlace = GetUrlSitio(Url.Action("Index", "Login"));

                string body = GetEmailTemplate("TemplateBienvenidaUsuario");
                body = body.Replace("@ViewBag.EnlaceDirecto", enlace);
                body = body.Replace("@ViewBag.EnlaceSecundario", enlace);
                body = body.Replace("@ViewBag.Usuario", usuario.Nombres + " " + usuario.Apellidos);
                body = body.Replace("@ViewBag.Contrasenia", Cryptography.Decrypt(usuario.Clave));

                //Siempre que un usuario se haya creado con éxito.
                if (Resultado.Estado)
                {
                    var notificacion = NotificacionesDAL.CrearNotificacion(new Notificaciones
                    {
                        NombreTarea                  = "Creación de Usuario",
                        DescripcionTarea             = "Registro de un nuevo usuario.",
                        NombreEmisor                 = nombreCorreoEmisor,
                        CorreoEmisor                 = correoEmisor,
                        ClaveCorreo                  = claveEmisor,
                        CorreosDestinarios           = usuario.MailCorporativo,
                        AsuntoCorreo                 = "CREACION DE USUARIO",
                        NombreArchivoPlantillaCorreo = TemplateNotificaciones,
                        CuerpoCorreo                 = body,
                        AdjuntosCorreo               = "",//ruta,
                        FechaEnvioCorreo             = DateTime.Now,
                        Empresa = "",
                        Canal   = CanalNotificaciones,
                        Tipo    = "USUARIO",
                    });
                }
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                Resultado.Respuesta = Resultado.Respuesta + ";" + ex.Message;
                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 11
0
        public ActionResult Register(RegisterViewModel formulario)
        {
            RespuestaTransaccion respuesta = new RespuestaTransaccion {
                Estado = false, Respuesta = Mensajes.MensajeTransaccionFallida, EntidadID = 0
            };

            try
            {
                if (!Validaciones.ValidarMail(formulario.Email))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeCorreoIncorrecto
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (!Validaciones.VerificaIdentificacion(formulario.Identificacion))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeCedulaRucIncorrecto
                                      } }, JsonRequestBehavior.AllowGet));
                }

                if (UsuarioDAL.NombreUsuarioExistente(formulario.UserName))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeResgistroExistenteNombreUsuario
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (UsuarioDAL.IdentificacionExistente(formulario.Identificacion))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeResgistroExistenteIdentificacion
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (UsuarioDAL.CorreoExistente(formulario.Email))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeResgistroExistenteIMailCorporativo
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (formulario.UserName.Length < 4)
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeLongitudUserName
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (formulario.Password.Length != formulario.ConfirmPassword.Length)
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeValidacionContrasenias
                                      } }, JsonRequestBehavior.AllowGet));
                }
                if (formulario.Password.Length < 8)
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = Mensajes.MensajeLongitudContrasenia
                                      } }, JsonRequestBehavior.AllowGet));
                }


                Resultado = UsuarioDAL.CrearUsuarioGenerico(formulario);

                string enlace = GetUrlSitio(Url.Action("Index", "Login"));

                string body = GetEmailTemplate("TemplateRegistroUsuario");
                body = body.Replace("@ViewBag.EnlaceDirecto", enlace);
                body = body.Replace("@ViewBag.EnlaceSecundario", enlace);
                body = body.Replace("@ViewBag.Usuario", formulario.Nombre + " " + formulario.Apellidos);

                //Siempre que un usuario se haya creado con éxito.
                if (Resultado.Estado)
                {
                    var notificacion = NotificacionesDAL.CrearNotificacion(new Notificaciones
                    {
                        NombreTarea                  = "Creación de Usuario",
                        DescripcionTarea             = "Registro de un nuevo usuario.",
                        NombreEmisor                 = nombreCorreoEmisor,
                        CorreoEmisor                 = correoEmisor,
                        ClaveCorreo                  = claveEmisor,
                        CorreosDestinarios           = formulario.Email,
                        AsuntoCorreo                 = "CREACION DE USUARIO",
                        NombreArchivoPlantillaCorreo = TemplateNotificaciones,
                        CuerpoCorreo                 = body,
                        AdjuntosCorreo               = "",//ruta,
                        FechaEnvioCorreo             = DateTime.Now,
                        Empresa = "",
                        Canal   = CanalNotificaciones,
                        Tipo    = "USUARIO",
                    });
                }

                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Resultado = new RespuestaTransaccion {
                                      Estado = false, Respuesta = ex.Message
                                  } }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 12
0
        public ActionResult Create(Usuario formulario)
        {
            try
            {
                //#region Búsqueda de archivos adjuntos en directorio
                //Catalogo catalogo = CatalogoDAL.ConsultarCatalogo(formulario.IdEmpresa.Value);

                ////El nombre del archivo de acumulación de décimos tiene que ser igual al código del catálogo de la empresa seleccionada.
                //string nombreArchivo = catalogo.CodigoCatalogo;

                //if (string.IsNullOrEmpty(nombreArchivo))
                //    return Json(new { Resultado = new RespuestaTransaccion { Estado = false, Respuesta = string.Format(Mensajes.MensajeErrorParametrizacionArchivoEmpresaDirectorio, catalogo) } }, JsonRequestBehavior.AllowGet);

                ////SI LA RUTA EN DISCO NO EXISTE LOS ARCHIVOS SE ALMACENAN EN LA CARPETA MISMO DEL PROYECTO
                //string rutaBase = basePathRepositorioDocumentos + "\\RRHH\\Documentos\\AcumulacionDecimos";

                //nombreArchivo += ".docx";
                //string pathServidor = Path.Combine(rutaBase, nombreArchivo);

                //if (!Directory.Exists(pathServidor))
                //    return Json(new { Resultado = new RespuestaTransaccion { Estado = false, Respuesta = string.Format(Mensajes.MensajeErrorArchivoNoEncontrado, nombreArchivo) } }, JsonRequestBehavior.AllowGet);

                //string rutaBaseDocumentosIngreso = basePathRepositorioDocumentos + "\\RRHH\\Documentos\\Otros";
                //string nombreArchivoDocumentoIngreso = "Formulario Documentos de Ingreso.xlsx";
                //string pathDocumentosIngreso = Path.Combine(rutaBaseDocumentosIngreso, nombreArchivoDocumentoIngreso);

                //if (!Directory.Exists(pathDocumentosIngreso))
                //    return Json(new { Resultado = new RespuestaTransaccion { Estado = false, Respuesta = string.Format(Mensajes.MensajeErrorArchivoNoEncontrado, nombreArchivoDocumentoIngreso) } }, JsonRequestBehavior.AllowGet);
                //#endregion

                Catalogo catalogo = CatalogoDAL.ConsultarCatalogo(formulario.IdEmpresa.Value);

                //El nombre del archivo de acumulación de décimos tiene que ser igual al código del catálogo de la empresa seleccionada.
                string nombreArchivo = catalogo.CodigoCatalogo;

                if (string.IsNullOrEmpty(nombreArchivo))
                {
                    return(Json(new { Resultado = new RespuestaTransaccion {
                                          Estado = false, Respuesta = "El código de catálogo es requerido para la empresa " + catalogo
                                      } }, JsonRequestBehavior.AllowGet));
                }

                string basePath = ConfigurationManager.AppSettings["RepositorioDocumentos"];

                //SI LA RUTA EN DISCO NO EXISTE LOS ARCHIVOS SE ALMACENAN EN LA CARPETA MISMO DEL PROYECTO
                string rutaBase = basePath + "\\RRHH\\Documentos\\AcumulacionDecimos";

                nombreArchivo += ".docx";
                string pathServidor = Path.Combine(rutaBase, nombreArchivo);

                //SI LA RUTA EN DISCO NO EXISTE LOS ARCHIVOS SE ALMACENAN EN LA CARPETA MISMO DEL PROYECTO
                string ruta = AppDomain.CurrentDomain.BaseDirectory + "Documentos/AcumulacionDecimos/" + nombreArchivo;

                // En caso de que no exista el directorio, crearlo.
                bool directorio = Directory.Exists(pathServidor);

                string rutaBaseDocumentosIngreso = AppDomain.CurrentDomain.BaseDirectory + "Documentos/Otros/";
                string pathDocumentosIngreso     = Path.Combine(rutaBaseDocumentosIngreso, "Formulario Documentos de Ingreso.xlsx");

                bool existeUsuario = UsuarioDAL.VerificarCorreoUsuarioExistente(formulario.Mail);

                //Solo registra el usuario si no existe
                if (!existeUsuario)
                {
                    Resultado = UsuarioDAL.CrearUsuario(formulario);
                }
                else
                {
                    //Si el usuario ya existe, setear el ID, para que lo tome en el envio de la notificacion
                    var usuario = UsuarioDAL.ConsultaUsuarioByEmail(formulario.Mail);
                    Resultado.EntidadID = usuario.IdUsuario;

                    Resultado.Estado    = true;
                    Resultado.Respuesta = Mensajes.MensajeBienvenidaUsuarioExistente;
                }

                //Siempre que el usuario haya sido creado con éxito.
                if (Resultado.Estado || existeUsuario)
                {
                    string enlace = GetUrlSitio(Url.Action("NuevoIngreso", "FichaIngreso", new { usuarioID = Resultado.EntidadID }));//Url.Action("NuevoIngreso", "FichaIngreso", new { usuarioID = Resultado.EntidadID }, Request.Url.Scheme);

                    string body = GetEmailTemplate("TemplateBienvenida");
                    body = body.Replace("@ViewBag.EnlaceDirecto", enlace);
                    body = body.Replace("@ViewBag.EnlaceSecundario", enlace);

                    //Adjuntar tambien el archivo de Documentos Ingreso
                    if (!string.IsNullOrEmpty(pathServidor))
                    {
                        pathServidor += ";" + pathDocumentosIngreso;
                    }

                    var notificacion = NotificacionesDAL.CrearNotificacion(new Notificaciones
                    {
                        NombreTarea                  = "Bienvenida",
                        DescripcionTarea             = "Correo de bienvenida a los nuevos usuarios que ingresan a formar parte del corporativo.",
                        NombreEmisor                 = nombreCorreoEmisor,
                        CorreoEmisor                 = correoEmisor,
                        ClaveCorreo                  = claveEmisor,
                        CorreosDestinarios           = formulario.Mail,
                        AsuntoCorreo                 = "BIENVENIDA",
                        NombreArchivoPlantillaCorreo = TemplateNotificaciones,
                        CuerpoCorreo                 = body,
                        AdjuntosCorreo               = pathServidor,//ruta,
                        FechaEnvioCorreo             = DateTime.Now,
                        //DetalleEstadoEjecucionNotificacion = string.Empty,
                        Empresa = catalogo.NombreCatalogo,
                        Canal   = CanalNotificaciones,
                        Tipo    = "BIENVENIDA",
                    });
                }

                return(Json(new { Resultado = Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Resultado = new RespuestaTransaccion {
                                      Estado = false, Respuesta = ex.Message
                                  } }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult Create(string texto)
        {
            CargaMasiva carga = new CargaMasiva();

            try
            {
                //En caso de que no haya ningún archivo cargado
                if (Request.Files.Count == 0)
                {
                    Resultado.Estado    = false;
                    Resultado.Respuesta = Mensajes.MensajeTransaccionFallida;
                    return(Json(new { error = Mensajes.MensajeErrorAdjuntosRequeridos + " Por favor, verificar el archivo.", Resultado = Resultado }, JsonRequestBehavior.AllowGet));
                }

                List <string> listadoMasivoEmails = new List <string>();

                foreach (string item in Request.Files)
                {
                    HttpPostedFileBase file     = Request.Files[item] as HttpPostedFileBase;
                    string             fileName = file.FileName;

                    string extension = Path.GetExtension(fileName);

                    if (extension != ".xlsx" && extension != ".xls")
                    {
                        Resultado.Estado    = false;
                        Resultado.Respuesta = Mensajes.MensajeTransaccionFallida;
                        return(Json(new { error = "Formato no permitido.", Resultado = Resultado }, JsonRequestBehavior.AllowGet));
                    }

                    //SI LA RUTA EN DISCO NO EXISTE LOS ARCHIVOS SE ALMACENAN EN LA CARPETA MISMO DEL PROYECTO
                    string rutaBase   = basePathRepositorioDocumentos + "\\RRHH\\ArchivosCargasMasivas";
                    bool   directorio = Directory.Exists(rutaBase);
                    // En caso de que no exista el directorio, crearlo.
                    if (!directorio)
                    {
                        Directory.CreateDirectory(rutaBase);
                    }

                    string pathServidor = Path.Combine(rutaBase, fileName);

                    if (file.ContentLength > 0)
                    {
                        file.SaveAs(pathServidor);

                        FileInfo existingFile = new FileInfo(pathServidor);

                        using (ExcelPackage package = new ExcelPackage(existingFile))
                        {
                            ExcelWorksheet worksheet = package.Workbook.Worksheets.First();

                            if (worksheet != null)
                            {
                                int colCount = worksheet.Dimension.End.Column;  //get Column Count
                                int rowCount = worksheet.Dimension.End.Row;     //get row count - Cabecera
                                for (int row = 2; row <= rowCount; row++)
                                {
                                    for (int col = 1; col <= colCount; col++)
                                    {
                                        var    error        = string.Empty;
                                        string columna      = (worksheet.Cells[1, col].Value ?? "").ToString().Trim(); // Nombre de la Columna
                                        string valorColumna = (worksheet.Cells[row, col].Value ?? "").ToString().Trim();

                                        bool mailValido = Validaciones.ValidarMail(valorColumna);

                                        //Fill errors mails
                                        if (!mailValido)
                                        {
                                            carga.Detalles.Add(new DetallesCargaMasiva {
                                                Fila = row, Columna = col, Valor = valorColumna, Error = error
                                            });
                                        }
                                        else
                                        {
                                            listadoMasivoEmails.Add(valorColumna);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                List <string> erroresValidacionGenerales = new List <string>();

                if (!carga.GetEstado())
                {
                    erroresValidacionGenerales.Add(string.Format(Mensajes.MensajeValidacionFilasInvalidas, string.Join(" , ", carga.Detalles.Select(s => s.Fila).ToList())));
                }

                //Verificar mails duplicados
                List <string> emailsDuplicados = listadoMasivoEmails.GroupBy(x => x).Where(g => g.Count() > 1).Select(y => y.Key).ToList();

                if (emailsDuplicados.Count > 0)
                {
                    erroresValidacionGenerales.Add(string.Format(Mensajes.MensajeValidacionEmailsRepetidos, string.Join(" ; ", emailsDuplicados)));
                }

                //Validación límite máximo de mails
                if (listadoMasivoEmails.Count > 2000)
                {
                    Resultado.Estado    = false;
                    Resultado.Respuesta = Mensajes.MensajeTransaccionFallida + "Límite excedido.";
                    return(Json(new { Resultado = Resultado }, JsonRequestBehavior.AllowGet));
                }

                List <Notificaciones> listadoBatchNotificaciones = new List <Notificaciones>();

                string body = GetEmailTemplate("TemplateEnviosMasivosFocus");

                int totalListado = listadoMasivoEmails.Count;

                //Filtrando en caso de haber repetidos
                listadoMasivoEmails = listadoMasivoEmails.Where(s => !emailsDuplicados.Contains(s)).ToList();

                foreach (var mail in listadoMasivoEmails)
                {
                    DateTime fechaEnvio = DateTime.Now;

                    Random rnd      = new Random();
                    int    segundos = rnd.Next(1, 150);
                    int    minutos  = 0;

                    if (totalListado >= 500 && totalListado <= 1000)
                    {
                        minutos = rnd.Next(1, 25);
                    }
                    if (totalListado > 1000 && totalListado <= 2000)
                    {
                        minutos = rnd.Next(1, 120);
                    }

                    fechaEnvio = totalListado > 50 ? fechaEnvio.AddSeconds(segundos) : fechaEnvio.AddSeconds(rnd.Next(1, 10));
                    fechaEnvio = fechaEnvio.AddMinutes(minutos);
                    fechaEnvio = fechaEnvio.AddMilliseconds(rnd.Next(1, 100));

                    listadoBatchNotificaciones.Add(new Notificaciones
                    {
                        NombreTarea                  = "Notificación Sorteos Focus Research",
                        DescripcionTarea             = "Mail de notificación de resultados de sorteos a usuario de la Empresa Focus Research.",
                        NombreEmisor                 = nombreCorreoEmisorMasivo,
                        CorreoEmisor                 = correoEmisorMasivo,
                        ClaveCorreo                  = claveEmisorMasivo,
                        CorreosDestinarios           = mail,
                        AsuntoCorreo                 = "NOTIFICACIÓN SORTEO",
                        NombreArchivoPlantillaCorreo = "MailingSorteosFocus",
                        CuerpoCorreo                 = body,
                        AdjuntosCorreo               = "",//ruta,
                        FechaEnvioCorreo             = fechaEnvio,
                        Empresa = "FOCUS RESEARCH",
                        Canal   = "MAILING MASIVO FOCUS RESEARCH",
                        Tipo    = "NOTIFICACION DE SORTEO SIMPLE",
                    });
                }

                Resultado = NotificacionesDAL.SaveInBatchNotifications(listadoBatchNotificaciones);

                if (Resultado.Estado)
                {
                    Resultado.Respuesta = Resultado.Respuesta + " " + listadoBatchNotificaciones.Count + " notificaciones preparadas para ser enviadas.";
                    Resultado.Adicional = erroresValidacionGenerales.Count > 0 ? string.Format(Mensajes.MensajeValidacionCargaMasivaMailsExitosaConErrores, string.Join(" | ", erroresValidacionGenerales.Select(s => s).ToList())) : string.Empty;
                }

                return(Json(new { Resultado }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }