Exemplo n.º 1
0
        // Decide whether item should show timestamp header, name header etc...
        private void DecorateItems(IEnumerable <InstaDirectInboxItemWrapper> wrappedItems)
        {
            var lastItem = ObservableItems.FirstOrDefault();
            var itemList = wrappedItems.ToList();
            var refItem  = itemList.Last();

            if (lastItem != null)
            {
                if (refItem.Timestamp <= lastItem.Timestamp)
                {
                    lastItem.ShowTimestampHeader = !IsCloseEnough(lastItem.Timestamp, refItem.Timestamp);
                    lastItem.ShowNameHeader      = lastItem.UserId != refItem.UserId && !lastItem.FromMe && Users.Count > 1;
                }
                else
                {
                    // New item added to the top
                    var latestItem = ObservableItems.Last();
                    refItem.ShowTimestampHeader = !IsCloseEnough(latestItem.Timestamp, refItem.Timestamp);
                    refItem.ShowNameHeader      = latestItem.UserId != refItem.UserId && !latestItem.FromMe && Users.Count > 1;
                }
            }

            for (int i = itemList.Count - 1; i >= 1; i--)
            {
                itemList[i].ShowTimestampHeader = !IsCloseEnough(itemList[i].Timestamp, itemList[i - 1].Timestamp);
                itemList[i].ShowNameHeader      = itemList[i].UserId != itemList[i - 1].UserId && !itemList[i].FromMe && Users.Count > 1;
            }
        }
Exemplo n.º 2
0
        public FeedsViewModel(ItemBoxViewModel itemBox)
        {
            SelectedIndex = itemBox.ToNumForFeed();

            Network = new ObservableItems <FeedItemViewModel>(service.networkItems);
            Popular = new ObservableItems <FeedItemViewModel>(service.popularItems);
            Recent  = new ObservableItems <FeedItemViewModel>(service.recentItems);
        }
Exemplo n.º 3
0
        public virtual void AddItem(Employee employee)
        {
            var item = new PremiumItem()
            {
                Employee = employee,
                Premium  = this
            };

            ObservableItems.Add(item);
        }
Exemplo n.º 4
0
        private void FixItemList()
        {
            // Somehow item list got messed up and items are not unique anymore
            var duplicates = ObservableItems.GroupBy(x => x.ItemId).Where(g => g.Count() > 1)
                             .Select(y => y);

            foreach (var duplicateGroup in duplicates)
            {
                var duplicate = duplicateGroup.First();
                ObservableItems.Remove(duplicate);
            }
        }
Exemplo n.º 5
0
 private void SetTagged()
 {
     if (currentTag == null)
     {
         Tagged = new ObservableItems <BookmarkItemViewModel>(service.taggedItems);
     }
     else
     {
         Tagged = new ObservableItems <BookmarkItemViewModel>(service.allItems.Where(x => x.Tags.Contains(currentTag)).ToList());
     }
     Tagged.Initialize();
 }
Exemplo n.º 6
0
        public BookmarksViewModel(ItemBoxViewModel itemBox)
        {
            SelectedIndex = itemBox.ToNum();
            Messenger.Default.Register <GenericMessage <Tag> >(this, ReflectToTag);

            All      = new ObservableItems <BookmarkItemViewModel>(service.allItems);
            Unread   = new ObservableItems <BookmarkItemViewModel>(service.unreadItems);
            Private_ = new ObservableItems <BookmarkItemViewModel>(service.privateItems);
            Public_  = new ObservableItems <BookmarkItemViewModel>(service.publicItems);
            Untagged = new ObservableItems <BookmarkItemViewModel>(service.untaggedItems);
            Tagged   = new ObservableItems <BookmarkItemViewModel>(service.taggedItems);

            GlobalMessenger.Register <BookmarkChangeMessage>(this, m =>
            {
                if (m.Type == BookmarkChangeType.Add)
                {
                    All.Refresh();
                    Unread.Refresh();
                    Private_.Refresh();
                    Public_.Refresh();
                    Untagged.Refresh();
                    Tagged.Refresh();
                }
                else if (m.Type == BookmarkChangeType.Delete || m.Type == BookmarkChangeType.Modify)
                {
                    if (All.Items.Contains(m.Content))
                    {
                        All.Refresh();
                    }
                    if (Unread.Items.Contains(m.Content))
                    {
                        Unread.Refresh();
                    }
                    if (Private_.Items.Contains(m.Content))
                    {
                        Private_.Refresh();
                    }
                    if (Public_.Items.Contains(m.Content))
                    {
                        Public_.Refresh();
                    }
                    if (Untagged.Items.Contains(m.Content))
                    {
                        Untagged.Refresh();
                    }
                    if (Tagged.Items.Contains(m.Content))
                    {
                        Tagged.Refresh();
                    }
                }
            });
        }
Exemplo n.º 7
0
        public virtual void AddItem(SubdivisionIssueOperation operation, int count)
        {
            if (operation.Issued == 0)
            {
                throw new InvalidOperationException("Этот метод можно использовать только с операциями выдачи.");
            }

            if (Items.Any(p => DomainHelper.EqualDomainObjects(p.SubdivisionWriteoffOperation?.IssuedOperation, operation)))
            {
                logger.Warn("Номенклатура из этой выдачи уже добавлена. Пропускаем...");
                return;
            }

            ObservableItems.Add(new WriteoffItem(this, operation, count));
        }
Exemplo n.º 8
0
        private void UpdateItemList(ICollection <DirectItem> source)
        {
            if (source == null)
            {
                return;
            }
            var convertedSource = source.Select(x => new InstaDirectInboxItemWrapper(x, this, _instaApi)).ToList();

            DecorateItems(convertedSource);
            if (ObservableItems.Count == 0)
            {
                foreach (var item in convertedSource)
                {
                    ObservableItems.Add(item);
                }
                return;
            }

            foreach (var item in convertedSource)
            {
                var existingItem = ObservableItems.SingleOrDefault(x => x.Equals(item));
                var existed      = existingItem != null;

                if (existed)
                {
                    if (item.Reactions != null)
                    {
                        existingItem.Reactions.Update(item.Reactions, Users);
                    }
                    continue;
                }
                for (var i = ObservableItems.Count - 1; i >= 0; i--)
                {
                    if (item.Timestamp > ObservableItems[i].Timestamp)
                    {
                        ObservableItems.Insert(i + 1, item);
                        break;
                    }

                    if (i == 0)
                    {
                        ObservableItems.Insert(0, item);
                    }
                }
            }
        }
Exemplo n.º 9
0
        public virtual void AddItem(StockPosition position, Warehouse warehouse, int count)
        {
            if (position == null)
            {
                throw new ArgumentNullException(nameof(position));
            }

            if (warehouse == null)
            {
                throw new ArgumentNullException(nameof(warehouse));
            }

            if (Items.Any(p => p.WarehouseOperation?.ExpenseWarehouse == warehouse && position.Equals(p.StockPosition)))
            {
                logger.Warn($"Позиция [{position}] для склада {warehouse.Name} уже добавлена. Пропускаем...");
                return;
            }

            ObservableItems.Add(new WriteoffItem(this, position, warehouse, count));
        }
Exemplo n.º 10
0
 public virtual void RemoveItem(WriteoffItem item)
 {
     ObservableItems.Remove(item);
 }