public override async Task <IEnumerable <Item> > GetFilteredItemsAsync(CancellationToken token = default) { var priceComparer = new PriceComparer(); var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; var minPrice = PriceConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPrice).SelectedKey) ?? "0 pc"; var maxPrice = PriceConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPrice).SelectedKey) ?? "1 000 000 po"; try { await StoreViewModel.SemaphoreLibrary.WaitAsync(); using (var context = await StoreViewModel.GetLibraryContextAsync()) { return(context.Equipments.AsEnumerable().Where(equipment => equipment.Type.ToLower().Contains(type.ToLower()) && priceComparer.Compare(equipment.Price, minPrice) >= 0 && priceComparer.Compare(equipment.Price, maxPrice) <= 0 && ( (Helpers.RemoveDiacritics(equipment.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || (Helpers.RemoveDiacritics(equipment.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ) ).OrderBy(eq => eq.Name) .ToList()); } } catch { return(new List <Item>()); } finally { StoreViewModel.SemaphoreLibrary.Release(); } }
public IActionResult Search(string isbn) { PriceComparer comparer = new PriceComparer(); List <Book> books = comparer.Compare(isbn); return(View("Results", books)); }
public ActionResult Facade() { PriceComparer c = new PriceComparer(); IList <Book> list = c.Compare(1); return(View()); }
public override async Task <IEnumerable <Item> > FilterItems(IEnumerable <Item> items, CancellationToken token = default) { return(await Task.Run(() => { var priceComparer = new PriceComparer(); var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; var minPrice = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPrice).SelectedKey ?? "0 pc"; var maxPrice = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPrice).SelectedKey ?? "1 000 000 po"; //token.ThrowIfCancellationRequested(); return items.Where(item => { var equipment = item as Equipment; return equipment.Type.ToLower().Contains(type.ToLower()) && priceComparer.Compare(equipment.Price, minPrice) >= 0 && priceComparer.Compare(equipment.Price, maxPrice) <= 0 && ( (Helpers.RemoveDiacritics(equipment.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || (Helpers.RemoveDiacritics(equipment.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ); }).OrderBy(eq => eq.Name) .AsEnumerable(); }, token)); }