Пример #1
0
        /// <summary>
        /// Delete a TransactionRelationship with its Id and Update IsDeleted IF that TransactionRelationship has relationship with others
        /// </summary>
        /// <param name="TransactionRelationshipId">Id of TransactionRelationship</param>
        public void DeleteTransactionRelationshipRs(int Id)
        {
            TransactionRelationship deleteTransactionRelationshipRs = GetTransactionRelationshipById(Id);

            deleteTransactionRelationshipRs.IsDeleted = true;
            UpdateTransactionRelationship(deleteTransactionRelationshipRs);
        }
Пример #2
0
        private void PayCreditCardExecute(object obj)
        {
            IEnumerable <Payment> pendingCreditCardPayments =
                m_transactionService.GetPendingCreditCardPayments(SelectedItem.AccountId);

            if (pendingCreditCardPayments.Any())
            {
                IEnumerable <Transaction> paymentTransactions = pendingCreditCardPayments.Select(p => p.PaymentTransaction);
                if (m_transactionBatchCreateConfirmViewService.Show(paymentTransactions))
                {
                    m_transactionService.CreateMany(paymentTransactions);

                    var newTransactionRelationships = new List <TransactionRelationship>();
                    foreach (Payment pendingCreditCardPayment in pendingCreditCardPayments)
                    {
                        var transactionRelationship = new TransactionRelationship
                        {
                            SourceTransaction      = pendingCreditCardPayment.OriginalTransaction,
                            DestinationTransaction = pendingCreditCardPayment.PaymentTransaction,
                            Type = TransactionRelationshipType.CreditCardPayment
                        };

                        newTransactionRelationships.Add(transactionRelationship);
                    }

                    m_transactionRelationshipService.CreateMany(newTransactionRelationships);
                }

                PopulateAccountTreeItems();
            }
            else
            {
                m_noPendingCreditCardTrasnactionsViewService.Show(SelectedItem.Name);
            }
        }
Пример #3
0
        /// <summary>
        /// Delete TransactionRelationship with specific id
        /// </summary>
        /// <param name="Id">TransactionRelationship Id</param>
        public void DeleteTransactionRelationship(int Id)
        {
            TransactionRelationship deletedTransactionRelationship = GetTransactionRelationshipById(Id);

            Context.TransactionRelationship.Remove(deletedTransactionRelationship);
            Context.Entry(deletedTransactionRelationship).State = EntityState.Deleted;
            Context.SaveChanges();
        }
Пример #4
0
        public static void CreateRelationship(TransactionRelationshipViewModel model)
        {
            TransactionRepository transactionRelationshipRepository = new Domain.Account.Repositories.TransactionRepository(new Domain.Account.ErpAccountDbContext());
            var transactionRelationship = new TransactionRelationship();

            AutoMapper.Mapper.Map(model, transactionRelationship);
            transactionRelationship.IsDeleted      = false;
            transactionRelationship.CreatedUserId  = WebSecurity.CurrentUserId;
            transactionRelationship.ModifiedUserId = WebSecurity.CurrentUserId;
            transactionRelationship.AssignedUserId = WebSecurity.CurrentUserId;
            transactionRelationship.CreatedDate    = DateTime.Now;
            transactionRelationship.ModifiedDate   = DateTime.Now;
            transactionRelationshipRepository.InsertTransactionRelationship(transactionRelationship);
        }
Пример #5
0
 /// <summary>
 /// Update TransactionRelationship into database
 /// </summary>
 /// <param name="TransactionRelationship">TransactionRelationship object</param>
 public void UpdateTransactionRelationship(TransactionRelationship TransactionRelationship)
 {
     Context.Entry(TransactionRelationship).State = EntityState.Modified;
     Context.SaveChanges();
 }
Пример #6
0
 /// <summary>
 /// Insert TransactionRelationship into database
 /// </summary>
 /// <param name="TransactionRelationship">Object infomation</param>
 public void InsertTransactionRelationship(TransactionRelationship TransactionRelationship)
 {
     Context.TransactionRelationship.Add(TransactionRelationship);
     Context.Entry(TransactionRelationship).State = EntityState.Added;
     Context.SaveChanges();
 }
