示例#1
0
        protected override void OnInitialize()
        {
            base.OnInitialize();

            ProductInfo  = new ProductInfo(this, CurrentLine.OfType <BaseOffer>());
            OrderWarning = new InlineEditWarning(UiScheduler, Manager);

            //если это отправленный заказ редактор не должен работать
            var currentOrderLine = new NotifyValue <OrderLine>();

            if (IsCurrentOrder)
            {
                currentOrderLine = CurrentLine.Select(v => (OrderLine)v).ToValue();
                currentOrderLine.Subscribe(v => CurrentLine.Value = v);
            }
            editor             = new Editor(OrderWarning, Manager, currentOrderLine, Lines.Cast <IList>().ToValue());
            OnlyWarningVisible = new NotifyValue <bool>(User.IsPreprocessOrders && IsCurrentOrder);
            CurrentLine.OfType <BaseOffer>()
            .Throttle(Consts.LoadOrderHistoryTimeout, Scheduler)
            .Select(x => RxQuery(s => BaseOfferViewModel.LoadOrderHistory(s, Cache, Settings.Value, x, Address)))
            .Switch()
            .Subscribe(HistoryOrders, CloseCancellation.Token);

            FilterItems.Select(p => p.Changed()).Merge().Throttle(Consts.FilterUpdateTimeout, UiScheduler)
            .Select(_ => Filter())
            .Subscribe(Lines, CloseCancellation.Token);
        }
 public void After_sort_assign_product_index()
 {
     offers = BaseOfferViewModel.SortByMinCostInGroup(offers, o => o.ProductId);
     Assert.IsFalse(offers[0].IsGrouped);
     Assert.IsTrue(offers[1].IsGrouped);
     Assert.IsFalse(offers[3].IsGrouped);
 }
 public void Sort_by_product()
 {
     offers = new List <Offer> {
         new Offer {
             ProductId = 1,
             Cost      = 53.38m,
         },
         new Offer {
             ProductId = 2,
             Cost      = 53.38m
         },
         new Offer {
             ProductId = 2,
             Cost      = 54.14m
         },
         new Offer {
             ProductId = 1,
             Cost      = 54.14m
         },
     };
     offers = BaseOfferViewModel.SortByMinCostInGroup(offers, o => o.ProductId);
     Assert.AreEqual(1, offers[0].ProductId);
     Assert.AreEqual(1, offers[1].ProductId);
     Assert.AreEqual(2, offers[2].ProductId);
     Assert.AreEqual(2, offers[3].ProductId);
 }
 public void Reset_group_key()
 {
     offers = BaseOfferViewModel.SortByMinCostInGroup(offers, o => o.ProductId);
     Assert.IsTrue(offers[1].IsGrouped);
     offers = BaseOfferViewModel.SortByMinCostInGroup(offers, o => o.CatalogId, false);
     Assert.IsFalse(offers[1].IsGrouped);
 }
        public void Group_by_product()
        {
            //5 разных товаров но цена у всех одинаковая, группы должны выделяться правильно
            offers = new List <Offer> {
                new Offer {
                    ProductId = 1,
                    Cost      = 53.38m,
                },
                new Offer {
                    ProductId = 2,
                    Cost      = 53.38m
                },
                new Offer {
                    ProductId = 2,
                    Cost      = 54.14m
                },
                new Offer {
                    ProductId = 1,
                    Cost      = 54.14m
                },
                new Offer {
                    ProductId = 3,
                    Cost      = 53.38m
                },
                new Offer {
                    ProductId = 4,
                    Cost      = 53.38m
                },
                new Offer {
                    ProductId = 5,
                    Cost      = 53.38m
                },
                new Offer {
                    ProductId = 6,
                    Cost      = 53.38m
                },
            };
            offers = BaseOfferViewModel.SortByMinCostInGroup(offers.OrderBy(o => Guid.NewGuid()).ToList(), o => o.ProductId);
            Assert.AreEqual(1, offers[0].ProductId);
            Assert.IsFalse(offers[0].IsGrouped);
            Assert.AreEqual(1, offers[1].ProductId);
            Assert.IsFalse(offers[1].IsGrouped);

            Assert.AreEqual(2, offers[2].ProductId);
            Assert.IsTrue(offers[2].IsGrouped);
            Assert.AreEqual(2, offers[3].ProductId);

            Assert.IsFalse(offers[4].IsGrouped);
            Assert.IsTrue(offers[5].IsGrouped);
            Assert.IsFalse(offers[6].IsGrouped);
            Assert.IsTrue(offers[7].IsGrouped);
        }