Ejemplo n.º 1
0
        public async Task <ActionResult> Registro(RegisterViewModel model, FormCollection form, Guid[] especialidades_id)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, FullName = model.FullName
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    string rolname = form["RoleName"];
                    result = UserManager.AddToRole(user.Id, rolname); //registro de usuario al rol https://www.codeproject.com/Questions/808785/Adding-user-to-role-upon-registration-mvc //

                    if (!rolname.Equals("Admin"))
                    {
                        Persona persona = new Persona
                        {
                            Persona_id = Guid.NewGuid(),
                            Email      = user.Email = user.Email,
                            Nombre     = user.FullName,
                            Id_usuario = user.Id,
                            Rol        = rolname,
                            Genero     = true
                        };

                        foreach (var id_guid in especialidades_id)
                        {
                            PersonaEspecialidad personaEspecialidad = new PersonaEspecialidad
                            {
                                PersonaEspecialidad_id = Guid.NewGuid(),
                                Especialidad           = context.ListaEspecialidades.Find(id_guid),
                                Persona = persona
                            };
                            context.PersonaEspecialidad.Add(personaEspecialidad);
                            persona.Especialidades.Add(personaEspecialidad);
                        }
                        context.Persona.Add(persona);
                    }
                    //registro de informacion a persona
                    context.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                AddErrors(result);
                ViewBag.Roles = context.Roles.Select(r => new SelectListItem {
                    Value = r.Name, Text = r.Name
                }).ToList();
                ViewBag.Especialidad = context.ListaEspecialidades.ToList();
                return(View(model));
            }
            ViewBag.Roles = context.Roles.Select(r => new SelectListItem {
                Value = r.Name, Text = r.Name
            }).ToList();
            ViewBag.Especialidad = context.ListaEspecialidades.ToList();
            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return(View(model));
        }
Ejemplo n.º 2
0
        public JsonResult Crear(string[] alumnos, string id_listaEspecialidades)
        {
            string[]      alumnos_noRepeat = alumnos;
            ResponseModel responseModel    = new ResponseModel();

            if (alumnos != null)
            {
                alumnos_noRepeat = alumnos.Distinct <String>().ToArray();
            }


            if (alumnos != null && !String.IsNullOrEmpty(id_listaEspecialidades))
            {
                var personas = db.Persona.Where(r => r.Rol.Equals("Alumno")).ToList();
                foreach (var id in alumnos_noRepeat)
                {
                    var comp = personas.Where(n => n.Numero_control.Equals(id)).FirstOrDefault();
                    if (comp == null && !String.IsNullOrEmpty(id) && !String.IsNullOrWhiteSpace(id))
                    {
                        Persona model = new Persona
                        {
                            Persona_id       = Guid.NewGuid(),
                            Rol              = "Alumno",
                            Nombre           = " ",
                            Apellido_materno = " ",
                            Apellido_paterno = " ",
                            Numero_control   = id,
                            Genero           = true
                        };
                        PersonaEspecialidad personaEspecialidad = new PersonaEspecialidad
                        {
                            PersonaEspecialidad_id = Guid.NewGuid(),
                            Especialidad           = db.ListaEspecialidades.Find(new Guid(id_listaEspecialidades)),
                            Persona = model
                        };
                        db.PersonaEspecialidad.Add(personaEspecialidad);
                        model.Especialidades.Add(personaEspecialidad);
                        db.Persona.Add(model);
                    }
                }
                db.SaveChanges();
                responseModel.SetResponse(true);
                responseModel.function = "CargarTabla()";
                responseModel.message  = "Cambios guardados correctamente";
                return(Json(responseModel));
            }


            // responseModel.href = "/Admin/NumeroControl/Create/";
            responseModel.SetResponse(true);
            return(Json(responseModel));
        }
Ejemplo n.º 3
0
        public ActionResult Edit([Bind(Include = "Persona_id,Numero_control")] Persona persona, Guid[] especialidades_id)
        {
            var person = db.Persona.SingleOrDefault(x => x.Persona_id == persona.Persona_id);

            if (ModelState.IsValid && especialidades_id != null)
            {
                List <PersonaEspecialidad> personaEspecialidad_existentes = person.Especialidades.ToList();
                person.Numero_control = persona.Numero_control;

                foreach (var especialidad in personaEspecialidad_existentes)
                {
                    if (!especialidades_id.Any(x => x.Equals(especialidad.PersonaEspecialidad_id)))
                    {
                        person.Especialidades.Remove(especialidad);
                        db.PersonaEspecialidad.Remove(especialidad);
                    }
                }
                foreach (var id_guid in especialidades_id)
                {
                    PersonaEspecialidad personaEspecialidad = new PersonaEspecialidad
                    {
                        PersonaEspecialidad_id = Guid.NewGuid(),
                        Especialidad           = db.ListaEspecialidades.Find(id_guid),
                        Persona = person
                    };
                    db.PersonaEspecialidad.Add(personaEspecialidad);
                    person.Especialidades.Add(personaEspecialidad);
                }


                db.Entry(person).State = EntityState.Modified;
                db.SaveChanges();
                ViewBag.Success      = "Cambios guardados correctamente";
                ViewBag.Especialidad = db.ListaEspecialidades.ToList();
                return(View(person));
            }
            ViewBag.Especialidad = db.ListaEspecialidades.ToList();
            return(View(person));
        }
