public async Task <FileDto> GetDisputesToExcel(GetAllDisputesInput input) { var filteredDisputes = _disputeRepository.GetAll().AppendDisputeMainFilter(input, AbpSession.UserId); var disputes = from o in filteredDisputes join booking in _bookingRepository.GetAll() on o.BookingId equals booking.Id join tour in _tourRepository.GetAll() on booking.TourId equals tour.Id join user in _userRepository.GetAll() on booking.UserId equals user.Id where booking.UserId == AbpSession.UserId select new GetDisputeForViewDto() { Dispute = new DisputeDto { Id = o.Id, BookingId = o.BookingId, Description = o.Description, Status = o.Status, Date = o.Date, UserId = o.UserId }, BookingCode = "B-" + booking.Id, TourName = tour.Name, UserFullName = user.FullName }; var result = await disputes.OrderBy(input.Sorting ?? "Dispute.Id asc").ToListAsync(); return(_disputesExcelExporter.ExportToFile(result)); }
public async Task <PagedResultDto <GetDisputeForViewDto> > GetAll(GetAllDisputesInput input) { var filteredDisputes = _disputeRepository.GetAll().AppendDisputeMainFilter(input, AbpSession.UserId); var disputes = from o in filteredDisputes join booking in _bookingRepository.GetAll() on o.BookingId equals booking.Id join tour in _tourRepository.GetAll() on booking.TourId equals tour.Id join user in _userRepository.GetAll() on booking.UserId equals user.Id select new GetDisputeForViewDto() { Dispute = new DisputeDto { Id = o.Id, BookingId = o.BookingId, Description = o.Description, Status = o.Status, Date = o.Date, UserId = o.UserId }, BookingCode = "B-" + booking.Id, TourName = tour.Name, UserFullName = user.FullName }; var pagedAndFilteredDisputes = disputes .OrderBy(input.Sorting ?? "Dispute.Id desc") .PageBy(input); var totalCount = await disputes.CountAsync(); return(new PagedResultDto <GetDisputeForViewDto>( totalCount, await pagedAndFilteredDisputes.ToListAsync() )); }
public static IQueryable <Dispute> AppendDisputeMainFilter(this IQueryable <Dispute> existingQuery, GetAllDisputesInput input, long?UserId) { existingQuery = existingQuery.WhereIf(!string.IsNullOrWhiteSpace(input.Query), e => false || e.Description.Contains(input.Query) || e.Status.Contains(input.Query) || e.BookingFk.Name.Contains(input.Query) || e.BookingFk.TourFk.Name.Contains(input.Query)); switch (input.Mode) { case "CustomerDisputes": existingQuery = existingQuery.Where(dispute => dispute.BookingFk.TourFk.UserId == UserId); break; case "CancellationRequests": existingQuery = existingQuery.Where(dispute => dispute.BookingFk.TourFk.UserId == UserId); existingQuery = existingQuery.Where(dispute => dispute.Status == "Cancellation Requested"); break; case "PendingRequests": existingQuery = existingQuery.Where(dispute => dispute.BookingFk.TourFk.UserId == UserId); existingQuery = existingQuery.Where(dispute => dispute.Status == "Pending"); break; default: existingQuery = existingQuery.Where(e => e.BookingFk.UserId == UserId); break; } return(existingQuery); }