Esempio n. 1
0
 private static void UpdateTransactionEntity(
     BudgetTransaction budgetTransaction,
     Entities.BudgetTransaction budgetTransactionEntity)
 {
     budgetTransactionEntity.Amount          = budgetTransaction.Amount;
     budgetTransactionEntity.CreditAccountId = budgetTransaction.CreditAccount.AccountId;
     budgetTransactionEntity.DebitAccountId  = budgetTransaction.DebitAccount.AccountId;
 }
Esempio n. 2
0
        public void Update(Budget budget)
        {
            Entities.Budget budgetEntity = m_dbContext.Budgets
                                           .Include(b => b.Transactions)
                                           .Single(b => b.BudgetId == budget.BudgetId);
            budgetEntity.Name   = budget.Name;
            budgetEntity.Period = (BudgetPeriod)budget.Period;

            Entities.BudgetTransaction initialTransactionEntity = budgetEntity.Transactions.Single(t => t.IsInitial);
            UpdateTransactionEntity(budget.InitialTransaction, initialTransactionEntity);

            List <Entities.BudgetTransaction> transactionEntities =
                budgetEntity.Transactions
                .Where(t => !t.IsInitial && !t.IsSurplus)
                .ToList();
            var transactionIds = new HashSet <int>(
                budget.Transactions
                .Select(t => t.BudgetTransactionId)
                );

            foreach (Entities.BudgetTransaction transactionEntity in transactionEntities)
            {
                if (transactionIds.Contains(transactionEntity.BudgetTransactionId))
                {
                    // update existing transaction
                    BudgetTransaction transaction = budget.Transactions
                                                    .Single(t => t.BudgetTransactionId == transactionEntity.BudgetTransactionId);
                    UpdateTransactionEntity(transaction, transactionEntity);
                }
                else
                {
                    // remove missing transaction
                    budgetEntity.Transactions.Remove(transactionEntity);
                }
            }

            // add new transactions
            var transactionEntityIds = new HashSet <int>(transactionEntities.Select(t => t.BudgetTransactionId));
            IEnumerable <BudgetTransaction> transactionsWithNoEntity =
                budget.Transactions.Where(t => !transactionEntityIds.ToList().Contains(t.BudgetTransactionId));

            foreach (BudgetTransaction transactionWithNoEntity in transactionsWithNoEntity)
            {
                budgetEntity.Transactions.Add(ToEntity(budgetEntity, transactionWithNoEntity));
            }

            Entities.BudgetTransaction surplusTransactionEntity = budgetEntity.Transactions.Single(t => t.IsSurplus);
            UpdateTransactionEntity(budget.SurplusTransaction, surplusTransactionEntity);

            m_dbContext.SaveChanges();
        }
Esempio n. 3
0
        private static BudgetTransaction FromEntity(Entities.BudgetTransaction budgetTransactionEntity)
        {
            var budgetTransaction = new BudgetTransaction
            {
                BudgetTransactionId = budgetTransactionEntity.BudgetTransactionId,
                CreditAccount       = new AccountLink
                {
                    AccountId = budgetTransactionEntity.CreditAccount.AccountId,
                    Name      = budgetTransactionEntity.CreditAccount.Name,
                    Type      = budgetTransactionEntity.CreditAccount.Type,
                    SubType   = budgetTransactionEntity.CreditAccount.SubType
                },
                DebitAccount = new AccountLink
                {
                    AccountId = budgetTransactionEntity.DebitAccount.AccountId,
                    Name      = budgetTransactionEntity.DebitAccount.Name,
                    Type      = budgetTransactionEntity.DebitAccount.Type,
                    SubType   = budgetTransactionEntity.DebitAccount.SubType
                },
                Amount = budgetTransactionEntity.Amount
            };

            return(budgetTransaction);
        }
Esempio n. 4
0
        private static Entities.BudgetTransaction ToEntity(Entities.Budget budgetEntity, BudgetTransaction budgetTransaction)
        {
            var transactionEntity = new Entities.BudgetTransaction
            {
                Budget          = budgetEntity,
                CreditAccountId = budgetTransaction.CreditAccount.AccountId,
                DebitAccountId  = budgetTransaction.DebitAccount.AccountId,
                Amount          = budgetTransaction.Amount,
                IsInitial       = false,
                IsSurplus       = false
            };

            return(transactionEntity);
        }