Ejemplo n.º 1
0
 public SearchFacetsViewModel(MessageBus messageBus)
 {
     MessageBus = messageBus ?? throw new ArgumentNullException("messageBus");
     MessageBus.Subscribe <ServerSettingsChangedMessage>(m =>
     {
         if (m.ServiceModel == null)
         {
             SelectedFacets.Clear();
             Facets.Clear();
         }
     });
     MessageBus.Subscribe <BuildSearchMessage>(m =>
     {
         SelectedFacets = Facets.SelectMany(f => f.Values).Where(v => v.Selected).ToList(); // save selected facets
         SelectedFacets.ForEach(v => m.Query.AddFacetValue(v.FacetName, v.ValueName));      // add facets to query
     });
     MessageBus.Subscribe <EndSearchMessage>(m =>
     {
         if (m.Results.ReturnOptions.HasFlag(ReturnOptions.Facets))
         {
             Facets.Clear();
             foreach (var facet in m.Results.Facets.Values)
             {
                 var viewModel = new FacetViewModel(facet);
                 viewModel.Values.ToList().ForEach(fv => fv.Selected = SelectedFacets.Any(sf => sf.Equals(fv)));
                 Facets.Add(viewModel);
             }
         }
     });
     Facets         = new ObservableCollection <FacetViewModel>();
     SelectedFacets = new List <FacetValueViewModel>();
 }