Esempio n. 1
0
        public PagedList <TripHistory> GetTripHistoriesForDriver(Guid DriverID, TripHistoryResourceParameters resourceParameters)
        {
            var beforePaging = _dataContext.TripHistories.OrderByDescending(h => h.FinishTime).Where(t => t.DriverId == DriverID)
            ;

            return(PagedList <TripHistory> .Create(beforePaging, resourceParameters.PageNumber, resourceParameters.PageSize));
        }
        public async Task <IActionResult> GetCustomerHistory(TripHistoryResourceParameters resourceParameters)
        {
            var customerId = User.Claims.FirstOrDefault(c => c.Type == Helpers.Constants.Strings.JwtClaimIdentifiers.CustomerId)?.Value;


            var trips = _tripsRepository.GetTripHistoriesForCustomer(Guid.Parse(customerId), resourceParameters);

            var prevLink = trips.HasPrevious
                ? _resourceUriHelper.CreateResourceUri(resourceParameters, ResourceUriType.PrevoiusPage, nameof(GetCustomerHistory)):null;

            var nextLink = trips.HasNext
                ? _resourceUriHelper.CreateResourceUri(resourceParameters, ResourceUriType.NextPage, nameof(GetCustomerHistory)) : null;


            Response.Headers.Add("X-Pagination", Helpers.PaginationMetadata.GeneratePaginationMetadata(trips, resourceParameters, prevLink, nextLink));

            var tripsToReturn = new List <TripHistoryDto>();

            foreach (var t in trips)
            {
                var from = t.From;
                var to   = t.To;

                tripsToReturn.Add(new TripHistoryDto()
                {
                    CustomerId = t.CustomerId,
                    DriverId   = t.DriverId,
                    Rating     = t.Rating,
                    Id         = t.Id,
                    From       = Helpers.Location.PointToPlaceDto(from),
                    To         = Helpers.Location.PointToPlaceDto(to),
                    FinishTime = t.FinishTime,
                    Price      = t.Price,
                    Distance   = t.Distance
                });
            }

            return(Ok(tripsToReturn));
        }