示例#1
0
        public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model)
        {
            FormsAuthentication.SetAuthCookie("", false);
            if (ModelState.IsValid)
            {
                var MSG = new EnviarCorreoRecuperacionModel();
                try
                {
                    //sección del recaptcha
                    //Valido el capcha
                    if (!this.IsCaptchaValid("Captcha is not valid"))
                    {
                        ModelState.AddModelError(string.Empty, "Error: captcha no es válido.");
                    }
                    //si el captcha es valido
                    else
                    {
                        //Ejecuto los valores en el SP
                        //borrarSP_Updaterestacontra
                        var response = db.SP_ChangeContraseniaUser(model.usuario_id, model.contrasenia).First();
                        //
                        await db.SaveChangesAsync();

                        // el procedimiento envia un codigo de 201 como respuesta
                        if (response.codigo == 201)
                        {
                            //consulto el mensaje correspondiente para el esta caso
                            var msg = db.Web_Mensaje.Where(m => m.codigo.Equals(1018)).Select(m => new { codigo = m.codigo, tipo = m.tipo, mensaje = m.cuerpo }).First();
                            //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores
                            var json = JsonConvert.SerializeObject(msg, Formatting.Indented);
                            //creo un json dinamico para enviarlo a la vista
                            dynamic dynJson = JsonConvert.DeserializeObject(json);
                            //envio mensaje
                            TempData["mensaje"] = dynJson;
                            //cierro sesiones
                            FormsAuthentication.SignOut();
                            //Cargo la vista
                            return(RedirectToAction("Index"));
                        }// fin if valida response
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                            return(RedirectToAction("Index"));
                        }
                    } //fin else captcha
                }     //fin try
                catch (Exception e)
                {
                    // envio error a la api logs errores
                    //envio a la carpeta logs
                    APIS.LogsController log = new APIS.LogsController(e.ToString());
                    log.createFolder();
                    //envio error mensaje al usuario
                    ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde");
                }
            }
            //return View();
            return(Logout());
        }
示例#2
0
        public async Task <ActionResult> ViewPartialLogin(LoginViewModel model)
        {
            //Valido los campos del modelo
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Valido el capcha
            if (!this.IsCaptchaValid("Captcha is not valid"))
            {
                ModelState.AddModelError(string.Empty, "Error: captcha no es válido.");
            }
            //si el captcha es valido
            else
            {
                try
                {
                    //Ejecuto los valores
                    var response = db.SP_Ingreso_Usuario(model.Usuario, model.Password).FirstOrDefault();
                    //
                    //await db.SaveChangesAsync();
                    //
                    if (response != null && response.codigo.Equals(200))
                    {
                        var encrypter = new EasyEncrypt();
                        var obj       = db.Web_Usuario.Where(u => u.Prestador.codigo.Equals(model.Usuario)).FirstOrDefault();

                        /**/
                        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                            1,
                            obj.usuario_id.ToString(),
                            DateTime.Now,
                            DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
                            false,
                            obj.FK_usuario_rol.ToString()
                            );

                        String     Encrypt = FormsAuthentication.Encrypt(ticket);
                        HttpCookie cookie  = new HttpCookie("TIKECTCOOKIE", Encrypt);

                        //Pongo en cookie el rol del usuario para traer los datos del tablero de control
                        HttpCookie cookierol = new HttpCookie("fkrol", obj.FK_usuario_rol.ToString());

                        //
                        cookie.Expires    = DateTime.Now.AddMinutes((int)FormsAuthentication.Timeout.TotalMinutes);
                        cookierol.Expires = DateTime.Now.AddMinutes((int)FormsAuthentication.Timeout.TotalMinutes);

                        Response.Cookies.Add(cookierol);
                        Response.Cookies.Add(cookie);
                        /**/

                        return(RedirectToAction("Index", "Tablero"));
                    }
                    else if (response.codigo != 200)
                    {
                        ModelState.AddModelError(string.Empty, response.mensaje);

                        if (response.codigo == 1004)
                        {
                            var intento = db.Web_Usuario.Where(u => u.Prestador.codigo.Equals(model.Usuario)).Select(s => s.intentos_error_contrase).FirstOrDefault();
                            ModelState.AddModelError(string.Empty, string.Format("ha hecho {0} intentos de contraseña incorrecta", intento));

                            ViewBag.countPass = 1;
                        }
                    }
                    else
                    {
                        //Limpio campos
                        ModelState.Clear();
                        //envio un mensaje al usuario
                        ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde.");
                    }
                }
                catch (Exception e)
                {
                    //envio error a la api logs errores
                    //y envio a la carpeta logs
                    APIS.LogsController log = new APIS.LogsController(e.ToString());
                    log.createFolder();
                    //Limpio campos
                    ModelState.Clear();
                    //envio error mensaje al usuario
                    ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde. ");
                    //ModelState.AddModelError(string.Empty, "Estamos"+e.ToString());
                }
            }//fin else captcha

            //retorno la vista en caso de que no se efectue el regsitro
            return(View("Index", model));
        }
