Пример #1
0
        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));
        }
Пример #3
0
        public ActionResult Facade()
        {
            PriceComparer c    = new PriceComparer();
            IList <Book>  list = c.Compare(1);

            return(View());
        }
Пример #4
0
 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));
 }