public async Task <FileDto> GetBookingsToExcel(GetAllBookingsInput input) { var filteredBookings = _bookingRepository.GetAll().AppendBookingMainFilter(input, AbpSession.UserId); var bookings = from o in filteredBookings join o1 in _tourRepository.GetAll() on o.TourId equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() join tourDate in _tourDateRepository.GetAll() on o.TourDateId equals tourDate.Id into tourDates from td in tourDates.DefaultIfEmpty() join o2 in _stateRepository.GetAll() on o.StateId equals o2.Id into j2 from s2 in j2.DefaultIfEmpty() join o3 in _userRepository.GetAll() on o.UserId equals o3.Id into j3 from s3 in j3.DefaultIfEmpty() select new GetBookingForViewDto() { Booking = new BookingDto { Id = o.Id, TourId = o.TourId, UserId = o.UserId, Address = o.Address, StateId = o.StateId, Suburb = o.Suburb, PostCode = o.PostCode, PromoCode = o.PromoCode, TotalPrice = o.TotalPrice, Name = o.Name, PhoneNumber = o.PhoneNumber, NumberOfPeople = o.NumberOfPeople, Status = o.Status, Email = o.Email }, TourStartDate = td.StartDate, TourEndDate = td.EndDate, BookingCode = "B-" + o.Id, TourName = s1 != null ? s1.Name : null, StateCode = s2 != null ? s2.Code : null, UserFullName = s3 != null ? s3.FullName : null }; var results = await bookings.OrderBy(input.Sorting ?? "Booking.Id asc").ToListAsync(); return(_bookingsExcelExporter.ExportToFile(results)); }
public async Task <FileDto> GetBookingsToExcel(GetAllBookingsForExcelInput input) { var filteredBookings = _bookingRepository.GetAll() .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.FirstName.Contains(input.Filter) || e.LastName.Contains(input.Filter) || e.PhoneNumber.Contains(input.Filter) || e.EmailAddress.Contains(input.Filter)) .WhereIf(input.MinBookingTypeFilter != null, e => e.BookingType >= input.MinBookingTypeFilter) .WhereIf(input.MaxBookingTypeFilter != null, e => e.BookingType <= input.MaxBookingTypeFilter) .WhereIf(input.MinTicketTypeFilter != null, e => e.TicketType >= input.MinTicketTypeFilter) .WhereIf(input.MaxTicketTypeFilter != null, e => e.TicketType <= input.MaxTicketTypeFilter) .WhereIf(input.MinTicketPriceFilter != null, e => e.TicketPrice >= input.MinTicketPriceFilter) .WhereIf(input.MaxTicketPriceFilter != null, e => e.TicketPrice <= input.MaxTicketPriceFilter) .WhereIf(input.MinstatusFilter != null, e => e.Status >= input.MinstatusFilter) .WhereIf(input.MaxstatusFilter != null, e => e.Status <= input.MaxstatusFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.FirstNameFilter), e => e.FirstName == input.FirstNameFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.LastNameFilter), e => e.LastName == input.LastNameFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.PhoneNumberFilter), e => e.PhoneNumber == input.PhoneNumberFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.EmailAddressFilter), e => e.EmailAddress == input.EmailAddressFilter); var query = (from o in filteredBookings select new GetBookingForViewDto() { Booking = new BookingDto { BookingType = o.BookingType, TicketType = o.TicketType, TicketPrice = o.TicketPrice, status = o.Status, FirstName = o.FirstName, LastName = o.LastName, PhoneNumber = o.PhoneNumber, EmailAddress = o.EmailAddress, Id = o.Id } }); var bookingListDtos = await query.ToListAsync(); return(_bookingsExcelExporter.ExportToFile(bookingListDtos)); }