public async Task <IPagedList <GetSchools.Summary> > Handle(GetSchools.Query request, CancellationToken cancellationToken)
        {
            var query = await _repo.GetAll(cancellationToken) as IEnumerable <SchoolReadModel>;

            if (string.IsNullOrEmpty(request.SearchPattern) == false)
            {
                query = query.Where(x =>
                                    x.Name.Contains(request.SearchPattern, StringComparison.InvariantCultureIgnoreCase) ||
                                    x.City.Contains(request.SearchPattern, StringComparison.InvariantCultureIgnoreCase) ||
                                    x.Address.Contains(request.SearchPattern, StringComparison.InvariantCultureIgnoreCase));
            }

            return(query
                   .Select(x => new GetSchools.Summary()
            {
                Id = x.Id.GetGuid(), Name = x.Name, Address = x.Address, City = x.City,
                Status = x.GetEffectiveStatus(_clock.GetTodayDate())
            })
                   .ToPagedList(request.PageNo, request.PageSize));
        }
 public async Task <IActionResult> Index([FromQuery] GetSchools.Query query)
 {
     return(Ok(await _engine.Query(query)));
 }