public async Task <ActionResult <IEnumerable <Agency> > > GetAllAsync(
            [FromServices] IAgencyRepository repository,
            [FromQuery] PagedAgencyParameters pageParameters,
            [FromQuery] bool?isCapital,
            [FromQuery] bool?isStation,
            [FromQuery] bool?isOpen
            )
        {
            var agencies = await repository.GetAll(
                pageParameters,
                isCapital,
                isStation,
                isOpen
                );

            var metadata = new
            {
                agencies.TotalCount,
                agencies.PageSize,
                agencies.CurrentPage,
                agencies.TotalPages,
                agencies.HasNext,
                agencies.HasPrevious
            };

            Response.Headers.Add(
                "X-Pagination",
                JsonSerializer.Serialize(metadata)
                );

            return(Ok(agencies));
        }
        public async Task <PagedList <Agency> > GetAll(
            PagedAgencyParameters pagedParameters,
            bool?isCapital,
            bool?isStation,
            bool?isOpen
            )
        {
            var dbQuery = _context.Agencies
                          .AsNoTracking()
                          .AsQueryable();

            if (isCapital.HasValue)
            {
                dbQuery = dbQuery.Where(a => a.IsCapital == isCapital);
            }

            if (isStation.HasValue)
            {
                dbQuery = dbQuery.Where(a => a.IsStation == isStation);
            }

            var localQuery = await dbQuery.ToListAsync <Agency>();

            if (isOpen.HasValue)
            {
                localQuery = localQuery
                             .Where(a => a.IsOpen == isOpen)
                             .OrderBy(a => a.DistanceInKm)
                             .ToList();
            }
            else
            {
                localQuery = localQuery
                             .OrderBy(a => a.DistanceInKm)
                             .ToList();
            }

            var pagedAgencies = PagedList <Agency> .ToPagedList(
                localQuery,
                pagedParameters.PageNumber,
                pagedParameters.PageSize);

            return(pagedAgencies);
        }