/*End of User Story TAM-2.1.*/ // GET: Users/Details/5 /*Shows the details of a selected user.*/ /*Responds to User Story TAM-2.9.*/ public ActionResult Details(string username, string domain) { if (!permissionManager.IsAuthorized(Permission.VER_DETALLES_USUARIOS)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } /* Full query string is splitted into username and domain to avoid problems while sending the string to * the controller. Ex: username: john.doe@mail, domain: .com*/ string id = username + domain; if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } /*To view the details of a selected user, first fetch the user and its associated person in the database.*/ Persona persona = db.Persona.Find(id); Usuario usuario = db.Usuario.Find(id); /*Then, join these entities into "usuarioPersona" and send this object to the view.*/ UsuarioPersona usuarioPersona = new UsuarioPersona(); usuarioPersona.Usuario = usuario; usuarioPersona.Persona = persona; if (persona == null || usuario == null) { return(HttpNotFound()); } return(View("Details", usuarioPersona)); }
// GET: Chat public ActionResult Index(long encuentro_id) { TallerIVDbContext db = new TallerIVDbContext(); BaseService <Encuentro> encuentroService = new BaseService <Encuentro>(db); BaseService <UsuarioPersona> usuariosService = new BaseService <UsuarioPersona>(db); Encuentro encuentro = encuentroService.GetById(encuentro_id); string userid = this.User.Identity.GetUserId(); UsuarioPersona usuario = usuariosService.GetAll().FirstOrDefault(x => x.Id == userid); ViewBag.Name = usuario.Nombre; ViewBag.UserId = userid; return(View(encuentro)); }
public static UsuarioPersona getUsuarioPersona(long id) { UsuarioPersona usuario = new UsuarioPersona { Nombre = "Carlos", ApePat = "Tapia Cornejo", RazonSocial = "Carlos Tapia Cornejo", Correo = "*****@*****.**", Telefono = "930274827", Direccion = "Av. Francisco Mostajo 502", Documento = "73228518" }; return(usuario); }
public List <Encuentro> GetEncuentrosConcretadosPorUsuario(string userid) { List <Encuentro> listadoEncuentros; IQueryable <Encuentro> queryEncuentros = this.GetAll().Where(x => x.Mensajes.Any()); UsuarioPersona usuario = usuarioPersonaService.GetAll().FirstOrDefault(x => x.Id == userid); if (usuario is UsuarioEmpleado) { listadoEncuentros = queryEncuentros.Where(x => x.UsuarioEmpleado_Id == userid).ToList(); } else { listadoEncuentros = queryEncuentros.Where(x => x.UsuarioReclutador_Id == userid).ToList(); } return(listadoEncuentros); }
/*End of User Story TAM-2.2.*/ // GET: Users/Edit/5 /*Functions to edit a selected user account.*/ /*Respond to User Story 2.4.*/ public ActionResult Edit(string username, string domain) { if (!permissionManager.IsAuthorized(Permission.EDITAR_USUARIOS)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } string id = username + domain; if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } /*To create a joint view of User and Person, first is necessary to look for the person and the user separately.*/ Persona persona = db.Persona.Find(id); Usuario usuario = db.Usuario.Find(id); /*Then these entities get together in the model "UsuarioPersona" to make the CRUD operations easier over * these objects.*/ UsuarioPersona usuarioPersona = new UsuarioPersona(); usuarioPersona.Persona = persona; usuarioPersona.Usuario = usuario; if (persona == null || usuario == null) { return(HttpNotFound()); } ViewBag.Correo = new SelectList(db.Estudiante, "Correo", "Carne", persona.Correo); ViewBag.Correo = new SelectList(db.Funcionario, "Correo", "Correo", persona.Correo); ViewBag.Usuario = new SelectList(db.Usuario, "Username", "Password", persona.Usuario); /*Saves the current user being edited's mail, to search in the database with this key in case of changing it.*/ System.Web.HttpContext.Current.Application["CurrentEditingUser"] = usuarioPersona.Usuario.Username; /*Return the joint view of the selected User and Person as one plain entity.*/ return(View("Edit", usuarioPersona)); }
public ActionResult Edit(UsuarioPersona usuarioPersona) { if (!permissionManager.IsAuthorized(Permission.EDITAR_USUARIOS)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } if (!this.ValidateInputFields(usuarioPersona.Persona)) { return(View(usuarioPersona)); } if (ModelState.IsValid && usuarioPersona != null && usuarioPersona.Persona != null || usuarioPersona.Usuario != null) { /*To edit an user, first fetch it from the database using the stored email in the other edit function.*/ using (var db = new DataIntegradorEntities()) { string formerUserMail = (string)System.Web.HttpContext.Current.Application["CurrentEditingUser"]; var originalUser = db.Usuario.SingleOrDefault(u => u.Username == formerUserMail); if (originalUser != null && usuarioPersona != null && usuarioPersona.Usuario != null) { originalUser.Activo = usuarioPersona.Usuario.Activo; db.SaveChanges(); /*TO-DO: Stored procedure to change the password of a given user. Need to recalculate the "salt" and the SHA 256.*/ } /*To edit a person, first fetch him from the database using the email passed by the view.*/ var originalPerson = db.Persona.SingleOrDefault(p => p.Correo == formerUserMail); bool mailChanged = formerUserMail != usuarioPersona.Persona.Correo ? true : false; if (originalPerson != null && usuarioPersona != null && usuarioPersona.Persona != null) { if (mailChanged) { /*Si el usuario al que se le está modificando el correo no está con la sesión iniciada, adelante.*/ if (db.UsuarioActual.Find(originalPerson.Correo) == null) { /*Stored procedure to change the mail of a given person*/ ObjectParameter modResult = new ObjectParameter("resultado", typeof(bool)); try { db.ModificarCorreo(originalPerson.Correo, usuarioPersona.Persona.Correo, modResult); } catch (Exception exception) { ModelState.AddModelError("Persona.Correo", "Ocurrió un error al modificar el correo. Intente de nuevo."); return(View(usuarioPersona)); } bool modificationResult = (bool)modResult.Value; /*No pudo modificarse el correo por ya estar en la base de datos*/ if (modificationResult == false) { ModelState.AddModelError("Persona.Correo", "Ya existe un usuario en el sistema con este correo."); return(View(usuarioPersona)); } } /*De lo contrario, no se puede modificar hasta que cierre la sesión.*/ else { ModelState.AddModelError("Persona.Correo", "No se puede modificar el correo de este usuario mientras tenga la sesión iniciada."); return(View(usuarioPersona)); } } originalPerson = db.Persona.SingleOrDefault(p => p.Correo == usuarioPersona.Persona.Correo); /*Updates each editable field of the selected user, and then stores the data back to the DB.*/ originalPerson.Nombre1 = usuarioPersona.Persona.Nombre1; originalPerson.Nombre2 = usuarioPersona.Persona.Nombre2; originalPerson.Apellido1 = usuarioPersona.Persona.Apellido1; originalPerson.Apellido2 = usuarioPersona.Persona.Apellido2; originalPerson.CorreoAlt = usuarioPersona.Persona.CorreoAlt; originalPerson.TipoIdentificacion = usuarioPersona.Persona.TipoIdentificacion; originalPerson.Identificacion = usuarioPersona.Persona.Identificacion; //Si hay un cambio en el Carne entonces agregar el atributo Estudiante a la persona original para poder editarlo if (usuarioPersona.Persona.Estudiante.Carne != null) { if (originalPerson.Estudiante == null) { originalPerson.Estudiante = new Estudiante(); } originalPerson.Estudiante.Correo = usuarioPersona.Persona.Correo; originalPerson.Estudiante.Carne = usuarioPersona.Persona.Estudiante.Carne; } else if (originalPerson.Estudiante != null) { originalPerson.Estudiante.Carne = null; } ViewBag.resultmessage = "Los cambios han sido guardados"; db.SaveChanges(); } else { ViewBag.resultmessage = "No se pudo guardar los cambios"; } } } else { ViewBag.resultmessage = "No se pudo guardar los cambios"; } /*Since the joint view "UsuarioPersona" is not a database entity, we have to rebuild the view, to show * the changes made in the view.*/ string originalMail = (string)System.Web.HttpContext.Current.Application["CurrentEditingUser"]; string mailToSearch = usuarioPersona.Persona.Correo == null ? originalMail : usuarioPersona.Persona.Correo; /*Searches the user and person tuples associated to the edited user.*/ Usuario usuarioEdited = db.Usuario.Find(mailToSearch); Persona personaEdited = db.Persona.Find(mailToSearch); /*Joins the tuples in the UsuarioPersona object to be shown in the view.*/ UsuarioPersona usuarioPersonaRefreshed = new UsuarioPersona(); usuarioPersonaRefreshed.Persona = personaEdited; usuarioPersonaRefreshed.Usuario = usuarioEdited; /*Removes the temporal stored mail, saved in the first Edit() funcion.*/ //System.Web.HttpContext.Current.Application.Remove("CurrentEditingUser"); System.Web.HttpContext.Current.Application["CurrentEditingUser"] = mailToSearch; return(View(usuarioPersonaRefreshed)); }
public void EditChangesSavedWrongCarne() { var personas = new List <Persona> { new Persona() { Correo = "*****@*****.**", Identificacion = "123456781231", Apellido1 = "Fake1", Nombre1 = "Fake", TipoIdentificacion = "Cédula" } }.AsQueryable(); var mockDbSet = new Mock <DbSet <Persona> >(); mockDbSet.As <IQueryable <Persona> >().Setup(m => m.Provider).Returns(personas.Provider); mockDbSet.As <IQueryable <Persona> >().Setup(m => m.Expression).Returns(personas.Expression); mockDbSet.As <IQueryable <Persona> >().Setup(m => m.ElementType).Returns(personas.ElementType); mockDbSet.As <IQueryable <Persona> >().Setup(m => m.GetEnumerator()).Returns(personas.GetEnumerator()); var usuarios = new List <Usuario> { new Usuario() { Activo = true } }.AsQueryable(); var mockDbSetUsuario = new Mock <DbSet <Usuario> >(); mockDbSetUsuario.As <IQueryable <Usuario> >().Setup(m => m.Provider).Returns(usuarios.Provider); mockDbSetUsuario.As <IQueryable <Usuario> >().Setup(m => m.Expression).Returns(usuarios.Expression); mockDbSetUsuario.As <IQueryable <Usuario> >().Setup(m => m.ElementType).Returns(usuarios.ElementType); mockDbSetUsuario.As <IQueryable <Usuario> >().Setup(m => m.GetEnumerator()).Returns(usuarios.GetEnumerator()); var myMockedObjectResult = new Mock <ObjectResult <int> >(); Persona persona = new Persona(); persona.Correo = "*****@*****.**"; persona.Nombre1 = "Test"; persona.Apellido1 = "Nuevo"; persona.TipoIdentificacion = "Cédula"; persona.Identificacion = "120540707"; persona.Estudiante = new Estudiante(); persona.Estudiante.Carne = "B1234"; Usuario usuario = new Usuario { Activo = true }; UsuarioPersona usuarioPersona = new UsuarioPersona { Persona = persona, Usuario = usuario }; ObjectParameter parameter = new ObjectParameter("result", typeof(bool)); var database = new Mock <DataIntegradorEntities>(); database.Setup(m => m.Persona).Returns(mockDbSet.Object); database.Setup(m => m.Usuario).Returns(mockDbSetUsuario.Object); database.Setup(m => m.ModificarCorreo(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <ObjectParameter>())).Callback <string, string, ObjectParameter>((a, b, c) => { c.Value = false; }); CurrentUser.setCurrentUser("*****@*****.**", "Superusuario", "0000000001", "0000000001"); UsersController controller = new UsersController(database.Object); var result = controller.Edit(usuarioPersona) as ViewResult; Assert.IsNotNull(result); CurrentUser.deleteCurrentUser("*****@*****.**"); }