public async Task <ServiceResponse <GetFishesFromAquariumResponse> > GetFishesFromAquarium(int aquariumId, GetFishesFromAquariumRequest request)
        {
            bool isQueryIncluded = !string.IsNullOrWhiteSpace(request.Query);

            var dbQuery = Context.Fishes.Where(f => f.IsAlive && f.AquariumId == aquariumId);

            if (isQueryIncluded)
            {
                string queryToLower = request.Query.ToLower();
                dbQuery = dbQuery.Where(f => f.Name.ToLower().Contains(queryToLower));
            }

            dbQuery = FishQuerySorter.GetFishesSortQuery(dbQuery, request.OrderBy);

            var totalNumberOfItems = dbQuery.Count();
            var fishes             = dbQuery.Skip((request.PageNumber - 1) * request.PageSize).Take(request.PageSize).ToList();

            var fishesToResponse = Mapper.Map <List <Fish>, List <FishForGetFishesFromAquariumResponse> >(fishes);

            var response = new GetFishesFromAquariumResponse(request, fishesToResponse, totalNumberOfItems, request.OrderBy ?? GetFishesOrderBy.NameAsc);

            return(new ServiceResponse <GetFishesFromAquariumResponse>(HttpStatusCode.OK, response));
        }
        public async Task <IActionResult> GetFishesFromAquarium([FromRoute] int aquariumId, [FromQuery] GetFishesFromAquariumRequest request)
        {
            var response = await _fishService.GetFishesFromAquarium(aquariumId, request);

            return(SendResponse(response));
        }