public async Task <IActionResult> GetDriverHistory(TripHistoryResourceParameters resourceParameters) { var driverId = User.Claims.FirstOrDefault(c => c.Type == Helpers.Constants.Strings.JwtClaimIdentifiers.DriverId)?.Value; var trips = _tripsRepository.GetTripHistoriesForDriver(Guid.Parse(driverId), resourceParameters); var prevLink = trips.HasPrevious ? _resourceUriHelper.CreateResourceUri(resourceParameters, ResourceUriType.PrevoiusPage, nameof(GetDriverHistory)) : null; var nextLink = trips.HasNext ? _resourceUriHelper.CreateResourceUri(resourceParameters, ResourceUriType.NextPage, nameof(GetDriverHistory)) : 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)); }