private static void UpdateTransactionEntity( BudgetTransaction budgetTransaction, Entities.BudgetTransaction budgetTransactionEntity) { budgetTransactionEntity.Amount = budgetTransaction.Amount; budgetTransactionEntity.CreditAccountId = budgetTransaction.CreditAccount.AccountId; budgetTransactionEntity.DebitAccountId = budgetTransaction.DebitAccount.AccountId; }
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(); }
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); }
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); }