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()); }
public ActionResult <List <GroupDto> > GetMyGroupsFull() { var command = new GetMyGroups { UserId = User.GetUserId() }; return(Ok(_groupService.GetMyGroupsFull(command))); }
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)); }
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); }
public List <GroupDto> GetMyGroupsFull(GetMyGroups command) { IQueryable <Group> groups = _groupRepository.GetWholeGroupsAsync(command.UserId); return(groups.Select(CreateFullGroup().Compile()).ToList()); }