public ActionResult SolicitarRestaurar() { List<Mensaje> lstMensajes = (((List<Mensaje>)TempData["mensajes"]) == null) ? new List<Mensaje>() : (List<Mensaje>)TempData["mensajes"]; string usuario_login = Request["email"]; if (!string.IsNullOrWhiteSpace(usuario_login)) { try { List<Login> listado = db.Login.ToList().Where(m => m.UsuarioLogin == usuario_login).ToList(); if (listado != null) { if (listado.Count > 0) { //Elimino solicitudes previas List<Restaurar_Pass> listado_ant = db.Restaurar_Pass.ToList().Where(m => m.correo_usuario == usuario_login).ToList(); if(listado_ant != null) { foreach(Restaurar_Pass obj in listado_ant) { db.Restaurar_Pass.Remove(obj); } } //Genero una nueva clave string clave = GetRandomString(15); //Genero una clave para el correo string clave_email = CifradoDatos.cifrarRSA(usuario_login); string clave_code = CifradoDatos.cifrarRSA(clave); db.Restaurar_Pass.Add(new Restaurar_Pass { correo_usuario = usuario_login, clave = clave }); db.SaveChanges(); //Creo corrreo con clave para enviar al usuario StringBuilder bodyMail = new StringBuilder(); bodyMail.AppendLine("Se ha activado la restauración de contraseña para tu cuenta de usuario, " + usuario_login + "</br>"); string informacionHost = serverInfoCurrent(); bodyMail.AppendLine("Dirijase al siguiente enlace para continuar con el proceso. " + "<a href=\"" + informacionHost + "/Home/ValidarRestaurar?tokenCorreo=" + clave_email + "&tokenClave=" + clave_code + "\"> Restaurar contraseña perfil. </a>" + "</br>"); bodyMail.AppendLine("Fecha:" + DateTime.Now.ToString() + "</br>"); string subject = "Notificación modificación contraseña."; Mail mail = new Mail(usuario_login, subject, bodyMail); if (mail.sendMail().Result) { lstMensajes.Add(new Mensaje { tipo = "Notificacion", titulo = "Notificación", cuerpo = "Proceso finalizado exitosamente, verifique su correo electronico." }); } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "Se produjo un error mientras se enviaba el correo. Correo invalido" }); } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "El usuario no existe o se encuentra bloqueado." }); } } else { lstMensajes.Add(new Mensaje{tipo="Error", titulo="Error", cuerpo="El usuario no existe o se encuentra bloqueado."}); } } catch (Exception ex) { SystemLog log = new SystemLog(); log.ErrorLog(ex.Message); lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "Se ha producido un error mientras se generaba el formulario" }); TempData["mensajes"] = lstMensajes; } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "El usuario no existe o se encuentra bloqueado." }); } TempData["mensajes"] = lstMensajes; return RedirectToAction("Index", "Home"); }
public ActionResult UpdateRestorePassword(string nueva_contrasena) { List<Mensaje> lstMensajes = (((List<Mensaje>)TempData["mensajes"]) == null) ? new List<Mensaje>() : (List<Mensaje>)TempData["mensajes"]; try { string correo_logueo = (string)TempData["usuario_restore"]; if (!string.IsNullOrWhiteSpace(correo_logueo)) { List<Login> listado = db.Login.ToList().Where(m => m.UsuarioLogin == correo_logueo).ToList(); //Si el correo_electronico y la contrasena son validas subo a session la institucion if (listado != null) { if (listado.Count > 0) { listado[0].PasswordLogin= CifradoDatos.cifrarPassword(nueva_contrasena); db.SaveChanges(); //Obtengo ip y localizacion desde donde se realizo la modificacion object[] infoLogin = getExternalIp(); //Envio email confirmacion para habilitar el perfil StringBuilder bodyMail = new StringBuilder(); bodyMail.AppendLine("La contraseña para tu cuenta de usuario, " + listado[0].UsuarioLogin + " se ha cambiado recientemente." + "</br>"); bodyMail.AppendLine("Si la has cambiado tú, no necesitas realizar ninguna otra acción." + "</br>"); bodyMail.AppendLine("Si no la has cambiado tú, es posible que tu cuenta haya sido vulnerada. Para poder volver a iniciar sesión en tu cuenta, deberás restablecer la contraseña" + "</br>"); if (infoLogin != null) { bodyMail.AppendLine("Informacion Adicional:" + "</br>"); bodyMail.AppendLine("Pais:" + infoLogin[2].ToString() + "</br>"); bodyMail.AppendLine("Departamento:" + infoLogin[4].ToString() + "</br>"); bodyMail.AppendLine("Ciudad:" + infoLogin[5].ToString() + "</br>"); bodyMail.AppendLine("Ip Address:" + infoLogin[0].ToString() + "</br>"); } bodyMail.AppendLine("Fecha:" + DateTime.Now.ToString() + "</br>"); string subject = "Notificación modificación contraseña."; Mail mail = new Mail(correo_logueo, subject, bodyMail); if (mail.sendMail().Result) { lstMensajes.Add(new Mensaje { tipo = "Notificacion", titulo = "Notificación", cuerpo = "Contraseña modificada exitosamente." }); TempData["mensajes"] = lstMensajes; TempData.Remove("usuario_restore"); } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "Se produjo un error mientras se enviaba el correo. Correo invalido" }); } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "No posee los permisos suficientes para realizar esta operación." }); TempData["mensajes"] = lstMensajes; } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "No posee los permisos suficientes para realizar esta operación." }); TempData["mensajes"] = lstMensajes; } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "No posee los permisos suficientes para realizar esta operación." }); TempData["mensajes"] = lstMensajes; } } catch (Exception ex) { SystemLog log = new SystemLog(); log.ErrorLog(ex.Message); lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "Se ha producido un error mientras se generaba el formulario" }); TempData["mensajes"] = lstMensajes; } TempData["mensajes"] = lstMensajes; ViewBag.lstMensajes = lstMensajes; return RedirectToAction("Index", "Home"); }
public ActionResult Create([Bind(Include = "IdCita,NombrePac,Sexo,FechaNacimientoPac,EmailPac,MensajeCita,Imagen1,Imagen2,Imagen3,Imagen4,IdEspecialista,TelefonoPac")] Citas citas) { List<Mensaje> lstMensajes = (((List<Mensaje>)TempData["mensajes"]) == null) ? new List<Mensaje>() : (List<Mensaje>)TempData["mensajes"]; HttpPostedFileBase imagen1 = (Request.Files.Count > 0) ? Request.Files[0] : null; HttpPostedFileBase imagen2 = (Request.Files.Count > 1) ? Request.Files[1] : null; HttpPostedFileBase imagen3 = (Request.Files.Count > 2) ? Request.Files[2] : null; HttpPostedFileBase imagen4 = (Request.Files.Count > 3) ? Request.Files[3] : null; List<ArchivoAdjunto> listado = new List<ArchivoAdjunto>(); MemoryStream target1 = new MemoryStream(); MemoryStream target2 = new MemoryStream(); MemoryStream target3 = new MemoryStream(); MemoryStream target4 = new MemoryStream(); Especialistas especialista = db.Especialistas.Find(citas.IdEspecialista); if (especialista != null) { if (imagen1 != null) { imagen1.InputStream.CopyTo(target1); listado.Add( new ArchivoAdjunto { archivo = target1, tipo = imagen1.ContentType, nombre = imagen1.FileName } ); } if (imagen2 != null) { imagen2.InputStream.CopyTo(target2); listado.Add(new ArchivoAdjunto { archivo = target2, tipo = imagen2.ContentType, nombre = imagen2.FileName } ); } if (imagen3 != null) { imagen3.InputStream.CopyTo(target3); listado.Add(new ArchivoAdjunto { archivo = target3, tipo = imagen3.ContentType, nombre = imagen3.FileName } ); } if (imagen4 != null) { imagen4.InputStream.CopyTo(target4); listado.Add(new ArchivoAdjunto { archivo = target4, tipo = imagen4.ContentType, nombre = imagen4.FileName } ); } DateTime fn=DateTime.Now; if(citas.FechaNacimientoPac != null) { fn=Convert.ToDateTime(citas.FechaNacimientoPac.ToString()); } int edad = DateTime.Now.Year - fn.Year; //Creo corrreo con clave para enviar al usuario StringBuilder bodyMail = new StringBuilder(); bodyMail.AppendLine("<p><b>Nombre de paciente: </b>" + citas.NombrePac + "</p>"); bodyMail.AppendLine("<p><b>Sexo: </b>" + citas.Sexo + "</p>"); bodyMail.AppendLine("<p><b>Edad: </b>" + edad + "</p>"); bodyMail.AppendLine("<p><b>Telefono: </b>" + citas.TelefonoPac + "</p>"); bodyMail.AppendLine("<p><b>Email: </b>" + citas.EmailPac + "</p>"); bodyMail.AppendLine("<p><b>Mensaje: </b>" + "</p>"); bodyMail.AppendLine(citas.MensajeCita); string subject = "[Medenlinea] Solicitud de cita."; Mail mail = new Mail(especialista.EmailEsp, subject, bodyMail); if (mail.sendMailAttachments(listado).Result) { if (ModelState.IsValid) { db.Citas.Add(citas); db.SaveChanges(); lstMensajes.Add(new Mensaje { tipo = "Notificacion", titulo = "Notificacion", cuerpo = "Consulta registrada exitosamente." }); TempData["mensajes"] = lstMensajes; return RedirectToAction("Index", "Especialista"); } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "Ocurrio un problema mientras se procesaba la solicitud" }); TempData["mensajes"] = lstMensajes; } } else { lstMensajes.Add(new Mensaje { tipo = "Error", titulo = "Error", cuerpo = "No se pudo encontrar el especialista solicitado" }); TempData["mensajes"] = lstMensajes; } return RedirectToAction("Index", "Especialista"); }