示例#3
0
        public async Task <ActionResult> ViewPartialLoginAdmin([Bind(Include = "Usuario,Password")] LoginViewModelAdmin model)
        {
            //Valido los campos del modelo
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Valido el capcha

            if (!this.IsCaptchaValid("Captcha is not valid"))
            {
                ModelState.AddModelError(string.Empty, "Error: captcha no es válido.");
            }
            //si el captcha es valido
            else
            {
                try
                {
                    var Password       = Crypto.SHA256(model.Password);
                    var salt           = Crypto.GenerateSalt();
                    var hashedPassword = Crypto.HashPassword(salt + Password);

                    //Ejecuto los valores
                    var response = db.SP_Ingreso_Usuario_Administrador(model.Usuario, model.Password).FirstOrDefault();
                    //
                    await db.SaveChangesAsync();

                    //
                    if (response != null && response.codigo.Equals(200))
                    {
                        var obj = db.Web_Administrador.Where(u => u.usuario.Equals(model.Usuario)).FirstOrDefault();
                        /**/
                        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, obj.administrador_id.ToString(), DateTime.Now, DateTime.Now.AddMinutes(15), true, obj.FK_web_administrador_rol.ToString());
                        String     Encrypt = FormsAuthentication.Encrypt(ticket);
                        HttpCookie cookie  = new HttpCookie("TIKECTCOOKIE", Encrypt);

                        //Pongo en cookie el rol del usuario para traer los datos del tablero de control
                        HttpCookie cookierol = new HttpCookie("fkrol", obj.FK_web_administrador_rol.ToString());

                        Response.Cookies.Add(cookierol);
                        Response.Cookies.Add(cookie);
                        /**/

                        return(RedirectToAction("Index", "Tablero"));
                    }
                    else if (response.codigo != 200)
                    {
                        ModelState.AddModelError(string.Empty, response.mensaje);
                    }
                    else
                    {
                        //Limpio campos
                        ModelState.Clear();
                        //envio un mensaje al usuario
                        ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde");
                    }
                }
                catch (Exception e)
                {
                    //envio error a la api logs errores
                    //y envio a la carpeta logs
                    APIS.LogsController log = new APIS.LogsController(e.ToString());
                    log.createFolder();
                    //Limpio campos
                    ModelState.Clear();
                    //envio error mensaje al usuario
                    ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde ");
                }
            }//fin else captcha

            //retorno la vista en caso de que no se efectue el regsitro
            return(View("IndexAdmin", model));
        }
示例#4
0
        public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                //sección del recaptcha
                //Valido el capcha
                if (!this.IsCaptchaValid("Captcha is not valid"))
                {
                    ModelState.AddModelError(string.Empty, "Error: captcha no es válido.");
                }
                //si el captcha es valido
                else
                {
                    var MSG = new EnviarCorreoRecuperacionModel();

                    try
                    {
                        //Ejecuto los valores en el SP
                        var response = db.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();
                        //almaceno cambios asincronamente
                        await db.SaveChangesAsync();

                        //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty))
                        //ModelState.AddModelError(string.Empty, "No se encontraron coincidencias, para restablecer la contraseña");
                        if (response.codigo == 200)
                        {
                            MSG.codPlantilla = 3;
                            MSG.usercorreo   = response.correousuario;
                            MSG.id           = response.codprestador;
                            MSG.token        = response.token;


                            // invoco el constructor
                            EnviarCorreoController enviocorreo = new EnviarCorreoController();
                            //llamo el metodo que realiza la acción de envio de correos
                            var postdatos = await enviocorreo.PostSendEmailRecuperacionContrasenia(MSG);

                            // valido la respuesta del metodo
                            if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult")
                            {
                                //Limpio campos
                                ModelState.Clear();
                                //consulto el mensaje correspondiente para el esta caso
                                var msg = db.Web_Mensaje.Where(m => m.codigo.Equals(1017)).Select(m => new { codigo = m.codigo, tipo = m.tipo, mensaje = m.cuerpo }).First();
                                //creo un array a partir del json devuelto por la api para tratramiento
                                var json = JsonConvert.SerializeObject(msg, Formatting.Indented);
                                //creo un json dinamico para enviarlo a la vista
                                dynamic dynJson = JsonConvert.DeserializeObject(json);
                                //envio mensaje
                                TempData["mensaje"] = dynJson;
                                return(RedirectToAction("Index", "Sesion"));
                            }
                            else
                            {
                                // si la respuesta del correo fue erronea envio respuesta a la vista
                                ModelState.AddModelError(string.Empty, "No se pudo efectuar el restablecimiento de contraseña.");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                        }
                    }//fin try
                    catch (Exception e)
                    {
                        // envio error a la api logs errores
                        //envio a la carpeta logs
                        APIS.LogsController log = new APIS.LogsController(e.ToString());
                        log.createFolder();
                        //envio error mensaje al usuario
                        ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el restablecimiento de contraseña, por favor intente mas tarde ");
                    }
                }//fin else captcha
            }
            return(View("RecuperarContrasenia", model));
        }
