Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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()
                       ));
        }
Ejemplo n.º 3
0
        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);
        }