public ActionResult Leer([DataSourceRequest] DataSourceRequest request, long?aplicacionID = null) { IUsuariosServicio srv = Servicios.UsuariosServicio(); IEnumerable <UsuarioGrid> usuarios = srv.Get().Select(emp => UsuarioGrid.FromEntity(emp)); return(Json(usuarios.ToDataSourceResult(request), JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Nuevo([DataSourceRequest] DataSourceRequest request, UsuarioGrid usuario) { DataSourceResult result = new[] { usuario }.ToDataSourceResult(request, ModelState); if (ModelState.IsValid) { bool usuarioActualizado = false; try { IAplicacionesServicio apSrv = Servicios.AplicacionesServicio(); ICategoriasServicio carSrv = Servicios.CategoriasServicio(); IUsuariosServicio empSrv = Servicios.UsuariosServicio(); Usuario usuarioNuevo = empSrv.Create(); usuario.ActualizarEntidad(usuarioNuevo); usuarioNuevo.Aplicaciones = apSrv.Get(cl => usuario.Aplicaciones.Contains(cl.AplicacionID)).ToList(); IdentityResult ir = await UserManager.CreateAsync(usuarioNuevo, usuario.Clave); if (ir.Succeeded) { result = new[] { UsuarioGrid.FromEntity(usuarioNuevo) }.ToDataSourceResult(request, ModelState); usuarioActualizado = true; await UserManager.EstablecerRol(usuarioNuevo, usuario.PerfilID); result = new[] { UsuarioGrid.FromEntity(usuarioNuevo) }.ToDataSourceResult(request, ModelState); } else { foreach (var error in ir.Errors) { ModelState.AddModelError("", error); } result = new[] { usuario }.ToDataSourceResult(request, ModelState); } } catch (Exception e) { if (usuarioActualizado) { log.Error($"Error al establecer perfiles del usuario creado {usuario.Email}", e); result.Errors = new[] { string.Format(Txt.Usuarios.ErrorEstablecerPerfiles, usuario.Email).Frase() }; } else { log.Error("Error al añadir el usuario " + usuario.Nombre, e); result.Errors = new[] { string.Format(Txt.ErroresComunes.Aniadir, Txt.Usuarios.ArtEntidad).Frase() }; } } } return(Json(result)); }
public async Task <ActionResult> Modificar([DataSourceRequest] DataSourceRequest request, UsuarioGrid usuario) { DataSourceResult result = new[] { usuario }.ToDataSourceResult(request, ModelState); if (ModelState.IsValid) { bool usuarioActualizado = false; try { IUsuariosServicio srv = Servicios.UsuariosServicio(); Usuario modificar = srv.GetSingle(u => u.UsuarioID == usuario.UsuarioID); if (modificar != null) { if (usuario.Aplicaciones == null) { usuario.Aplicaciones = new long[0]; } usuario.ActualizarEntidad(modificar); IEnumerable <long> aplicacionesActuales = modificar.Aplicaciones.Select(cl => cl.AplicacionID); IEnumerable <long> aplicacionesAniadirIDs = usuario.Aplicaciones.Where(cl => !aplicacionesActuales.Contains(cl)); IEnumerable <long> aplicacionesEliminar = aplicacionesActuales .Where(e => !usuario.Aplicaciones.Contains(e)).ToArray(); foreach (var e in aplicacionesEliminar) { Aplicacion aEliminar = modificar.Aplicaciones .Single(eID => eID.AplicacionID == e); modificar.Aplicaciones.Remove(aEliminar); } // Añadir las aplicaciones que vengan en el array de ids de aplicaciones y que no // tenga ya el usuario. IAplicacionesServicio srvAplicacions = Servicios.AplicacionesServicio(); modificar.Aplicaciones .AddRange(srvAplicacions.Get(cl => aplicacionesAniadirIDs.Contains(cl.AplicacionID))); IdentityResult ir = await UserManager.UpdateAsync(modificar); if (ir.Succeeded) { usuarioActualizado = true; await UserManager.EstablecerRol(modificar, usuario.PerfilID); result = new[] { UsuarioGrid.FromEntity(modificar) }.ToDataSourceResult(request, ModelState); } else { foreach (var error in ir.Errors) { ModelState.AddModelError("", error); } result = new[] { usuario }.ToDataSourceResult(request, ModelState); } } else { result.Errors = new[] { string.Format(Txt.ErroresComunes.NoExiste, Txt.Usuarios.ArtEntidad).Frase() }; } } catch (Exception e) { if (usuarioActualizado) { log.Error($"Error al establecer perfiles del usuario creado {usuario.Email}", e); result.Errors = new[] { string.Format(Txt.Usuarios.ErrorEstablecerPerfiles, usuario.Email).Frase() }; } else { log.Error("Error al modificar el usuario con id=" + usuario.UsuarioID, e); result.Errors = new[] { string.Format(Txt.ErroresComunes.Modificar, Txt.Usuarios.ArtEntidad).Frase() }; } } } return(Json(result)); }