public async Task <GetWidgetsResponseDto> GetWidgetsAsync(GetWidgetsRequestDto request, CancellationToken cancellationToken)
        {
            IEnumerable <WidgetDto> widgets;

            if (request.Query == null)
            {
                lock (m_lock)
                    widgets = m_widgets.Values.ToList();
            }
            else if (request.Query.Length == 0)
            {
                widgets = new WidgetDto[0];
            }
            else
            {
                lock (m_lock)
                    widgets = m_widgets.Values.Where(x => x.Name.Contains(request.Query)).ToList();
            }

            if (request.MinPrice != null)
            {
                widgets = m_widgets.Values.Where(x => x.Price >= request.MinPrice);
            }

            int total = widgets.Count();

            Func <WidgetDto, string> keySelector;

            if (request.Sort == WidgetField.Name)
            {
                keySelector = x => x.Name;
            }
            else
            {
                keySelector = x => x.Id;
            }

            widgets = request.Desc.GetValueOrDefault() ? widgets.OrderByDescending(keySelector) : widgets.OrderBy(keySelector);

            if (request.Limit != null)
            {
                widgets = widgets.Take(Math.Max(0, request.Limit ?? 10));
            }

            return(new GetWidgetsResponseDto {
                Widgets = widgets.ToList(), Total = total
            });
        }
 public Task <ServiceResult <GetWidgetsResponseDto> > GetWidgetsAsync(GetWidgetsRequestDto request, CancellationToken cancellationToken = default) =>
 TrySendRequestAsync(ConformanceApiHttpMapping.GetWidgetsMapping, request, cancellationToken);
 /// <summary>
 /// Gets widgets.
 /// </summary>
 public Task <ServiceResult <GetWidgetsResponseDto> > GetWidgetsAsync(GetWidgetsRequestDto request, CancellationToken cancellationToken)
 {
     return(TrySendRequestAsync(ExampleApiHttpMapping.GetWidgetsMapping, request, cancellationToken));
 }
 /// <inheritdoc />
 public Task <ServiceResult <GetWidgetsResponseDto> > GetWidgetsAsync(GetWidgetsRequestDto request, CancellationToken cancellationToken = default) =>
 Task.FromResult(Execute <GetWidgetsResponseDto>(request));