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)); }
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)); }
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)); }
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)); }