private void HandleTransactionActivityChange(TransactionViewModel transaction) { transaction.WhenTransactionActivityChanged.Subscribe((t) => { if (transaction.IsActive) { AddToPeriodic(transaction); } else { RemoveFromPeriodic(transaction); } SetParentActivity(transaction, transaction.IsActive); }); }
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; } } } }
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; } } }
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(); }); }
internal TransactionEventArgs(TransactionViewModel transaction) { Transaction = transaction; }