public async Task <PagedList <Invite> > GetInvites(InviteParams inviteParams) { var invites = _context.Users.OrderByDescending(u => u.LastActive).AsQueryable(); invites = invites.Where(u => u.UserRoles.Select(ur => ur.Role.Name).Contains("Guest")); if (!string.IsNullOrEmpty(inviteParams.Status)) { if (inviteParams.Status.Equals("PENDING")) { invites = invites.Where(i => !i.InviteAnswers.IsAny()); } else { invites = invites.Where(i => i.InviteAnswers.IsAny()); } } if (inviteParams.IsBlacklisted) { invites = invites.Where(i => i.IsBlacklisted); } return(await PagedList <Invite> .CreateAsync(invites, inviteParams.PageNumber, inviteParams.PageSize)); }
public async Task <PagedList <InviteDto> > GetUserInvites(InviteParams inviteParams) { var users = _context.Users.OrderBy(u => u.UserName).AsQueryable(); var invites = _context.Invites.AsQueryable(); if (inviteParams.Predicate == "invited") { invites = invites.Where(invite => invite.SourceUserId == inviteParams.UserId); users = invites.Select(invite => invite.InvitedUser); } if (inviteParams.Predicate == "invitedBy") { invites = invites.Where(invite => invite.InvitedUserId == inviteParams.UserId); users = invites.Select(invite => invite.SourceUser); } var invitedUsers = users.Select(user => new InviteDto { Username = user.UserName, Age = user.DateOfBirth.CalculateAge(), PhotoUrl = user.Photos.FirstOrDefault(p => p.isMain).Url, City = user.City, Id = user.Id }); return(await PagedList <InviteDto> .CreateAsync(invitedUsers, inviteParams.PageNumber, inviteParams.PageSize)); }
public async Task <IActionResult> GetAllInvites([FromQuery] InviteParams inviteParams) { var invites = await _repo.GetInvites(inviteParams); var invitesToReturn = _mapper.Map <IEnumerable <InviteDetailsMultipleDto> >(invites); Response.AddPagination(invites.CurrentPage, invites.PageSize, invites.TotalCount, invites.TotalPages); return(Ok(invitesToReturn)); }
public async Task <ActionResult <IEnumerable <InviteDto> > > GetUserInvites([FromQuery] InviteParams inviteParams) { inviteParams.UserId = User.GetUserId(); var users = await _unitOfWork.InviteRepository.GetUserInvites(inviteParams); Response.AddPaginationHeader(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages); return(Ok(users)); }