示例#5
0
        //[AllowAnonymous]
        public async Task <ActionResult> ValidaContraseniaExternal(validarContraseniaModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    //Ejecuto los valores en el SP
                    var response = db.SP_ValidarDatosRestablecimientoContrasenia(model.id, model.token).First();
                    //
                    await db.SaveChangesAsync();

                    //valido que el procedimiento se ejecute de manera correcta
                    if (response.codigo != 200)
                    {
                        ModelState.AddModelError(string.Empty, "El token no coincide con los datos del usuario plataforma");

                        //TODO ajustar mensaje en la bases de datos
                        var dynJson = "{\"codigo\":401,\"tipo\":\"error\",\"mensaje\":\"El token esta vencido o los datos de recuperación no coinciden con los datos del usuario registrado en la plataforma.\"}";
                        //envio mensaje
                        TempData["mensaje"] = dynJson;
                        return(RedirectToAction("Index"));
                    }
                    else if (response.codigo == 200)
                    {
                        Console.WriteLine(response);
                        //creo una session vacia para que el formulario pase
                        FormsAuthentication.SetAuthCookie("", false);
                        //creo un array a partir del json devuelto por la api para enviarlo a la vista en un ID
                        var json = JsonConvert.SerializeObject(response.idusuario, Formatting.Indented);
                        //creo un json dinamico para enviarlo a la vista
                        dynamic dynJson = JsonConvert.DeserializeObject(json);
                        ViewBag.TokenP = response.idusuario;
                        return(View("NuevaContrasenia", string.Empty));
                    }
                    else
                    {
                        // envio error a la api logs errores
                        //envio un mensaje al usuario
                        ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde");
                        AntiForgeryConfig.SuppressIdentityHeuristicChecks = true;
                        return(Logout());

                        /*FormsAuthentication.SignOut();
                         * Session.Abandon();*/
                    }
                }
                catch (Exception e)
                {
                    // envio error a la api logs errores
                    //envio a la carpeta logs
                    APIS.LogsController log = new APIS.LogsController(e.ToString());
                    log.createFolder();
                    //envio error mensaje al usuario
                    ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde");
                    //cierro session
                    return(Logout());

                    /*AntiForgeryConfig.SuppressIdentityHeuristicChecks = true;
                     * FormsAuthentication.SignOut();
                     * Session.Abandon();*/
                }
            }
            //return RedirectToAction("Index");
            return(Logout());
        }
示例#6
0
        public async Task <Object> UpdateAvatar()
        {
            //consulto que exista el folder raiz
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
                //Directory.CreateDirectory(pathimagen);
                var permisos    = new FileIOPermission(FileIOPermissionAccess.AllAccess, path);
                var permisosSET = new PermissionSet(PermissionState.None);
                permisosSET.AddPermission(permisos);
                //if (permisosSET.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet))               {                }
            }

            //consulto que exista el folder raiz
            if (Directory.Exists(path))
            {
                var permisos = new FileIOPermission(FileIOPermissionAccess.AllAccess, path);
                //var permisos2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, pathimagen);
                var permisosSET = new PermissionSet(PermissionState.None);
                permisosSET.AddPermission(permisos);
                //permisosSET.AddPermission(permisos2);
            }

            //FileIOPermission file = new FileIOPermission(PermissionState.None);
            //file.AllLocalFiles = FileIOPermissionAccess.AllAccess;

            //variables que se estan reciviendo del front
            // obtengo las variables enviadas por el formulario
            var nombreimagen = HttpContext.Current.Request.Files["avatar"];

            var idUser        = HttpContext.Current.Request.Params["usuario_id"];
            var codigousuario = HttpContext.Current.Request.Params["codigo"];
            //almaceno el path donde se guarda la imagen
            var contentType = "." + nombreimagen.ContentType.Substring(6);
            var pathguardo  = pathimagen + codigousuario + contentType;
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            //valido la información recivida del formulario
            if (String.IsNullOrEmpty(nombreimagen.FileName) && nombreimagen.ContentLength == 0)
            {
                MSG.Add(new { type = "error", value = "Debe cargar una imagen.", codigo = 0 });
            }
            //Valido que el formulario sea enviado con el formato permitido.
            else if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                //Armo mensaje y envio al cliente
                MSG.Add(new { type = "error", value = "Formato de envio no permitido", codigo = 0 });

                throw new HttpResponseException(
                          Request.CreateResponse(HttpStatusCode.UnsupportedMediaType)

                          );
            }
            else
            {
                //almaceno la información en la base de datos
                try
                {
                    var result = db.SP_UpdateAvatarUser(Int32.Parse(idUser), pathguardo).First();

                    //si la respuesta del porcedimeinto es satisfactoria realizo el almacenamiento de los archivos
                    if (result.codigo == 201)
                    {
                        //variables que almacenan temporalmente los archivos para no perderlos
                        var streamProvider = new MultipartFormDataStreamProvider(path);
                        await Request.Content.ReadAsMultipartAsync(streamProvider);

                        //carga de archivos a la carpeta
                        foreach (MultipartFileData archivo in streamProvider.FileData)
                        {
                            string fileName = "";
                            if (string.IsNullOrEmpty(archivo.Headers.ContentDisposition.FileName))
                            {
                                fileName = Guid.NewGuid().ToString();
                            }
                            fileName = archivo.Headers.ContentDisposition.FileName;
                            if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
                            {
                                fileName = fileName.Trim('"');
                            }
                            if (fileName.Contains(@"/") || fileName.Contains(@"\"))
                            {
                                fileName = Path.GetFileName(fileName);
                            }
                            if (archivo != null && fileName != "")
                            {
                                fileName = codigousuario + contentType;
                                if (File.Exists(Path.Combine(path, fileName)))
                                {
                                    File.SetAttributes(Path.Combine(path, fileName), FileAttributes.Normal);
                                    File.Replace(archivo.LocalFileName, Path.Combine(path, fileName), null);
                                    //File.SetAttributes(path, FileAttributes.Normal);*/
                                }
                                else
                                {
                                    //File.Copy(file, dest, true);
                                    File.Copy(archivo.LocalFileName, Path.Combine(path, fileName), true);
                                    File.SetAttributes(Path.Combine(path, fileName), FileAttributes.Normal);
                                    //File.SetAttributes(path, FileAttributes.Normal);*/
                                }
                            }
                        }

                        var linq1 = db.Web_Mensaje.Where(s => s.codigo == 1011).First();
                        MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = result.codigo });
                    }//fin if respuesta satisfactoria
                    else
                    {
                        //envio mensaje al usuario final
                        MSG.Add(new { type = result.tipo, value = result.mensaje, codigo = result.codigo });
                    }
                }
                catch (Exception e)
                {
                    //envio log a archivo de logs
                    LogsController log = new LogsController(e.ToString());
                    log.createFolder();
                    //MSG.Add(new { type = "error", value = e.ToString() });
                    MSG.Add(new { type = "error", value = "Estamos presentando dificultades en el momento por favor intente mas tarde" });
                } //end catch
            }     //end else

            return(Json(MSG));
        }
