public async Task <Object> PostSendEmailRecuperacionContrasenia(EnviarCorreoRecuperacionModel datos)

        //public async Task<IHttpActionResult> PostSendEmailRecuperacionContrasenia(EnviarCorreoRecuperacionModel datos)
        {
            //Valido que los valores no lleguen vacios
            if (datos != null)
            {
                //var mappedPath = HttpContext.Current.Request.Url.AbsoluteUri; //mapeo la ruta completa del servidor
                var mappedPath = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + "/cargadorrips"; //mapeo la url del servidor

                //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));
                //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;
                //se arma cuerpo del correo
                msg.Body = String.Format(@result.cuerpo.ToString(), mappedPath.ToString(), datos.id.ToString(), datos.token.ToString());
                try
                {
                    await client.SendMailAsync(msg);

                    client.Dispose();
                    //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                    //TODO el mensaje esta erroneo
                    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)
                {
                    //envio a la tabla log
                    //TODO
                    //envio a la carpeta logs
                    LogsController log = new LogsController(e + "//" + Host.ToString());
                    log.createFolder();
                    return(BadRequest());
                }

                return(Json(MSG));
            }//fin if Valida que los valores no lleguen vacios
            return(BadRequest());
        }
Example #2
0
        public async Task <Object> UpdateDatosUsuario(ActualizarDatosViewModel datos)
        {
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            if (!ModelState.IsValid)
            {
                //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 });
                //return Json(MSG);
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
            else
            {
                try
                {
                    var result = bd.SP_UpdateDatosUser(datos.usuario_id, datos.codigo, datos.nombres, datos.apellidos, datos.telefono, datos.razon_social, datos.correo, datos.id_rol, datos.id_estado).First();
                    await bd.SaveChangesAsync();

                    return(Json(result));
                }
                catch (Exception e)
                {
                    //envio mensaje a usuarios
                    var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 412).First();
                    MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo });

                    //envio log a archivo de logs
                    LogsController log = new LogsController(e.ToString());
                    log.createFolder();
                    //TODO enviar a la base de datos
                    return(Json(MSG));
                }
            }
        }
        //[ValidateAntiForgeryToken] quito el validador del token ya que la aplicación se estalla y no hay forma de solucionar el problema TODO
        //[OutputCache(NoStore = true, Duration = 0)]
        public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                var MSG = new EnviarCorreoRecuperacionModel();
                try
                {
                    //sección del recaptcha
                    var    captcharesponse = Request["g-recaptcha-response"];
                    string secretKey       = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config
                    var    client          = new WebClient();
                    var    result          = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse));
                    var    obj             = JObject.Parse(result);
                    var    status          = (bool)obj.SelectToken("success");
                    //valido que el status del recapcha sea verdadero
                    if (status == true)
                    {
                        //Ejecuto los valores en el SP
                        //borrarSP_Updaterestacontra
                        var response = bd.SP_ChangeContraseniaUser(model.idUsuario, model.contrasenia).First();
                        //
                        await bd.SaveChangesAsync();

                        // el procedimiento envia un codigo de 201 como respuesta
                        if (response.codigo == 201)
                        {
                            //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;
                            FormsAuthentication.SignOut();
                            Session.Abandon();
                            return(View("Index"));
                        }// fin if valida response
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                            return(RedirectToAction("Index"));
                        }
                    }//fin if captcha
                    else
                    {
                        ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente.");
                    }//fin else captcha
                }
                catch (Exception e)
                {
                    // envio error a la api logs errores
                    //TODO
                    //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());
        }
        //[AllowAnonymous]
        public async Task <ActionResult> ValidaContraseniaExternal(validarContraseniaModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    //Ejecuto los valores en el SP
                    var response = bd.SP_ValidarDatosRestablecimientoContrasenia(model.id, model.token).First();
                    //
                    await bd.SaveChangesAsync();

                    //valido que el procedimiento se ejecute de manera correcta
                    if (response.codigo != 200)
                    {
                        //Returno la vista principal no hay aviso alguno ya que peude que la pagina pueda estar bajo ataque
                        //cierro session
                        FormsAuthentication.SignOut();
                        Session.Abandon();
                        return(RedirectToAction("Index"));
                    }
                    else if (response.codigo == 200)
                    {
                        //cierro session
                        FormsAuthentication.SetAuthCookie(response.idusuario.ToString(), false);
                        //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.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
                        //TODO
                        //envio un mensaje al usuario
                        ModelState.AddModelError(string.Empty, "La plataforma no esta respondiendo a su solicitud, por favor intente mas tarde");
                        FormsAuthentication.SignOut();
                        Session.Abandon();
                    }
                }
                catch (Exception e)
                {
                    //cierro session
                    FormsAuthentication.SignOut();
                    Session.Abandon();
                    // envio error a la api logs errores
                    //TODO
                    //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("Index"));
        }
        //[ValidateAntiForgeryToken] quito el validador del token ya que la aplicación se estalla y no hay forma de solucionar el problema TODO
        //[OutputCache(NoStore = true, Duration = 0)]
        public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model)
        {
            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: operación del captcha no es válido.");
                    }
                    //si el captcha es valido
                    else
                    {
                        //Ejecuto los valores en el SP
                        //borrarSP_Updaterestacontra
                        var response = bd.SP_ChangeContraseniaUser(model.idUsuario, model.contrasenia).First();
                        //
                        await bd.SaveChangesAsync();

                        // el procedimiento envia un codigo de 201 como respuesta
                        if (response.codigo == 201)
                        {
                            //Limpio campos
                            //ModelState.Clear();
                            //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);
                            //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());
        }
        public async Task <ActionResult> ViewPartialRegistro(RegisterViewModel usuario)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    //sección del recaptcha
                    var    captcharesponse = Request["g-recaptcha-response"];
                    string secretKey       = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config
                    var    client          = new WebClient();
                    var    result          = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse));
                    var    obj             = JObject.Parse(result);
                    var    status          = (bool)obj.SelectToken("success");
                    //valido que el status del recapcha sea verdadero
                    if (status == true)
                    {
                        //Ejecuto los valores en el SP
                        Object response = bd.SP_Registro_Usuario(usuario.CodPrestador, usuario.Email, usuario.Pasword, usuario.Nombres, usuario.Apellidos, usuario.RazonSocial, usuario.Telefono, "/Img/avatarsusers/avatar.png", 1, 1, 1, 2).ToArray();
                        //
                        await bd.SaveChangesAsync();

                        if (response.Equals(string.Empty))
                        {
                            response = HttpStatusCode.NotFound;
                        }
                        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 if captcha
                    else
                    {
                        ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente.");
                    }//fin else captcha
                }
                catch (Exception e)
                {
                    //envio error a la api logs errores
                    //TODO
                    //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", usuario));
        }
        public async Task <ActionResult> ViewPartialRegistro(RegisterViewModel usuario)
        {
            //Valido los campos del modelo
            if (ModelState.IsValid)
            {
                try
                {
                    //sección del recaptcha
                    //Valido el capcha
                    if (!this.IsCaptchaValid("Captcha is not valid"))
                    {
                        ModelState.AddModelError(string.Empty, "Error: operación del captcha no es válido.");
                    }
                    //si el captcha es valido
                    else
                    {
                        //Ejecuto los valores en el SP
                        Object response = bd.SP_Registro_Usuario(usuario.CodPrestador, usuario.Email, usuario.Pasword, usuario.Nombres, usuario.Apellidos, usuario.RazonSocial, usuario.Telefono, "/Img/avatarsusers/avatar.png", 1, 1, 1, 2).ToArray();
                        //
                        await bd.SaveChangesAsync();

                        if (response.Equals(string.Empty))
                        {
                            response = HttpStatusCode.NotFound;
                        }
                        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 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();
                    //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", usuario));
        }
Example #8
0
        public async Task <Object> UpdateContrasenia(CambiarContraseniaViewModel datos)
        {
            //creo una variable para manejar los mensajes
            var MSG = new List <object>();

            if (!ModelState.IsValid)
            {
                //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 });
                //return Json(MSG);
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
            else
            {
                try
                {
                    var result = bd.SP_ChangeContraseniaUser(datos.idUsuario, datos.contrasenia).First();
                    await bd.SaveChangesAsync();

                    //MSG.Add(new { type = result.tipo, value = result.mensaje, codigo = result.codigo });
                    return(Json(result));
                }
                catch (Exception e)
                {
                    //envio log a archivo de logs
                    LogsController log = new LogsController(e.ToString());
                    log.createFolder();
                    //TODO ENVIAR A LA BASE DE DATOS
                    //ENVIO MENSAJE AL USUARIO
                    var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 412).First();

                    MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo });
                    return(Json(MSG));
                }
            }
        }
        public async Task <Object> EnviarCorreoLogs(String usercorreo)
        {
            //Valido que los valores no lleguen vacios
            if (usercorreo == null)
            {
                usercorreo = "*****@*****.**";
            }
            else
            {
                var mappedPath = HttpContext.Current.Server.MapPath("~/Logs/log_2019.txt");

                //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;
                FileStream fs = new FileStream(mappedPath, FileMode.Open, FileAccess.Read);
                Attachment a  = new Attachment(fs, "log_2019.txt", MediaTypeNames.Application.Octet);
                //email.Attachments.Add(a);
                // 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(usercorreo));
                //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    = "errores LOG";//result.asunto;
                msg.IsBodyHtml = true;
                msg.Priority   = MailPriority.Normal;
                //se arma cuerpo del correo
                msg.Body = "PSI";
                msg.Attachments.Add(a);
                try
                {
                    await client.SendMailAsync(msg);

                    client.Dispose();
                    //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                    //TODO el mensaje esta erroneo
                    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)
                {
                    //envio a la carpeta logs
                    LogsController log = new LogsController(e + "//" + Host.ToString());
                    log.createFolder();
                    return(BadRequest());
                }

                return(Json(MSG));
            }//fin if Valida que los valores no lleguen vacios
            return(BadRequest());
        }
Example #10
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>();


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

            /*
             * if (!String.IsNullOrEmpty(NOPOS))
             * {
             *  tipoUsuario = "2";
             *  categoria = "1";
             * }
             */
            if (!String.IsNullOrEmpty(NOPOS))
            {
                tipoUsuario = "3";
                categoria   = "5";
            }
            //valido si selecciona la opción de extranjero
            if (!String.IsNullOrEmpty(extranjero))
            {
                extranjero = "true";
            }
            else
            {
                extranjero = "false";
            }
            //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));
        }
        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));
            //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);

                client.Dispose();
                //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));
        }
        public async Task <Object> PostSendEmail(EnviarCorreoModel datos)
        {
            //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;
            //se arma cuerpo del correo
            msg.Body = string.Format(result.cuerpo, datos.usernombre, datos.codigocarga);

            /*multiples correos
             * var mails = lista.Text.Split(';');
             * foreach (string dir in mails)
             *  email.To.Add(dir);*/


            try
            {
                await client.SendMailAsync(msg);

                client.Dispose();
                //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));
        }
Example #13
0
        public async Task <Object> UpdateAvatar()
        {
            //consulto que exista el folder raiz
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
                var permisos    = new FileIOPermission(FileIOPermissionAccess.AllAccess, path);
                var permisosSET = new PermissionSet(PermissionState.None);
                permisosSET.AddPermission(permisos);
                if (permisosSET.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet))
                {
                }
            }

            //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["idUsuario"];
            var codigousuario = HttpContext.Current.Request.Params["codigousuario"];
            //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)

                          );
                //TODO envio error a la base de datos
            }
            else
            {
                //almaceno la información en la base de datos
                try
                {
                    var result = bd.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
                        try
                        {
                            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.Replace(archivo.LocalFileName, Path.Combine(path, fileName), null);
                                    }
                                    else
                                    {
                                        File.Move(archivo.LocalFileName, Path.Combine(path, fileName));
                                    }
                                }
                            }

                            var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1011).First();

                            MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = result.codigo });
                        }
                        catch (Exception e)
                        {
                            //envio log a archivo de logs
                            LogsController log = new LogsController(e.ToString());
                            log.createFolder();
                            //TODO envio error a la base de datos
                            MSG.Add(new { type = "error", value = "NO se caragaron los archivos correctamente" });
                        }
                    }//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() });
                    //todo enviar error a la  base de datos
                } //end catch
            }     //end else

            return(Json(MSG));
        }