Пример #7
0
        public void TestCreateTransactionRelationship()
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            using (var sqliteMemoryWrapper = new SqliteMemoryWrapper())
            {
                var currencyFactory   = new CurrencyFactory();
                var usdCurrencyEntity = currencyFactory.Create(CurrencyPrefab.Usd, true);
                currencyFactory.Add(sqliteMemoryWrapper.DbContext, usdCurrencyEntity);

                var accountFactory = new AccountFactory();

                Entities.Account checkingAccountEntity =
                    accountFactory.Create(AccountPrefab.Checking, usdCurrencyEntity);
                Entities.Account rentPrepaymentAccountEntity =
                    accountFactory.Create(AccountPrefab.RentPrepayment, usdCurrencyEntity);
                Entities.Account rentExpenseAccountEntity =
                    accountFactory.Create(AccountPrefab.RentExpense, usdCurrencyEntity);
                Entities.Account creditCardAccountEntity =
                    accountFactory.Create(AccountPrefab.CreditCard, usdCurrencyEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, checkingAccountEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, rentPrepaymentAccountEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, rentExpenseAccountEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, creditCardAccountEntity);

                var transactionEntities = new Entities.Transaction[]
                {
                    new Entities.Transaction
                    {
                        CreditAccount = checkingAccountEntity,
                        DebitAccount  = rentPrepaymentAccountEntity,
                        Amount        = 60m,
                        At            = new DateTime(2018, 1, 1, 8, 31, 0)
                    },
                    new Entities.Transaction
                    {
                        CreditAccount = creditCardAccountEntity,
                        DebitAccount  = rentExpenseAccountEntity,
                        Amount        = 10m,
                        At            = new DateTime(2018, 1, 1, 8, 32, 0)
                    },
                    new Entities.Transaction
                    {
                        CreditAccount = rentPrepaymentAccountEntity,
                        DebitAccount  = creditCardAccountEntity,
                        Amount        = 10m,
                        At            = new DateTime(2018, 1, 1, 8, 33, 0)
                    }
                };

                sqliteMemoryWrapper.DbContext.Transactions.AddRange(transactionEntities);
                sqliteMemoryWrapper.DbContext.SaveChanges();

                var checkingToRentPrepaymentRelationship = new Entities.AccountRelationship
                {
                    SourceAccount      = checkingAccountEntity,
                    DestinationAccount = rentPrepaymentAccountEntity,
                    Type = AccountRelationshipType.PhysicalToLogical
                };
                var checkingToGroceriesPrepaymentRelationship = new Entities.AccountRelationship
                {
                    SourceAccount      = rentPrepaymentAccountEntity,
                    DestinationAccount = rentExpenseAccountEntity,
                    Type = AccountRelationshipType.PrepaymentToExpense
                };

                sqliteMemoryWrapper.DbContext.AccountRelationships.Add(checkingToRentPrepaymentRelationship);
                sqliteMemoryWrapper.DbContext.AccountRelationships.Add(checkingToGroceriesPrepaymentRelationship);
                sqliteMemoryWrapper.DbContext.SaveChanges();

                var transactionService = new TransactionService(
                    loggerFactory,
                    sqliteMemoryWrapper.DbContext
                    );
                var transactionRelationshipService = new TransactionRelationshipService(
                    loggerFactory,
                    sqliteMemoryWrapper.DbContext
                    );

                Transaction creditCardToExpenseTransaction    = transactionService.Get(transactionEntities[1].TransactionId);
                Transaction prepaymentToCreditCardTransaction = transactionService.Get(transactionEntities[2].TransactionId);
                var         newTransactionRelationship        = new TransactionRelationship
                {
                    SourceTransaction      = creditCardToExpenseTransaction,
                    DestinationTransaction = prepaymentToCreditCardTransaction,
                    Type = TransactionRelationshipType.CreditCardPayment
                };
                transactionRelationshipService.Create(newTransactionRelationship);

                List <Entities.TransactionRelationship> transactionRelationshipEntities =
                    sqliteMemoryWrapper.DbContext.TransactionRelationships.ToList();

                Assert.AreEqual(1, transactionRelationshipEntities.Count);
                Assert.AreEqual(newTransactionRelationship.TransactionRelationshipId, transactionRelationshipEntities[0].TransactionRelationshipId);
                Assert.AreEqual(newTransactionRelationship.SourceTransaction.TransactionId, transactionRelationshipEntities[0].SourceTransaction.TransactionId);
                Assert.AreEqual(newTransactionRelationship.DestinationTransaction.TransactionId, transactionRelationshipEntities[0].DestinationTransaction.TransactionId);
                Assert.AreEqual(newTransactionRelationship.Type, transactionRelationshipEntities[0].Type);
            }
        }