Ejemplo n.º 4
0
        public async Task <ActionResult> EditarRegistro(RegisterViewModel model, FormCollection form, Guid[] especialidades_id, string user_id)
        {
            bool password_hasText = true;

            if (String.IsNullOrEmpty(model.Password))
            {
                ModelState.Remove("Password");
                ModelState.Remove("ConfirmPassword");
                password_hasText = false;
            }



            if (ModelState.IsValid)
            {
                var userToEdit = await UserManager.FindByIdAsync(user_id);

                if (userToEdit != null)
                {
                    userToEdit.UserName = model.Email;
                    userToEdit.Email    = model.Email;
                    userToEdit.FullName = model.FullName;
                    var result = await UserManager.UpdateAsync(userToEdit);

                    if (result.Succeeded)
                    {
                        string role        = form["RoleName"];
                        var    oldRoleId   = userToEdit.Roles.SingleOrDefault().RoleId;
                        var    oldRoleName = context.Roles.SingleOrDefault(r => r.Id == oldRoleId).Name;

                        if (oldRoleName != role)
                        {
                            UserManager.RemoveFromRole(userToEdit.Id, oldRoleName);
                            UserManager.AddToRole(userToEdit.Id, role);
                            // context.Entry(userToEdit).State = EntityState.Modified;
                        }
                        if (password_hasText)
                        {
                            UserManager.RemovePassword(userToEdit.Id);
                            UserManager.AddPassword(userToEdit.Id, model.Password);
                        }

                        //registro de informacion a persona
                        if (!role.Equals("Admin"))
                        {
                            var persona = context.Persona.SingleOrDefault(x => x.Id_usuario == userToEdit.Id);
                            persona.Nombre = userToEdit.FullName;
                            persona.Rol    = role;
                            persona.Email  = userToEdit.Email;
                            List <PersonaEspecialidad> personaEspecialidad_existentes = persona.Especialidades.ToList();
                            foreach (var especialidad in personaEspecialidad_existentes)
                            {
                                if (!especialidades_id.Any(x => x.Equals(especialidad.PersonaEspecialidad_id)))
                                {
                                    persona.Especialidades.Remove(especialidad);
                                    context.PersonaEspecialidad.Remove(especialidad);
                                }
                            }
                            foreach (var id_guid in especialidades_id)
                            {
                                PersonaEspecialidad personaEspecialidad = new PersonaEspecialidad
                                {
                                    PersonaEspecialidad_id = Guid.NewGuid(),
                                    Especialidad           = context.ListaEspecialidades.Find(id_guid),
                                    Persona = persona
                                };
                                context.PersonaEspecialidad.Add(personaEspecialidad);
                                persona.Especialidades.Add(personaEspecialidad);
                            }
                            context.Entry(persona).State = EntityState.Modified;
                        }

                        //await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);  lo comenté porque sino la cuenta que acabas de crear se logea y quita a la otra cuenta

                        // Para obtener más información sobre cómo habilitar la confirmación de cuentas y el restablecimiento de contraseña, visite https://go.microsoft.com/fwlink/?LinkID=320771
                        // Enviar correo electrónico con este vínculo
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "Confirmar cuenta", "Para confirmar la cuenta, haga clic <a href=\"" + callbackUrl + "\">aquí</a>");
                        context.SaveChanges();
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        AddErrors(result);
                        var Usuari = System.Web.HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>().FindById(user_id);
                        ViewBag.Usuario = Usuari;
                        var rolidd = "";
                        foreach (var rol in Usuari.Roles)
                        {
                            rolidd = rol.RoleId;
                        }
                        var rol_userr = context.Roles.Find(rolidd);

                        ViewBag.Roles = context.Roles.Select(r => new SelectListItem {
                            Value = r.Name, Text = r.Name, Selected = r.Id == rol_userr.Id
                        }).ToList();
                        ViewBag.Especialidad = context.ListaEspecialidades.ToList();
                        ViewBag.Persona      = context.Persona.Where(x => x.Id_usuario.Equals(user_id)).FirstOrDefault();
                        return(View(model));
                    }
                }
            }
            var Usuario = System.Web.HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>().FindById(user_id);

            ViewBag.Usuario = Usuario;
            var rolid = "";

            rolid = Usuario.Roles.SingleOrDefault().RoleId;
            var rol_user = context.Roles.SingleOrDefault(r => r.Id == rolid).Id;

            ViewBag.Roles = context.Roles.Select(r => new SelectListItem {
                Value = r.Name, Text = r.Name, Selected = r.Id == rol_user
            }).ToList();
            ViewBag.Especialidad = context.ListaEspecialidades.ToList();
            ViewBag.Persona      = context.Persona.Where(x => x.Id_usuario.Equals(user_id)).FirstOrDefault();
            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return(View(model));
        }