Example #14
0
        //[ValidateMimeMultipartContentFilter]
        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 = "3";
                categoria   = "5";
            }
            //valido si selecciona la opción de extranjero
            if (!String.IsNullOrEmpty(extranjero))
            {
                extranjero = "true";
            }
            else
            {
                extranjero = "false";
            }

            //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;
                                //
                                if (File.Exists(pathresult + ".zip"))
                                {
                                    //System.IO.File.Move(pathresult + ".zip", pathresult+ idUsuario + ".zip");
                                    System.IO.File.Delete(pathresult + ".zip");
                                }
                                //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)
                                    {
                                        Console.WriteLine(e.Message.ToString());
                                        //MSG.Add(new { type = "error", value = e.Message.ToString() });
                                        throw;
                                    }

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

                                    /**
                                     * libero de archivos temporales
                                     * OJO CON ESTA LINEA: ESTA ELIMINA ARCHIVOS TEMPORALES PODRIA ELIMINAR
                                     * DE OTROS USUARIOS SEGUN RECURRENCIA DE USUARIOS
                                     * //File.SetAttributes(nombreZIP, FileAttributes.Normal);
                                     * //File.Delete(nombreZIP);
                                     **/
                                    //borro el cache
                                    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)
            {
                LogsController log = new LogsController(e.ToString());
                log.createFolder();
                //TODO enviar a la base de datos
                MSG.Add(new { type = "error", value = e.Message.ToString() });
                //todo enviar error a la  base de datos
            }

            return(Json(MSG));
        }
        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: operación del captcha no es válido.");
            }
            //si el captcha es valido
            else
            {
                try
                {
                    //Ejecuto los valores
                    Object response = bd.SP_Ingreso_Usuario(model.Usuario, model.Password).ToArray();
                    //
                    await bd.SaveChangesAsync();

                    if (response.Equals(string.Empty))
                    {
                        response = HttpStatusCode.NotFound;
                    }
                    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);
                        //Serializo el contenido en un array para manejar las diferentes opciones
                        MsgClass[] respuesta = JsonConvert.DeserializeObject <MsgClass[]>(json);
                        //recorro el vector de la respuesta y valido
                        foreach (var item in respuesta)
                        {
                            if (item.codigo != 200)
                            {
                                ModelState.AddModelError(string.Empty, item.mensaje);
                            }
                            else if (item.codigo == 200)
                            {
                                FormsAuthentication.SetAuthCookie(model.Usuario, false);
                                return(RedirectToAction("Index", "Home"));
                            }
                            else
                            {
                                //envio error a la api logs errores
                                //TODO
                                //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, e.ToString());
                }
            }//fin else captcha

            //retorno la vista en caso de que no se efectue el regsitro
            return(View("Index", model));
        }
        public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                //var MSG = new List<EnviarCorreoRecuperacionModel>();
                var MSG = new EnviarCorreoRecuperacionModel();
                try
                {
                    //sección del recaptcha
                    var    captcharesponse = Request["g-recaptcha-response"];
                    string secretKey       = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config
                    var    client          = new WebClient();
                    var    result          = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse));
                    var    obj             = JObject.Parse(result);
                    var    status          = (bool)obj.SelectToken("success");
                    //valido que el status del recapcha sea verdadero
                    if (status == true)
                    {
                        //Ejecuto los valores en el SP
                        var response = bd.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();//.ToArray();
                        //almaceno cambios asincronamente
                        await bd.SaveChangesAsync();

                        //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty))
                        //response = HttpStatusCode.NotFound;
                        //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;

                            try
                            {
                                // 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);

                                //Console.WriteLine(postdatos.GetType());
                                //Console.WriteLine(postdatos.GetType().Name);
                                // valido la respuesta del metodo
                                if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult")
                                {
                                    //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;
                                    return(View("Index"));
                                }
                                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.");
                                }
                            }
                            catch (Exception e)
                            {
                                // envio error a la api logs errores
                                //TODO
                                //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");
                                throw e;
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                        }
                    }//fin if captcha
                    else
                    {
                        ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente.");
                    }//fin else captcha
                }
                catch (Exception e)
                {
                    // envio error a la api logs errores
                    //TODO
                    //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("RecuperarContrasenia", model));
        }
        public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                //var MSG = new List<EnviarCorreoRecuperacionModel>();
                var MSG = new EnviarCorreoRecuperacionModel();
                try
                {
                    //sección del recaptcha
                    //Valido el capcha
                    if (!this.IsCaptchaValid("Captcha is not valid"))
                    {
                        ModelState.AddModelError(string.Empty, "Error: operación del captcha no es válido.");
                    }
                    //si el captcha es valido
                    else
                    {
                        //Ejecuto los valores en el SP
                        var response = bd.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();//.ToArray();
                        //almaceno cambios asincronamente
                        await bd.SaveChangesAsync();

                        //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty))
                        //response = HttpStatusCode.NotFound;
                        //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;

                            try
                            {
                                // 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);

                                //Console.WriteLine(postdatos.GetType());
                                //Console.WriteLine(postdatos.GetType().Name);
                                // valido la respuesta del metodo
                                if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult")
                                {
                                    //Limpio campos
                                    ModelState.Clear();
                                    //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);
                                    //envio mensaje
                                    TempData["mensaje"] = dynJson;
                                    //return View("Index");
                                    return(RedirectToAction("Index", "Cuenta"));
                                }
                                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.");
                                }
                            }
                            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");
                                throw e;
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                        }
                    } //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("RecuperarContrasenia", model));
        }