Example #1
0
        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));
        }
Example #2
0
        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()
                       ));
        }
Example #3
0
        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);
        }