Exemplo n.º 1
0
        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."));
        }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
        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."));
        }