示例#7
0
        public async Task <ActionResult> ViewPartialRegistro(RegisterViewModel model)
        {
            //Valido los campos del modelo
            if (!ModelState.IsValid)
            {
                return(View(model));

                ViewBag.viewregis = true;
            }
            //Valido el capcha
            else if (!this.IsCaptchaValid("Captcha is not valid"))
            {
                ModelState.AddModelError(string.Empty, "Error: captcha no es válido.");
                ViewBag.viewregis = true;
            }
            //Valido si los checkbox del formulario estan chekeados
            else if (model.aceptarTerminos == false || model.aceptarTradatos == false)
            {
                ModelState.AddModelError(string.Empty, "Error: Debe aceptar los tratamientos de datos ademas de los terminos y condiciones de uso.");
                ViewBag.viewregis = true;
            }
            else
            {
                try
                {
                    int aceptarCondiciones = model.aceptarTerminos == true ? 1 : 0;
                    int aceptarTradatos    = model.aceptarTradatos == true ? 1 : 0;
                    //Ejecuto los valores en el SP
                    var response = db.SP_Registro_Usuario(model.CodPrestador, model.Email, model.Pasword, model.Nombres, model.Apellidos, model.RazonSocial, model.Telefono, "/Img/avatarsusers/avatar.png", aceptarCondiciones, 1, 1, 2, aceptarTradatos).FirstOrDefault();
                    //
                    await db.SaveChangesAsync();

                    /*if (response.Equals(string.Empty))
                     * {
                     *  response = HttpStatusCode.Accepted;
                     * }*/
                    if (response.codigo != 200)
                    {
                        //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores
                        var json = JsonConvert.SerializeObject(response, Formatting.Indented);
                        //creo un json dinamico para enviarlo a la vista
                        dynamic dynJson = JsonConvert.DeserializeObject(json);
                        ViewBag.SomeData = dynJson;
                        //ModelState.AddModelError(string.Empty, response.mensaje);
                        ViewBag.viewregis = true;
                        ModelState.AddModelError(string.Empty, "Error: Corrija el error que la alerta le esta indicando.");
                    }
                    else
                    {
                        //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores
                        var json = JsonConvert.SerializeObject(response, Formatting.Indented);
                        //creo un json dinamico para enviarlo a la vista
                        dynamic dynJson = JsonConvert.DeserializeObject(json);
                        ViewBag.SomeData = dynJson;
                    }
                }//fin try
                catch (Exception e)
                {
                    //envio error a la api logs errores
                    //envio a la carpeta logs
                    APIS.LogsController log = new APIS.LogsController(e.ToString());
                    log.createFolder();
                    //Limpio campos
                    ModelState.Clear();
                    //envio error mensaje al usuario
                    ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde.");
                    //ModelState.AddModelError(string.Empty, e.ToString());
                }
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            //return View("Index");
            return(View("Index", model));
        }
示例#8
0
        public async Task <IHttpActionResult> GetActas_Rechazos(long prerradicado)
        {
            //HttpResponse Response = HttpContext.Current.Response;
            try
            {
                string nombrefile = string.Format(@"{0}\{1}{2}{3}", directorioRechazada, "Prerrad", prerradicado, " Errores.pdf");

                NetworkConnection.Impersonate(@"SDS", @usuarioZIP, @contraseñaZIP, delegate
                {
                    var permisos2    = new FileIOPermission(FileIOPermissionAccess.AllAccess, directorioRechazada);
                    var permisosSET2 = new PermissionSet(PermissionState.None);
                    permisosSET2.AddPermission(permisos2);

                    /*if (!Directory.Exists(nombrefile))
                     * {
                     *
                     *  Response.Write(new { type = "error", value = "No se encuentran los archivos a descargar." });
                     * }*/

                    if (File.Exists(nombrefile))
                    {
                        // Create New instance of FileInfo class to get the properties of the file being downloaded
                        FileInfo myfile = new FileInfo(nombrefile);

                        // Clear the content of the response
                        Response.ClearContent();

                        // Add the file name and attachment, which will force the open/cancel/save dialog box to show, to the header
                        Response.AddHeader("Content-Disposition", "attachment; filename=" + myfile.Name.Replace(" ", ""));

                        // Add the file size into the response header
                        Response.AddHeader("Content-Length", myfile.Length.ToString());

                        // Set the ContentType
                        Response.ContentType = "application/pdf";

                        // Write the file into the response (TransmitFile is for ASP.NET 2.0. In ASP.NET 1.1 you have to use WriteFile instead)
                        Response.TransmitFile(myfile.FullName);

                        // End the response
                        Response.End();

                        // Buffer response so that page is sent
                        // after processing is complete.
                        Response.BufferOutput = true;
                    }
                    else
                    {
                        Response.Write("<script language=javascript>alert('Error: No se encuentran los archivos a descargar.');</script>");
                        throw new HttpResponseException(HttpStatusCode.BadRequest);
                        //Response.Write("<script language=javascript>alert('ERROR');</script>");
                    }
                });
            }
            catch (Exception e) {
                LogsController log = new LogsController(e.ToString());
                log.createFolder();
                //Response.Write("<script language=javascript>alert('Error: Se encontro un error en el servidor de descarga.');</script>");
                //Response.Write(new { type = "error", value = "Se encontro un error en el servidor de descarga, " + e.Message.ToString() });
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }
            await db.SaveChangesAsync();

            return(Ok(HttpStatusCode.OK));
        }
示例#9
0
        public async Task <Object> PostSendEmail(EnviarCorreoModel datos)
        {
            LinkedResource Img = new LinkedResource(ruta + "footerCorreo.png", MediaTypeNames.Image.Jpeg);

            Img.ContentId = "MyImage";
            //
            string mailimg = "<img src=cid:MyImage/>";

            //sección de arriba no funciona

            //invoco metodo que permite obtener los datos del smtp del correo
            SmtpCorreos();
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            SmtpClient client = new SmtpClient();

            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.EnableSsl      = true;
            client.Host           = Host;
            client.Port           = Puerto;//587;
            client.EnableSsl      = true;
            // setup Smtp authentication
            System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(SmtpCorreo, PassCorreo);
            client.UseDefaultCredentials = false;
            client.Credentials           = credentials;
            //can be obtained from your model
            MailMessage msg = new MailMessage();

            msg.From = new MailAddress(FromCorreo);
            msg.To.Add(new MailAddress(datos.usercorreo.ToLower()));
            //consulto el procedimiento para traer la información de la plantilla solicitada
            var result = bd.SP_GetPlantillaCorreo(datos.codPlantilla).First();

            //agrego el asunto
            msg.Subject    = result.asunto;
            msg.IsBodyHtml = true;
            string cuerpo = string.Format(result.cuerpo, datos.usernombre, datos.codigocarga, "");

            //se arma cuerpo del correo
            msg.Body = cuerpo; //string.Format(result.cuerpo, datos.usernombre, datos.codigocarga);

            try
            {
                await client.SendMailAsync(msg);

                //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1009).First();
                MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo });
            }
            catch (Exception e)
            {
                //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                //var linq1 = bd.Mensajes.Where(s => s.Codigo_mensaje == 412).First(); // SE ELIMINA NO VIABLE YA QUE SI EL ERROR ES DE BD EL APLICATIVO NO RESPONDERIA
                //MSG.Add(new { type = linq1.Tipo_mensaje, value = linq1.Cuerpo_mensaje, codigo = linq1.Codigo_mensaje });
                MSG.Add(new { type = "error", value = "El servidor no pudo responder con la solicitud, " + e, codigo = 404 });

                //envio a la tabla log
                //TODO
                //envio a la carpeta logs
                LogsController log = new LogsController(e + "//" + Host.ToString());
                log.createFolder();
            }
            return(Json(MSG));
        }
