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)); }
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")); }
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")); }
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)); } }
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)); } }
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)); } }
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)); } }