/*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));
        }
Пример #2
0
        // 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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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("*****@*****.**");
        }