private static void SetAdditionalFilters(IAdvancedFiltersViewModel advancedFiltersViewModel, SearchQueryRequest searchQueryRequest) { foreach (var filterViewModel in advancedFiltersViewModel.AdditionalFilters.OfType <BindableFilterViewModel>()) { SetValueByExpression(filterViewModel.BindingExpression, searchQueryRequest, filterViewModel); } }
public IQueryRequest Create(IQueryRequest originalRequest, IAdvancedFiltersViewModel advancedFiltersViewModel) { IQueryRequest result = originalRequest; if (originalRequest is SearchQueryRequest sourceSearchQueryRequest) { var searchQueryRequest = new SearchQueryRequest { League = sourceSearchQueryRequest.League, Query = { Name = sourceSearchQueryRequest.Query.Name, Term = sourceSearchQueryRequest.Query.Term, Type = sourceSearchQueryRequest.Query.Type, Filters = { TypeFilters = { Category = (OptionFilter)sourceSearchQueryRequest.Query.Filters.TypeFilters.Category?.Clone(), Rarity = (OptionFilter)sourceSearchQueryRequest.Query.Filters.TypeFilters.Rarity?.Clone() } } } }; SetStatFilters(advancedFiltersViewModel, searchQueryRequest); SetAdditionalFilters(advancedFiltersViewModel, searchQueryRequest); result = searchQueryRequest; } return(result); }
private static void SetStatFilters(IAdvancedFiltersViewModel advancedFiltersViewModel, SearchQueryRequest searchQueryRequest) { var enabledStatFilterViewModels = advancedFiltersViewModel.AllStatFilters.Where(f => f.IsEnabled == true); var statFilters = new StatFilters(); foreach (var enabledStatFilterViewModel in enabledStatFilterViewModels) { StatFilter statFilter = CreateStatFilter(enabledStatFilterViewModel); statFilters.Filters.Add(statFilter); } searchQueryRequest.Query.Stats.Clear(); searchQueryRequest.Query.Stats.Add(statFilters); }
public ItemSearchResultOverlayViewModel( IPoeTradeApiClient tradeClient, IItemListingsViewModelFactory itemListingsViewModelFactory, IQueryRequestFactory queryRequestFactory, IMediator mediator, IPricePredictionViewModel pricePredictionViewModel, IAdvancedFiltersViewModel advancedFiltersViewModel) { this.poeTradeApiClient = tradeClient; this.itemListingsViewModelFactory = itemListingsViewModelFactory; this.queryRequestFactory = queryRequestFactory; this.mediator = mediator; this.PricePrediction = pricePredictionViewModel; this.AdvancedFilters = advancedFiltersViewModel; this.ExecuteAdvancedQueryCommand = ReactiveCommand.CreateFromTask(this.ExecuteAdvancedQueryAsync); this.ExecuteAdvancedQueryCommand.IsExecuting.ToProperty(this, x => x.IsBusy); }