public ActionResult Detalles(UsuariosModelo model) { if (ModelState.IsValid) { var telefonos_viejos = baseDatos.Usuarios_Telefonos.Where(m => m.usuario == model.usuario.cedula); foreach (Usuarios_Telefonos telefono in telefonos_viejos) { baseDatos.Entry(telefono).State = System.Data.Entity.EntityState.Deleted; } baseDatos.SaveChanges(); var telefonoEntry = new Usuarios_Telefonos(); telefonoEntry.telefono = model.tel1; telefonoEntry.usuario = model.usuario.cedula; baseDatos.Usuarios_Telefonos.Add(telefonoEntry); if (model.tel2 != null) { var telefonoEntry2 = new Usuarios_Telefonos(); telefonoEntry2.telefono = model.tel2; telefonoEntry2.usuario = model.usuario.cedula; baseDatos.Usuarios_Telefonos.Add(telefonoEntry2); } if (model.tel3 != null) { var telefonoEntry3 = new Usuarios_Telefonos(); telefonoEntry3.telefono = model.tel3; telefonoEntry3.usuario = model.usuario.cedula; baseDatos.Usuarios_Telefonos.Add(telefonoEntry3); } baseDatos.SaveChanges(); var usuario = baseDatos.Usuarios.Find(model.usuario.cedula); usuario.nombre = model.nombreUsuario; usuario.updatedAt = DateTime.Now; baseDatos.Entry(usuario).State = System.Data.Entity.EntityState.Modified; baseDatos.SaveChanges(); var aspUser = UserManager.FindById(model.identityUsuario.Id); aspUser.UserName = model.email; aspUser.Email = model.email; UserManager.Update(aspUser); var rolViejo = aspUser.Roles.SingleOrDefault().RoleId; var nombreRolViejo = context.Roles.SingleOrDefault(m => m.Id == rolViejo).Name; UserManager.RemoveFromRole(model.identityUsuario.Id, nombreRolViejo); UserManager.AddToRole(model.identityUsuario.Id, model.rol.Name); this.AddToastMessage("Usuario Modificado", "El usuario " + model.usuario.nombre + " se ha actualizado correctamente.", ToastType.Success); return(RedirectToAction("Index", "Usuarios")); } return(View(model)); }
public async Task <ActionResult> Crear(CrearUsuarioModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; try { //generacion de contraseña provisional string generatedPassword = Membership.GeneratePassword(12, 2); //crea el usuario en la tabla de AspNetUsers var result = await UserManager.CreateAsync(user, generatedPassword); if (result.Succeeded) { // Crea el usuario en las tabla de Usuario var userEntry = new Usuario(); userEntry.cedula = model.Cedula; userEntry.nombre = model.Nombre; userEntry.id = context.Users.Where(u => u.Email == model.Email).FirstOrDefault().Id; userEntry.updatedAt = DateTime.Now; baseDatos.Usuarios.Add(userEntry); baseDatos.SaveChanges(); var telefonoEntry = new Usuarios_Telefonos(); telefonoEntry.telefono = model.Telefono; telefonoEntry.usuario = model.Cedula; baseDatos.Usuarios_Telefonos.Add(telefonoEntry); // valida los datos recibidos del modelo if (model.Telefono2 != null) { var telefonoEntry2 = new Usuarios_Telefonos(); telefonoEntry2.telefono = model.Telefono2; telefonoEntry2.usuario = model.Cedula; baseDatos.Usuarios_Telefonos.Add(telefonoEntry2); } if (model.Telefono3 != null) { var telefonoEntry3 = new Usuarios_Telefonos(); telefonoEntry3.telefono = model.Telefono3; telefonoEntry3.usuario = model.Cedula; baseDatos.Usuarios_Telefonos.Add(telefonoEntry3); } baseDatos.SaveChanges(); //Envio de Correo //string callbackUrl = await SendEmailConfirmationTokenAsync(user.Id, "Confirm your account", model.Nombre, generatedPassword); //crea la relacion del usuario con el rol await this.UserManager.AddToRoleAsync(user.Id, model.UserRoles); this.AddToastMessage("Usuario Creado", "El usuario " + model.Nombre + " se ha creado correctamente. Se envió un correo electronico de confirmación al usuario", ToastType.Success); return(RedirectToAction("Crear", "Usuarios")); } foreach (var error in result.Errors) { ModelState.AddModelError("", error); } await UserManager.DeleteAsync(user); ViewBag.Name = new SelectList(context.Roles.ToList(), "Name", "Name"); // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario this.AddToastMessage("Error", "Ha ocurrido un error al crear al usuario " + model.Nombre + ".", ToastType.Error); return(View(model)); } catch (Exception ex) { Console.WriteLine(ex); this.AddToastMessage("Error", "Ha ocurrido un error al crear al usuario " + model.Nombre + ".", ToastType.Error); ViewBag.Name = new SelectList(context.Roles.ToList(), "Name", "Name"); return(View(model)); } } return(View(model)); }