示例#10
0
        public async Task <Object> PostSendEmailErrors(EnviarCorreoModelErrors datos)
        {
            //invoco metodo que permite obtener los datos del smtp del correo
            SmtpCorreos();
            //variable para la coleccion de los errores a lsitar
            List <string> collection = new List <string>();
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            SmtpClient client = new SmtpClient();

            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.EnableSsl      = true;
            client.Host           = Host;
            client.Port           = Puerto;//587;
            // setup Smtp authentication
            System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(SmtpCorreo, PassCorreo);
            client.UseDefaultCredentials = false;
            client.Credentials           = credentials;
            //can be obtained from your model
            MailMessage msg = new MailMessage();

            msg.From = new MailAddress(FromCorreo);
            msg.To.Add(new MailAddress(datos.usercorreo.ToLower()));
            //consulto el procedimiento para traer la información de la plantilla solicitada
            var result = bd.SP_GetPlantillaCorreo(datos.codPlantilla).First();

            msg.Subject    = result.asunto;
            msg.IsBodyHtml = true;

            // Add image attachment from local disk
            //armo las filas
            foreach (string valor in datos.errores)
            {
                //if(datos.errores)
                collection.Add("<tr><td>" + valor + "</td></tr>");
            }

            //uno los errores encontrados
            string td = string.Join(" ", collection.ToArray());

            //linea para la imagen
            //LinkedResource windowsLogo = new LinkedResource(@"c:\windows_logo.png", MediaTypeNames.Image.Jpeg);
            //LinkedResource windowsLogo = new LinkedResource(@"~/img/email/footerCorreo.png", MediaTypeNames.Image.Jpeg);

            //armo el cuepo del correo
            msg.Body = string.Format(result.cuerpo, datos.usernombre, td);
            try
            {
                await client.SendMailAsync(msg);

                //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1008).First();
                MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo });
            }
            catch (Exception e)
            {
                //TODO enviar errores a la tabla de errores
                //envio a la carpeta logs
                LogsController log = new LogsController(e.ToString());
                log.createFolder();
                //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                //var linq1 = bd.Mensajes.Where(s => s.Codigo_mensaje == 412).First();
                //MSG.Add(new { type = linq1.Tipo_mensaje, value = linq1.Cuerpo_mensaje, codigo = linq1.Codigo_mensaje });
                MSG.Add(new { type = "error", value = "El servidor no pudo responder con la solicitud, " + e, codigo = 404 });
            }
            return(Json(MSG));
        }
