public async Task <IActionResult> GetUsersInSchool(int id) { var token = HttpContext.Request.Headers["Authorization"].Last().Split(" ").Last(); string[] roles = { "Admin", "SchoolAdmin" }; var schoolRepo = new SchoolRepository(); if (!schoolRepo.GetAll().Select(x => x.Id).Contains(id)) { return(BadRequest("Not such id")); } if (RoleService.CheckRoles(token, roles, _userManager)) { if (RoleService.CheckRole(token, "Admin", _userManager)) { if (id == 0) { var detailsRepo = new UserDetailsRepository(); var result = detailsRepo.GetAll().Select(x => UserSummaryFactory .CreateSummary(x, _userManager.FindByIdAsync(x.UserId).Result)).ToList(); return(Ok(result)); } else { try { var school = schoolRepo.GetAll().First(x => x.Id == id); var result = school.Users.Select(x => UserSummaryFactory .CreateSummary(x, _userManager.FindByIdAsync(x.UserId).Result)).ToList(); return(Ok(result)); } catch (Exception e) { NotFound(e.Message); } } } else { try { var school = schoolRepo.GetAll().First(x => x.Id == id); var result = school.Users.Select(x => UserSummaryFactory .CreateSummary(x, _userManager.FindByIdAsync(x.UserId).Result)).ToList(); return(Ok(result)); } catch (Exception e) { NotFound(e.Message); } } } return(Unauthorized("Only Admin, SchoolAdmin have access to this controller.")); }
public UsersController(ITrackerRepository repository, ILogger <UsersController> logger, UserSummaryFactory userSummaryFactory) { this.repository = repository ?? throw new ArgumentNullException(nameof(repository)); this.logger = logger ?? throw new ArgumentNullException(nameof(repository)); this.userSummaryFactory = userSummaryFactory ?? throw new ArgumentNullException(nameof(userSummaryFactory)); }
public async Task <IActionResult> Get() { var token = HttpContext.Request.Headers["Authorization"].Last().Split(" ").Last(); string[] roles = { "Admin", "SchoolAdmin" }; if (RoleService.CheckRoles(token, roles, _userManager)) { var repo = new SchoolRepository(); var userIds = repo.GetAll() .Select(x => new { Name = x.Name, UserIds = x.Users.Select(x => x.UserId) }).ToDictionary(x => x.Name, x => x.UserIds); var SchoolsUsers = new Dictionary <string, List <User> >(); foreach (var school in userIds.Keys) { SchoolsUsers.Add(school, userIds[school].Select(x => _userManager.FindByIdAsync(x).Result).ToList()); } var detailsRepo = new UserDetailsRepository(); //Produces summary for each school with summaries for each of students. var result = repo.GetAll().Select(x => new SchoolSummary(x.Id, x.Name, SchoolsUsers[x.Name] .Select(x => UserSummaryFactory.CreateSummary(detailsRepo.GetById(x.DetailsId), x)).ToList())).ToList(); return(Ok(result)); } return(Unauthorized("Only Admin and SchoolAdmin roles have permission to this controller.")); }