public PageResponse <DishDTO> Execute(DishSearch search)
        {
            var query = _unitOfWork.Dish.GetAll();

            if (search.MinPrice.HasValue)
            {
                query = query.Where(p => p.Price >= search.MinPrice);
            }

            if (search.MaxPrice.HasValue)
            {
                query = query.Where(p => p.Price <= search.MaxPrice);
            }

            if (search.Title != null)
            {
                var keyword = search.Title.ToLower();

                query = query.Where(p => p.Title.ToLower().Contains(keyword));
            }

            if (search.CategoryId != null)
            {
                query = query.Where(p => p.CategoryId == search.CategoryId);
            }

            var totalCount = query.Count();

            query = query.Skip((search.PageNumber - 1) * search.PerPage).Take(search.PerPage);
            var pagesCount = (int)Math.Ceiling((double)totalCount / search.PerPage);

            var response = new PageResponse <DishDTO>
            {
                CurrentPage = search.PageNumber,
                TotalCount  = totalCount,
                PageCount   = pagesCount,
                Data        = query.Select(p => new DishDTO
                {
                    Id          = p.Id,
                    Titile      = p.Title,
                    Price       = p.Price,
                    Category    = p.Category.Name,
                    Serving     = p.Serving,
                    Ingridients = p.Ingredients,
                    CategoryId  = p.CategoryId
                })
            };

            return(response);
        }
        public ActionResult <PageResponse <DishDTO> > Get([FromQuery] DishSearch search)
        {
            var dishes = _dishService.Execute(search);

            return(Ok(dishes));
        }