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(); } }
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()); } }
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); }
public async Task Update(string id, RecurringTransactionModel recurringTransaction) => await _recurringTransactions.ReplaceOneAsync(recurringTransaction => recurringTransaction._id == id, recurringTransaction);
public async Task Create(RecurringTransactionModel recurringTransaction) => await _recurringTransactions.InsertOneAsync(recurringTransaction);