예제 #1
0
        public void Create_DataCorrect_BalanceAndTransactionCreated()
        {
            var invoice = InvoiceFaker.Create();

            var balance = FundingBalanceRepository.Create(
                invoice.entity_id, invoice.entity_type, invoice.currency_type
                );

            FundingBalanceRepository.AddFunds(balance, invoice);

            Assert.NotNull(balance);

            var txs = FundingTransactionRepository.Get(invoice.entity_id, invoice.entity_type, invoice.currency_type);

            Assert.AreEqual(1, txs.Length);

            var transaction = txs[0];

            balance = balance.Refresh();

            Assert.AreEqual(invoice.amount, balance.balance);

            Assert.AreEqual(balance.entity_id, transaction.entity_id);
            Assert.AreEqual(balance.entity_type, transaction.entity_type);
            Assert.AreEqual(balance.currency_type, transaction.currency_type);
        }
예제 #2
0
        public static FundingBalance FundEntity(
            User from, int entityId, EntityType entityType, decimal amount, CurrencyType currencyType
            )
        {
            var balance = FundingBalanceRepository.FindOrCreate(entityId, entityType, currencyType);

            balance = FundingBalanceRepository.AddFunds(from, balance, amount);

            return(balance.Refresh());
        }
예제 #3
0
        public void AddFunds_DataCorrect_AddFunds()
        {
            var user    = UserFaker.Create();
            var invoice = InvoiceFaker.Create(user);

            var balance = FundingBalanceRepository.Create(
                invoice.entity_id, invoice.entity_type, invoice.currency_type
                );

            FundingBalanceRepository.AddFunds(balance, invoice);

            Assert.NotNull(balance);

            balance = balance.Refresh();

            Assert.AreEqual(invoice.amount, balance.balance);

            var newInvoice = InvoiceFaker.Create(user, invoice.entity_id);

            balance = FundingBalanceRepository.AddFunds(balance, newInvoice).Refresh();

            Assert.AreEqual(invoice.amount + newInvoice.amount, balance.balance);
        }
예제 #4
0
        // TODO: add functionality for user balances
        public static FundingBalance FundEntity(Invoice invoice)
        {
            if (invoice.status != InvoiceStatus.Confirmed)
            {
                return(null);
            }

            var balance = FundingBalanceRepository.Find(invoice.entity_id, invoice.entity_type, invoice.currency_type);

            balance = balance ?? FundingBalanceRepository.Create(
                invoice.entity_id, invoice.entity_type, invoice.currency_type
                );

            if (invoice.entity_type == EntityType.UserBalance)
            {
            }
            else
            {
                balance = FundingBalanceRepository.AddFunds(balance, invoice);
            }

            return(balance.Refresh());
        }