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); }