public async Task <IActionResult> SearchBooks([FromBody] AvailableBookSearchDto model)
        {
            var result = await _availableBookService.SearchAvailableBooks(model);

            return(new OkObjectResult(result));
        }
        public async Task <CollectionResult <AvailableBookDto> > SearchAvailableBooks(AvailableBookSearchDto model)
        {
            var result = new CollectionResult <AvailableBookDto>();

            var entities = _availableBookRepository
                           .Get()
                           .WhereIf(model.Genre != null, item => item.Book.Genre == model.Genre)
                           .WhereIf(model.Condition != null, item => item.Book.Condition == model.Condition)
                           .WhereIf(!string.IsNullOrEmpty(model.SearchString),
                                    x => x.Book.Name.ToLower().Contains(model.SearchString.ToLower()) ||
                                    x.Book.Author.ToLower().Contains(model.SearchString.ToLower()))
                           .Include(x => x.Book)
                           .Include(x => x.ReservedBooks)
                           .AsQueryable();

            var searchResult = await entities.ToListAsync();

            if (searchResult != null)
            {
                result.Items        = _mapper.Map <List <AvailableBook>, List <AvailableBookDto> >(searchResult);
                result.IsSuccessful = true;
            }

            return(result);
        }