Ejemplo n.º 1
0
        private void HandleTransactionActivityChange(TransactionViewModel transaction)
        {
            transaction.WhenTransactionActivityChanged.Subscribe((t) =>
            {
                if (transaction.IsActive)
                {
                    AddToPeriodic(transaction);
                }
                else
                {
                    RemoveFromPeriodic(transaction);
                }

                SetParentActivity(transaction, transaction.IsActive);
            });
        }
Ejemplo n.º 2
0
        private void SetParentActivity(TransactionViewModel transaction, bool isActive)
        {
            if (Transactions.All(pt => pt.ParentId != transaction.ParentId))
            {
                var parent = _transactions.FirstOrDefault(pt => pt.Id == transaction.ParentId);
                if (parent != null)
                {
                    parent.IsActive = isActive;

                    if (isActive)
                    {
                        parent.Amount += transaction.Amount;
                    }
                    else
                    {
                        parent.Amount -= transaction.Amount;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void HandleAgregatedTransaction(TransactionViewModel transaction)
        {
            if (Transactions.Count(t => t.SupplierId == transaction.SupplierId) == 1)
            {
                var child = Transactions.First(t => t.SupplierId == transaction.SupplierId);

                var newParent = new AgregatedTransaction
                {
                    EventDate        = transaction.Date,
                    AccountId        = transaction.AccountId,
                    SupplierId       = transaction.SupplierId.ToString(),
                    EventDescription = transaction.Description,
                    EventAmount      = child.IsActive ? child.Amount : 0,
                    Type             = TransactionType.Expense
                };

                if (child.ParentId > 0)
                {
                    newParent.EventId = child.ParentId;
                }

                var newParentVm = new TransactionViewModel(newParent);
                Transactions.Add(newParentVm);

                child.ParentId       = newParentVm.Id;
                newParentVm.IsActive = child.IsActive || transaction.IsActive;
            }

            var parent = Transactions.FirstOrDefault(t => t.SupplierId == transaction.SupplierId && t.ParentId == 0);

            if (parent != null)
            {
                transaction.ParentId = parent.Id;
                parent.IsActive      = parent.IsActive || transaction.IsActive;

                if (transaction.IsActive)
                {
                    parent.Amount += transaction.Amount;
                }
            }
        }
Ejemplo n.º 4
0
        private void HandleTransactionActivityChange(TransactionViewModel transaction)
        {
            transaction.WhenTransactionActivityChanged.Subscribe((t) =>
            {
                var category = GetCategoryById(transaction.Category);
                if (category == null)
                {
                    return;
                }

                if (transaction.IsActive)
                {
                    category.Spent += transaction.Amount;
                }
                else
                {
                    category.Spent -= transaction.Amount;
                }

                TransactionsView.Refresh();
            });
        }
Ejemplo n.º 5
0
 internal TransactionEventArgs(TransactionViewModel transaction)
 {
     Transaction = transaction;
 }