public override async Task <IList <DestinationPreviewDto> > OnHandle(GetDestinationsPreviewQuery request, CancellationToken cancellationToken)
        {
            var query = Context.Destinations as IQueryable <Destination>;

            if (request.HasOrder())
            {
                query = query.OrderBy(request.OrderBy, request.IsDescending());
            }

            if (request.HasQuery())
            {
                query = query
                        .Where(x => x.Name.ToLowerInvariant()
                               .Contains(request.Query.ToLowerInvariant()));
            }

            var count = await query.CountAsync(cancellationToken);

            var destinations = await query
                               .Skip(request.PageSize *(request.PageNumber - 1))
                               .Take(request.PageSize)
                               .ToListAsync(cancellationToken);

            return(_mapper.Map <IList <DestinationPreviewDto> >(destinations));
        }
        public async Task <IActionResult> GetAllDestinationsAsync(
            [FromQuery] PagingOptions pagingOptions,
            [FromQuery] SortOptions sortOptions,
            [FromQuery] SearchOptions searchOptions,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            pagingOptions.PageNumber = pagingOptions.PageNumber ?? ApiSettings.DefaultPageNumber;
            pagingOptions.PageSize   = pagingOptions.PageSize ?? ApiSettings.DefaultPageSize;

            var query = new GetDestinationsPreviewQuery
            {
                PageNumber = pagingOptions.PageNumber.Value,
                PageSize   = pagingOptions.PageSize.Value,
                OrderBy    = sortOptions.OrderBy,
                Query      = searchOptions.Query
            };

            var result = await Mediator.Send(query, cancellationToken).ConfigureAwait(false);

            var destinations = Mapper.Map <IList <Destination> >(result);
            var response     = ResponseFactory.CreatePagedReponse(destinations, typeof(DestinationsController), query, ResponseStatus.Success, "1.0.0");

            return(Ok(response));
        }