public PagedResponse <MechanismDto> Execute(MechanismSearch search)
        {
            var query = _context.Mechanisms.AsQueryable();

            if (!string.IsNullOrEmpty(search.Name) || !string.IsNullOrWhiteSpace(search.Name))
            {
                query = query.Where(x => x.Name.ToLower().Contains(search.Name.ToLower()));
            }

            var skipCount = search.PerPage * (search.Page - 1);
            var response  = new PagedResponse <MechanismDto>
            {
                CurrentPage  = search.Page,
                ItemsPerPage = search.PerPage,
                TotalCount   = query.Count(),
                Items        = _mapper.Map <List <MechanismDto> >(query.Skip(skipCount).Take(search.PerPage).ToList())
            };

            return(response);
        }
 public IActionResult Get([FromQuery] MechanismSearch search, [FromServices] IGetMechanismsQuery query)
 {
     return(Ok(_executor.ExecuteQuery(query, search)));
 }