public async Task <IEnumerable <Tape> > GetTapesMatchingBorrowFilter(BorrowFilter borrowFilter) { return(await GetMatchingBorrowFilter(borrowFilter) .Include(b => b.Tape) .Select(b => b.Tape) .Distinct() .ToListAsync()); }
public async Task <IEnumerable <Friend> > GetFriendsMatchingBorrowFilter(BorrowFilter borrowFilter) { return(await GetMatchingBorrowFilter(borrowFilter) .Include(b => b.Friend) .Select(b => b.Friend) .Distinct() .ToListAsync()); }
private IQueryable <BorrowInfo> GetMatchingBorrowFilter(BorrowFilter borrowFilter) { IQueryable <BorrowInfo> query = Context.BorrowInfos; if (borrowFilter.LoanDate.HasValue) { var loanDate = borrowFilter.LoanDate.Value; if (borrowFilter.LoanDuration.HasValue) { var loanDuration = borrowFilter.LoanDuration.Value; var onLoanBy = loanDate.AddDays(-loanDuration); query = query.Where(b => b.BorrowDate.Date <= onLoanBy && (b.ReturnDate == null || b.ReturnDate > loanDate)); } else { query = query.Where(b => b.BorrowDate.Date <= loanDate && (b.ReturnDate == null || b.ReturnDate > loanDate)); } } return(query); }