示例#11
0
        public async Task <Object> UploadSingleFile()
        {
            //variables que se estan reciviendo del front
            // obtengo las variables enviadas por el formulario
            var tipoUsuario = HttpContext.Current.Request.Params["tipoUsuario"];
            var categoria   = HttpContext.Current.Request.Params["categoria"];
            var extranjero  = HttpContext.Current.Request.Params["extranjero"];
            var IVE         = HttpContext.Current.Request.Params["IVE"];
            var NOPOS       = HttpContext.Current.Request.Params["NOPOS"];
            var fechaInicio = HttpContext.Current.Request.Params["fechaInicio"];
            var fechaFin    = HttpContext.Current.Request.Params["fechaFin"];
            var idUsuario   = HttpContext.Current.Request.Params["idUsuario"];
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            //valido la información recivida del formulario
            if (!String.IsNullOrEmpty(tipoUsuario))
            {
                tipoUsuario = tipoUsuario;
            }

            if (!String.IsNullOrEmpty(IVE))
            {
                tipoUsuario = "1";
                categoria   = "6";
            }

            if (!String.IsNullOrEmpty(NOPOS))
            {
                /*tipoUsuario = "2";
                 * categoria = "1";*/
                tipoUsuario = "2";
                categoria   = "5";
            }
            //me toca castear xq el valor llega con un "on"
            if (!String.IsNullOrEmpty(extranjero))
            {
                extranjero = "true";
            }

            //Valido que el formulario sea enviado con el formato permitido.
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                //Armo mensaje y envio al cliente
                MSG.Add(new { type = "error", value = "Formato de envio no permitido" });

                throw new HttpResponseException(
                          Request.CreateResponse(HttpStatusCode.UnsupportedMediaType)
                          );
                //TODO envio error a la base de datos
            }

            //almaceno la información solo del formulario en la base de datos
            try
            {
                //inserto en la tabla web_validacion
                //3 es estado aprobado sin errores
                var result = bd.SP_Web_Insert_Datos_Rips_a_Validar(tipoUsuario, categoria, Convert.ToBoolean(extranjero), fechaInicio, fechaFin, idUsuario, "3").First();

                //si la respuesta del porcedimeinto de insercion a la tabla validacion, es satisfactoria realizo el almacenamiento de los archivos
                if (result.codigo == 201)
                {
                    try
                    {
                        //Inserto en la tabla web_preradicado
                        var preradicadoResult = bd.SP_Web_Insert_Rips_a_Preradicar(Convert.ToInt64(idUsuario), result.ultimoIdInsert).First();
                        //Si el SP de insert de preradicado retorno el una respuesta satisfactoria cargo el archivo
                        if (preradicadoResult.codigo == 201)
                        {
                            //intemto crear y guardar los archivos en el forlder para insertalo
                            try
                            {
                                //creo el nombre del path
                                pathresult = path + @"\" + preradicadoResult.ultimoIdInsertPreradicado;
                                //consulto que exista el folder raiz
                                if (!Directory.Exists(pathresult))
                                {
                                    Directory.CreateDirectory(pathresult);
                                    var permisos    = new FileIOPermission(FileIOPermissionAccess.AllAccess, pathresult);
                                    var permisosSET = new PermissionSet(PermissionState.None);
                                    permisosSET.AddPermission(permisos);

                                    //variables que almacenan temporalmente los archivos para no perderlos
                                    var streamProvider = new MultipartFormDataStreamProvider(path);
                                    await Request.Content.ReadAsMultipartAsync(streamProvider);

                                    using (ZipFile zip = new ZipFile())
                                    {
                                        foreach (MultipartFileData archivo in streamProvider.FileData)
                                        {
                                            string fileName = "";
                                            if (string.IsNullOrEmpty(archivo.Headers.ContentDisposition.FileName))
                                            {
                                                fileName = Guid.NewGuid().ToString();
                                            }
                                            fileName = archivo.Headers.ContentDisposition.FileName;
                                            if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
                                            {
                                                fileName = fileName.Trim('"');
                                            }
                                            if (fileName.Contains(@"/") || fileName.Contains(@"\"))
                                            {
                                                fileName = Path.GetFileName(fileName);
                                            }
                                            if (archivo != null && fileName != "")
                                            {
                                                fileName = fileName.Substring(0, 2) + ".txt";
                                                File.Move(archivo.LocalFileName, Path.Combine(pathresult, fileName));
                                            }
                                        }

                                        //comprimo los archivos
                                        //https://stackoverflow.com/questions/24391794/c-sharp-move-files-to-zip-folder
                                        zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
                                        zip.AddDirectory(pathresult);
                                        zip.Save(pathresult + ".zip");
                                        nombreZIP = pathresult + ".zip";
                                    }// FIN using zip library


                                    /**
                                     * Envio la carpeta zip al reosritotio local del servicio
                                     **/
                                    try
                                    {
                                        NetworkConnection.Impersonate(@"SDS", @usuarioZIP, @contraseñaZIP, delegate
                                        {
                                            var permisos2    = new FileIOPermission(FileIOPermissionAccess.AllAccess, directorioZIP);
                                            var permisosSET2 = new PermissionSet(PermissionState.None);
                                            permisosSET2.AddPermission(permisos2);

                                            if (!Directory.Exists(directorioZIP + @"\"))
                                            {
                                                Directory.CreateDirectory(directorioZIP + @"\");
                                            }

                                            if (File.Exists(string.Format(@"{0}\{1}.zip", directorioZIP, preradicadoResult.ultimoIdInsertPreradicado)))
                                            {
                                                File.Delete(string.Format(@"{0}\{1}.zip", directorioZIP, preradicadoResult.ultimoIdInsertPreradicado));
                                            }

                                            File.Copy(@nombreZIP, string.Format(@"{0}\{1}.zip", directorioZIP, preradicadoResult.ultimoIdInsertPreradicado));
                                        });
                                    }
                                    catch (Exception e)
                                    {
                                        //Envio al archivo log
                                        LogsController log = new LogsController(e.ToString());
                                        log.createFolder();
                                        //Envio mensaje de Error a la Vista
                                        MSG.Add(new { type = "error", value = e.Message.ToString() });
                                        throw;
                                    }

                                    /**
                                     * FIN Envio la carpeta zip al reosritotio local del servicio
                                     **/

                                    /**
                                     * libero de archivos en servidor para limpiar memoria
                                     * OJO CON ESTA LINEA: ESTA ELIMINA ARCHIVOS TEMPORALES PODRIA ELIMINAR
                                     * DE OTROS USUARIOS SEGUN RECURRENCIA DE USUARIOS
                                     **/
                                    Directory.Delete(pathresult, true);
                                }// FIN if !Directory.Exists(pathresult)
                                var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1009).First();

                                MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = preradicadoResult.codigo, consec = preradicadoResult.ultimoIdInsertPreradicado });
                            }// FIN try
                            //error al cargar en el servidor del servicio integrado de WIN
                            catch (Exception e) // si hay un error al crear y guardar el fichero cambio el estado del registro en la tabla Auditoria.Web_Validacion
                            {
                                //Cambio el estado la tabla web_preradicado a disponible
                                var UpdatepreradicadoResult = bd.SP_Web_Update_Estado_Disponible_Preradicado(result.ultimoIdInsert, preradicadoResult.ultimoIdInsertPreradicado).First();
                                //Cambio el estado la tabla web_validacion estado error de carga
                                var UpdatewebvalidacionError = bd.SP_Web_Update_Estado_Error_Carga_WebValidacion(result.ultimoIdInsert).First();

                                //envio log a archivo de logs
                                LogsController log = new LogsController(e.ToString());
                                log.createFolder();

                                /**
                                 * libero de archivos temporales
                                 * OJO CON ESTA LINEA: ESTA ELIMINA ARCHIVOS TEMPORALES PODRIA ELIMINAR
                                 * DE OTROS USUARIOS SEGUN RECURRENCIA DE USUARIOS
                                 **/
                                Directory.Delete(pathresult, true);
                                File.SetAttributes(nombreZIP, FileAttributes.Normal);
                                File.Delete(nombreZIP);
                                //Envio mensaje de error a la vista
                                MSG.Add(new { type = "error", value = "No se cargaron los archivos correctamente en el servidor, " + e.Message.ToString() });
                            }
                        }
                        else
                        {
                            MSG.Add(new { type = "error", value = "No se almaceno la informacón correctamente en la base de datos " });
                            throw new HttpResponseException(
                                      Request.CreateResponse(HttpStatusCode.UnsupportedMediaType)
                                      );
                        }
                    }
                    catch (Exception e) // si hay un error al crear y guardar el fichero cambio el estado del registro en la tabla Auditoria.Web_Validacion
                    {
                        LogsController log = new LogsController(e.ToString());
                        log.createFolder();
                        //Envio mensaje de error a la vista
                        MSG.Add(new { type = "error", value = "No se cargaron los archivos correctamente en el servidor, " + e.Message.ToString() });
                    }
                }//fin if respuesta satisfactoria
                else
                {
                    //envio mensaje al usuario final
                    MSG.Add(new { type = result.tipo, value = result.mensaje });
                }
            }
            catch (Exception e)
            {
                //Envio al archivo log
                LogsController log = new LogsController(e.ToString());
                log.createFolder();
                //Envio mensaje de Error a la Vista
                MSG.Add(new { type = "error", value = e.Message.ToString() });
            }

            return(Json(MSG));
        }
示例#12
0
        //[ValidateMimeMultipartContentFilter]
        public async Task <Object> SaveValidacionConErrores()
        {
            //variables que se estan reciviendo del front
            // obtengo las variables enviadas por el formulario
            var tipoUsuario = HttpContext.Current.Request.Params["tipoUsuario"];
            var categoria   = HttpContext.Current.Request.Params["categoria"];
            var extranjero  = HttpContext.Current.Request.Params["extranjero"];
            var IVE         = HttpContext.Current.Request.Params["IVE"];
            var NOPOS       = HttpContext.Current.Request.Params["NOPOS"];
            var fechaInicio = HttpContext.Current.Request.Params["fechaInicio"];
            var fechaFin    = HttpContext.Current.Request.Params["fechaFin"];
            var idUsuario   = HttpContext.Current.Request.Params["idUsuario"];
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            //valido la información recivida del formulario
            if (!String.IsNullOrEmpty(tipoUsuario))
            {
                tipoUsuario = tipoUsuario;
            }

            if (!String.IsNullOrEmpty(IVE))
            {
                tipoUsuario = "1";
                categoria   = "6";
            }

            if (!String.IsNullOrEmpty(NOPOS))
            {
                tipoUsuario = "2";
                categoria   = "5";
            }
            //me toca castear xq el valor llega con un "on"
            if (!String.IsNullOrEmpty(extranjero))
            {
                extranjero = "true";
            }
            //Valido que el formulario sea enviado con el formato permitido.
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                //Armo mensaje y envio al cliente
                MSG.Add(new { type = "error", value = "Formato de envió no permitido" });

                throw new HttpResponseException(
                          Request.CreateResponse(HttpStatusCode.UnsupportedMediaType)
                          );
                //TODO envio error a la base de datos
            }

            //almaceno la información en la base de datos
            try
            {
                //inserto en la tabla web_validacion
                //4 es estado con errores de estructura
                var result = bd.SP_Web_Insert_Datos_Rips_a_Validar(tipoUsuario, categoria, Convert.ToBoolean(extranjero), fechaInicio, fechaFin, idUsuario, "4").First();

                //si la respuesta del porcedimeinto de insercion a la tabla validacion, es satisfactoria realizo el almacenamiento de los archivos
                if (result.codigo == 201)
                {
                    MSG.Add(new { type = "error", value = "No se cargaran archivos con errores en el servidor, por favor ajustelos." });
                }//fin if respuesta satisfactoria
                else
                {
                    //envio mensaje al usuario final
                    MSG.Add(new { type = result.tipo, value = result.mensaje });
                }
            }
            catch (Exception e)
            {
                //envio al archivo
                LogsController log = new LogsController(e.ToString());
                log.createFolder();
                //TODO enviar a la base de datos
                MSG.Add(new { type = "Error no se pudo almacenar la información de los errores, por favor intente mas tarde." });
            }

            return(Json(MSG));
        }