public async Task <FileDto> GetRequestsToExcel(GetAllRequestsInput input) { var filteredRequests = _requestRepository.GetAll().AppendRequestMainFilter(input, AbpSession.UserId); var requests = from o in filteredRequests join tour in _tourRepository.GetAll() on o.TourId equals tour.Id join user in _userRepository.GetAll() on o.UserId equals user.Id join booking in _bookingRepository.GetAll() on o.BookingId equals booking.Id where o.UserId == AbpSession.UserId select new GetRequestForViewDto() { Request = new RequestDto { Id = o.Id, TourId = o.TourId, Description = o.Description, Status = o.Status, Date = o.Date, BookingId = o.BookingId }, TourName = tour.Name, UserFullName = user.FullName, BookingCode = "B-" + booking.Id }; var result = await requests .OrderBy(input.Sorting ?? "Request.Id asc").ToListAsync(); return(_requestsExcelExporter.ExportToFile(result)); }
public async Task <PagedResultDto <GetRequestForViewDto> > GetAll(GetAllRequestsInput input) { var filteredRequests = _requestRepository.GetAll().AppendRequestMainFilter(input, AbpSession.UserId); var requests = from o in filteredRequests join tour in _tourRepository.GetAll() on o.TourId equals tour.Id join user in _userRepository.GetAll() on o.UserId equals user.Id join booking in _bookingRepository.GetAll() on o.BookingId equals booking.Id select new GetRequestForViewDto() { Request = new RequestDto { Id = o.Id, TourId = o.TourId, Description = o.Description, Status = o.Status, Date = o.Date, BookingId = o.BookingId }, TourName = tour.Name, UserFullName = user.FullName, BookingCode = "B-" + booking.Id }; var pagedAndFilteredRequests = requests .OrderBy(input.Sorting ?? "Request.Id desc") .PageBy(input); var totalCount = await requests.CountAsync(); return(new PagedResultDto <GetRequestForViewDto>( totalCount, await pagedAndFilteredRequests.ToListAsync() )); }
public static IQueryable <Request> AppendRequestMainFilter(this IQueryable <Request> existingQuery, GetAllRequestsInput input, long?UserId) { existingQuery = existingQuery.WhereIf(!string.IsNullOrWhiteSpace(input.Query), e => false || e.Description.Contains(input.Query) || e.BookingFk.Status.Contains(input.Query) || e.BookingFk.Name.Contains(input.Query) || e.BookingFk.TourFk.Name.Contains(input.Query)); switch (input.Mode) { case "CustomerRequests": existingQuery = existingQuery.Where(request => request.BookingFk.TourFk.UserId == UserId); break; case "CancellationRequests": existingQuery = existingQuery.Where(request => request.BookingFk.TourFk.UserId == UserId); existingQuery = existingQuery.Where(request => request.Status == "Cancellation Requested"); break; case "PendingRequests": existingQuery = existingQuery.Where(request => request.BookingFk.TourFk.UserId == UserId); existingQuery = existingQuery.Where(request => request.Status == "Pending"); break; default: existingQuery = existingQuery.Where(e => e.BookingFk.UserId == UserId); break; } return(existingQuery); }