Exemplo n.º 1
0
        public async Task <Result <IImmutableList <GroupModel> > > Handle(GetMyGroups request, CancellationToken cancellationToken)
        {
            var isValid = await _validator.IsValidAsync(request);

            if (!isValid)
            {
                return(Result.Failure <IImmutableList <GroupModel> >("Validation failed"));
            }

            var user = await _context.Users.FirstAsync(u => u.Sub == request.UserSub, cancellationToken);

            var groups = await _context
                         .UsersToGroups
                         .Include(g => g.Group)
                         .ThenInclude(g => g.Admin)
                         .Where(userToGroup => userToGroup.UserId == user.Id)
                         .Select(x => x.Group)
                         .Select(g => new GroupModel
            {
                Id              = g.Id,
                Name            = g.Name,
                NumberOfMembers = g.GroupMembers.Count,
                AdminId         = g.AdminId,
                AdminFirstName  = g.Admin.FirstName,
                AdminLastName   = g.Admin.LastName
            })
                         .ToListAsync(cancellationToken);

            return(groups.ToImmutableList());
        }
Exemplo n.º 2
0
        public ActionResult <List <GroupDto> > GetMyGroupsFull()
        {
            var command = new GetMyGroups
            {
                UserId = User.GetUserId()
            };

            return(Ok(_groupService.GetMyGroupsFull(command)));
        }
Exemplo n.º 3
0
        public async Task <ActionResult <IImmutableList <GroupModel> > > GetGroupsAsync()
        {
            var sub    = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
            var query  = new GetMyGroups(sub);
            var result = await _mediator.Send(query);

            if (result.IsFailure)
            {
                return(BadRequest());
            }

            return(Ok(result.Value));
        }
Exemplo n.º 4
0
        public List <SmallGroupDto> GetMyGroups(GetMyGroups command)
        {
            var groups = _groupRepository.GetAll()
                         .Where(g => g.Students.Any(s => s.Id == command.UserId));

            var groupsDto = groups.Select(g => new SmallGroupDto
            {
                Id                    = g.Id,
                Name                  = g.Name,
                StudentsCount         = g.Students.Count(),
                AssignmentsInProgress = g.Teams
                                        .Where(t => t.Students.Any(s => s.Id == command.UserId))
                                        .Sum(t => t.Assignmets.Count())
                                        +
                                        g.Assignmets.Count()
            }).ToList();

            return(groupsDto);
        }
Exemplo n.º 5
0
        public List <GroupDto> GetMyGroupsFull(GetMyGroups command)
        {
            IQueryable <Group> groups = _groupRepository.GetWholeGroupsAsync(command.UserId);

            return(groups.Select(CreateFullGroup().Compile()).ToList());
        }