示例#1
0
        public async Task <PagedResult <ReservationListHeader> > GetReservations(ReservationListFilter filter, int?userid)
        {
            if (filter == null)
            {
                filter = new ReservationListFilter();
            }

            if (filter?.PageSize < 0)
            {
                filter.PageSize = null;
            }
            if (filter?.PageNumber < 0)
            {
                filter.PageNumber = null;
            }

            IQueryable <Reservation> reservations = _dbContext.Reservations
                                                    .Include(c => c.VehicleModel)
                                                    .Include(c => c.Car)
                                                    .Include(c => c.Address)
                                                    .Include(c => c.User);

            reservations = reservations.Where(r => r.UserId == userid);

            switch (filter.reservationOrder)
            {
            case ReservationOrder.AddressAscending:
                reservations = reservations.OrderBy(r => r.Address.ZipCode).OrderBy(r => r.Address.City).OrderBy(r => r.Address.StreetAddress);
                break;

            case ReservationOrder.AddressDescending:
                reservations = reservations.OrderByDescending(r => r.Address.ZipCode).OrderByDescending(r => r.Address.City).OrderByDescending(r => r.Address.StreetAddress);
                break;

            case ReservationOrder.PickUpAscending:
                reservations = reservations.OrderBy(r => r.PickUpTime);
                break;

            case ReservationOrder.PickUpDescending:
                reservations = reservations.OrderByDescending(r => r.PickUpTime);
                break;

            case ReservationOrder.DropOffAscending:
                reservations = reservations.OrderBy(r => r.DropOffTime);
                break;

            case ReservationOrder.DropOffDescending:
                reservations = reservations.OrderByDescending(r => r.DropOffTime);
                break;

            case ReservationOrder.VehicleModelAscending:
                reservations = reservations.OrderBy(r => r.VehicleModel.VehicleType);
                break;

            case ReservationOrder.VehicleModelDescending:
                reservations = reservations.OrderByDescending(r => r.VehicleModel.VehicleType);
                break;

            case ReservationOrder.StateAscending:
                reservations = reservations.OrderBy(r => r.State);
                break;

            case ReservationOrder.StateDescending:
                reservations = reservations.OrderByDescending(r => r.State);
                break;

            case ReservationOrder.PriceAscending:
                reservations = reservations.OrderBy(r => r.Price);
                break;

            case ReservationOrder.PriceDescending:
                reservations = reservations.OrderByDescending(r => r.Price);
                break;

            default:
                break;
            }

            int?Total = null;

            if (((filter?.PageSize) ?? 0) != 0)
            {
                filter.PageNumber = filter.PageNumber ?? 0;
                Total             = reservations.Count();
                reservations      = reservations.Skip(filter.PageNumber.Value * filter.PageSize.Value).Take(filter.PageSize.Value);
            }

            var results = await reservations.Select(ReservationListHeaderSelector).ToListAsync();

            return(new PagedResult <ReservationListHeader>
            {
                Total = Total,
                PageNumber = filter?.PageNumber,
                PageSize = filter?.PageSize,
                Results = results
            });
        }
示例#2
0
        public async Task OnGetAsync(string sortOrder, int?pageNumber)
        {
            ReservationListFilter filter = new ReservationListFilter();

            User user = await _userManager.GetUserAsync(HttpContext.User);

            if (user == null)
            {
                NotFound();
            }

            CurrentSort      = sortOrder;
            PickUpSort       = string.IsNullOrEmpty(sortOrder) ? "pickup_desc" : "";
            DropOffSort      = sortOrder == "DropOff" ? "dropoff_desc" : "DropOff";
            AddressSort      = sortOrder == "Address" ? "address_desc" : "Address";
            VehicleModelSort = sortOrder == "VehicleModel" ? "vehiclemodel_desc" : "VehicleModel";
            StateSort        = sortOrder == "State" ? "state_desc" : "State";
            PriceSort        = sortOrder == "Price" ? "price_desc" : "Price";

            filter.PageNumber = pageNumber ?? 0;

            switch (sortOrder)
            {
            case "pickup_desc":
                filter.reservationOrder = ReservationOrder.PickUpDescending;
                break;

            case "dropoff_desc":
                filter.reservationOrder = ReservationOrder.DropOffDescending;
                break;

            case "DropOff":
                filter.reservationOrder = ReservationOrder.DropOffAscending;
                break;

            case "address_desc":
                filter.reservationOrder = ReservationOrder.AddressDescending;
                break;

            case "Address":
                filter.reservationOrder = ReservationOrder.AddressAscending;
                break;

            case "VehicleModel":
                filter.reservationOrder = ReservationOrder.VehicleModelAscending;
                break;

            case "vehiclemodel_desc":
                filter.reservationOrder = ReservationOrder.VehicleModelDescending;
                break;

            case "State":
                filter.reservationOrder = ReservationOrder.StateAscending;
                break;

            case "state_desc":
                filter.reservationOrder = ReservationOrder.StateDescending;
                break;

            case "Price":
                filter.reservationOrder = ReservationOrder.PriceAscending;
                break;

            case "price_desc":
                filter.reservationOrder = ReservationOrder.PriceDescending;
                break;

            default:
                filter.reservationOrder = ReservationOrder.PickUpAscending;
                break;
            }

            _logger.LogInformation(LoggingEvents.ListItems, "List Reservation");
            Reservation = await _reservationService.GetReservations(filter, user.Id);
        }