Ejemplo n.º 1
0
        public async Task RecurringTransactionService_Updates_Wallet_Updated_RecurringTransaction_Increase()
        {
            DateTime now = DateTime.UtcNow;

            UserModel user = new UserModel("Test User", new DateTime(), "*****@*****.**", "password", api.Enums.Currency.Euro);

            user._id  = "1234567891234567891234";
            user.Role = "user";

            WalletModel wallet = new WalletModel("Unit Test", 0, true, 490, null, api.Enums.WalletColor.Green, now);

            wallet._id = "1234567891234567891234";
            wallet.DateOffsetBalance = new List <DateOffsetBalance>();
            wallet.DateOffsetBalance.Add(new DateOffsetBalance(DateTime.UtcNow, 490));

            user.Wallets.Add(wallet);

            RecurringTransactionModel oldRecurringTransactionModel = new RecurringTransactionModel(user._id, wallet._id, "Netflix", 100, 27, api.Enums.TransactionCategory.Entertainment, api.Enums.RecurringType.Subscription);
            RecurringTransactionModel newRecurringTransactionModel = new RecurringTransactionModel(user._id, wallet._id, "Netflix", 110, 27, api.Enums.TransactionCategory.Entertainment, api.Enums.RecurringType.Subscription);

            RecurringTransactionService service = new RecurringTransactionService();
            WalletModel newWallet = await service.UpdateWalletForUpdatedRecurringTransaction(user, newRecurringTransactionModel, oldRecurringTransactionModel);

            newWallet.Balance.Should().Be(480);
            newWallet.LastUpdated.Should().NotBeOnOrBefore(now);
            newWallet.DateOffsetBalance.Should().NotBeNull();
        }
 public async Task UpdateRecurringTransaction(RecurringTransactionModel recurringTransaction)
 {
     try
     {
         await _recurringTransactionsRepository.Update(recurringTransaction._id, recurringTransaction);
     }
     catch (Exception e)
     {
         throw new Exception();
     }
 }
 public async Task CreateRecurringTransaction(string userId, RecurringTransactionModel recurringTransaction)
 {
     try
     {
         recurringTransaction.UserId = userId;
         await _recurringTransactionsRepository.Create(recurringTransaction);
     }
     catch (Exception e)
     {
         throw new Exception();
     }
 }
Ejemplo n.º 4
0
        public async Task <IActionResult> UpdateTransaction(RecurringTransactionModel recurringTransaction)
        {
            try
            {
                if (recurringTransaction._id == null)
                {
                    throw new NullReferenceException();
                }
                await _recurringTransactionService.UpdateRecurringTransaction(recurringTransaction);

                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest());
            }
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> PostRecurringTransaction(RecurringTransactionModel recurringTransaction)
        {
            try
            {
                if (recurringTransaction.Name == null)
                {
                    throw new NullReferenceException();
                }

                await _recurringTransactionService.CreateRecurringTransaction(userId, recurringTransaction);

                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest());
            }
        }
        public async Task <WalletModel> UpdateWalletForNewRecurringTransaction(UserModel user, RecurringTransactionModel recurringTransaction)
        {
            WalletModel wallet = user.Wallets.Where(wallet => wallet._id == recurringTransaction.WalletId).First();

            wallet.Balance    -= recurringTransaction.Amount;
            wallet.LastUpdated = DateTime.UtcNow;

            //If there is no entry for today. make one. else update todays date with new balance
            if (!wallet.DateOffsetBalance.Exists(dateoffsetbalance => dateoffsetbalance.Date.Date == DateTime.UtcNow.Date))
            {
                wallet.DateOffsetBalance.Add(new DateOffsetBalance(DateTime.UtcNow, wallet.Balance));
            }
            else
            {
                wallet.DateOffsetBalance.Where(dateoffsetbalance => dateoffsetbalance.Date.Date == DateTime.UtcNow.Date).First().Balance = wallet.Balance;
            }

            user.Wallets.Remove(user.Wallets.Where(a => a._id == wallet._id).First());
            return(wallet);
        }
        public async Task <WalletModel> UpdateWalletForDeletedRecurringTransaction(UserModel user, RecurringTransactionModel recurringTransactionModel)
        {
            WalletModel wallet = user.Wallets.Where(wallet => wallet._id == recurringTransactionModel.WalletId).First();

            wallet.Balance    += recurringTransactionModel.Amount;
            wallet.LastUpdated = DateTime.UtcNow;

            user.Wallets.Remove(user.Wallets.Where(a => a._id == wallet._id).First());
            return(wallet);
        }
        public async Task <WalletModel> UpdateWalletForUpdatedRecurringTransaction(UserModel user, RecurringTransactionModel newRecurringTransaction, RecurringTransactionModel oldRecurringTransaction)
        {
            double      difference = newRecurringTransaction.Amount - oldRecurringTransaction.Amount;
            WalletModel wallet     = user.Wallets.Where(wallet => wallet._id == oldRecurringTransaction.WalletId).First();

            wallet.Balance    -= difference;
            wallet.LastUpdated = DateTime.UtcNow;

            user.Wallets.Remove(user.Wallets.Where(a => a._id == wallet._id).First());
            return(wallet);
        }
Ejemplo n.º 9
0
 public async Task Update(string id, RecurringTransactionModel recurringTransaction) => await _recurringTransactions.ReplaceOneAsync(recurringTransaction => recurringTransaction._id == id, recurringTransaction);
Ejemplo n.º 10
0
 public async Task Create(RecurringTransactionModel recurringTransaction) => await _recurringTransactions.InsertOneAsync(recurringTransaction);