public IEnumerable <ProjectLogicModel> GetProjectByUser(int userId, int pageNumber, int pageCount, string queryText) { var skipCount = (pageNumber - 1) * pageCount; var isQueryByText = !string.IsNullOrEmpty(queryText); var participateProjectIds = _inviteRepository.Query().Where(x => x.User.Id == userId).Select(x => x.Project.Id).ToList(); return(_projectRepository.Query()?.Where(x => (x.Owner.Id == userId || participateProjectIds.Contains(x.Id)) && (!isQueryByText || x.Name.Contains(queryText))) .OrderBy(x => x.Name) .Skip(skipCount) .Take(pageCount) .Select(x => new ProjectLogicModel { Id = x.Id, Name = x.Name, OwnerLogicModel = x.Owner.ToLogicModel() })); }
public async Task <ApiResponse <Pagination <Invite> > > Handle(InviteFilterCommand request, CancellationToken cancellationToken) { var query = _repository.Query(x => (request.MemberId == Guid.Empty || x.MemberId == request.MemberId) && (request.GuildId == Guid.Empty || x.GuildId == request.GuildId), true); var count = query.Count(); var invites = await query.Take(request.Count).ToListAsync(cancellationToken); var invitesPaginated = new Pagination <Invite>(invites, count, request.Count); return(new ApiResponse <Pagination <Invite> >(invitesPaginated)); }
public void ExpireInvite(long id) { var invite = _inviteRepository.Query() .Where(inv => !inv.Deleted && !inv.IsUsed && inv.IdUser == id) .OrderByDescending(inv => inv.ExpiryDate) .FirstOrDefault(); if (invite == null) { throw new EndpointNotFoundException("Can not get invite by user id"); } invite.IsUsed = true; _inviteRepository.Save(invite); }
public InviteLogicModel Get(int projectId, string email) { return(_inviteRepository.Query().FirstOrDefault(x => x.Project.Id == projectId && x.InviteEmail == email).ToLogicModel()); }