// GET: Admin/Usuario/Edit/5 public ActionResult Edit(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } AuthRepository gestorUsuarios = new AuthRepository(); ApplicationUser applicationUser = gestorUsuarios.FindById(id); if (applicationUser == null) { return(HttpNotFound()); } UsuarioEditViewModel viewModel = new UsuarioEditViewModel(); viewModel.Usuario = applicationUser; viewModel.InicializarDesplegables(); return(View(viewModel)); }
public ActionResult Edit(UsuarioEditViewModel viewModel) { if (ModelState.IsValid) { AuthRepository gestorUsuarios = new AuthRepository(); ApplicationUser applicationUser = gestorUsuarios.FindById(viewModel.Usuario.Id); applicationUser.Nombre = viewModel.Usuario.Nombre; applicationUser.Apellido1 = viewModel.Usuario.Apellido1; applicationUser.Apellido2 = viewModel.Usuario.Apellido2; applicationUser.Email = viewModel.Usuario.Email; applicationUser.UserName = viewModel.Usuario.Email; applicationUser.GrupoUsuarioId = viewModel.Usuario.GrupoUsuarioId; applicationUser.PuntosActual = viewModel.Usuario.PuntosActual; applicationUser.PuntosTotal = viewModel.Usuario.PuntosTotal; applicationUser.BloquearSubtemas = viewModel.Usuario.BloquearSubtemas; applicationUser.ClienteId = viewModel.Usuario.ClienteId; var Accesos = db.SubTemaAccesoUsuarios.Where(sau => sau.AlumnoId == applicationUser.Id).ToList(); db.SubTemaAccesoUsuarios.RemoveRange(Accesos); db.SaveChanges(); List <int> listaSubtemasAccesso = new List <int>(); if (viewModel.Usuario.BloquearSubtemas) { foreach (var acceso in viewModel.AccesoTemas) { foreach (var accesoSubtema in acceso.SubTemas) { if (accesoSubtema.Selected) { SubTemaAccesoUsuario subtemaAcceso = new SubTemaAccesoUsuario(); subtemaAcceso.AlumnoId = viewModel.Usuario.Id; subtemaAcceso.FechaAcceso = DateTime.Now; subtemaAcceso.SubTemaId = Convert.ToInt32(accesoSubtema.Value); db.SubTemaAccesoUsuarios.Add(subtemaAcceso); db.SaveChanges(); listaSubtemasAccesso.Add(subtemaAcceso.SubTemaId); } } } var subtemasAcceso = db.SubTemaAccesoUsuarios.Where(sa => sa.AlumnoId == viewModel.Usuario.Id).Select(sa => sa.SubTema).ToList(); var temas = subtemasAcceso.Select(su => su.TemaId); foreach (var temaId in temas) { var subtemaInicial = subtemasAcceso.Where(sa => sa.TemaId == temaId).OrderBy(su => su.Orden).FirstOrDefault(); if (subtemaInicial != null) { if (!db.SubTemaDesbloqueados.Any(sd => sd.SubTemaId == subtemaInicial.SubTemaId && sd.AlumnoId == viewModel.Usuario.Id)) { SubTemaDesbloqueado desbloqueado = new SubTemaDesbloqueado(); desbloqueado.AlumnoId = viewModel.Usuario.Id; desbloqueado.FechaDesbloqueo = DateTime.Now; desbloqueado.SubTemaId = subtemaInicial.SubTemaId; db.SubTemaDesbloqueados.Add(desbloqueado); db.SaveChanges(); } } } } List <int> temasCliente = db.ClienteTemas.Where(te => te.ClienteId == viewModel.Usuario.ClienteId).Select(te => te.TemaId).ToList(); List <SubTema> subtemasIniciales = db.SubTemas.Where(sub => temasCliente.Contains(sub.TemaId) && sub.Orden == 1).ToList(); foreach (SubTema subtema in subtemasIniciales) { bool anyadir = true; if (viewModel.Usuario.BloquearSubtemas) { if (!listaSubtemasAccesso.Contains(subtema.SubTemaId)) { anyadir = false; } } if (anyadir) { if (!db.SubTemaDesbloqueados.Any(sd => sd.SubTemaId == subtema.SubTemaId && sd.AlumnoId == viewModel.Usuario.Id)) { SubTemaDesbloqueado desbloqueado = new SubTemaDesbloqueado(); desbloqueado.AlumnoId = viewModel.Usuario.Id; desbloqueado.FechaDesbloqueo = DateTime.Now; desbloqueado.SubTemaId = subtema.SubTemaId; db.SubTemaDesbloqueados.Add(desbloqueado); db.SaveChanges(); } } } var userResult = gestorUsuarios.Update(applicationUser); if (userResult.Succeeded) { if (!string.IsNullOrWhiteSpace(viewModel.Password)) { gestorUsuarios.UpdatePassword(viewModel.Usuario.Id, viewModel.Password); } return(RedirectToAction("Index")); } } viewModel.InicializarDesplegables(); return(View(viewModel)); }