private async Task createWelcomeTransaction(string accountId) { var amount = 500; var explanation = "Gift from us to get started"; var senderAccountId = "systemAccount"; var welcomeTransaction = TransactionFactory.CreateTransaction(Guid.NewGuid().ToString(), amount, explanation, senderAccountId, accountId, DateTime.Now); await transations.AddObject(welcomeTransaction); var senderObject = await repository.GetObject(senderAccountId); senderObject.Data.Balance = senderObject.Data.Balance - amount; await repository.UpdateObject(senderObject); await generateTransactionNotification(welcomeTransaction); }
public async Task <IActionResult> Create([Bind(properties)] TransactionView model) { bool receiverExists = await checkIfReceiverAccountExists(model.ReceiverAccountId); if (receiverExists) { var receiverObject = await accounts.GetObject(model.ReceiverAccountId); var senderObject = await accounts.GetObject(model.SenderAccountId); bool senderIsOk = validateSender(senderObject, model.Amount); //check if has enough balance and active card bool receiverIsOk = validateReceiverAndSender(receiverObject, senderObject); //c if (senderIsOk && receiverIsOk) { //receiverBalance receiverObject.Data.Balance = receiverObject.Data.Balance + model.Amount; //senderBalance senderObject.Data.Balance = senderObject.Data.Balance - model.Amount; //Transaction model.ID = Guid.NewGuid().ToString(); var transaction = TransactionFactory.CreateTransaction(model.ID, model.Amount, model.Explanation, model.SenderAccountId, model.ReceiverAccountId, DateTime.Now, model.ValidTo); await accounts.UpdateObject(senderObject); await accounts.UpdateObject(receiverObject); await transactions.AddObject(transaction); await generateTransactionNotification(transaction); TempData["Status"] = "Transaction successfully done to " + model.ReceiverAccountId + " from " + model.SenderAccountId + " in the amount of " + model.Amount + ". "; await confirmIfTransactionWasRequested(transaction); } } return(RedirectToAction("Index", new { id = model.SenderAccountId })); }
public async Task <IActionResult> Create([Bind(properties)] InsuranceView model) { //if (!ModelState.IsValid) return View(model); var accountObject = await accounts.GetObject(model.AccountId); bool isAccountOk = checkIfHasEnoughPaymentMoney(accountObject, model.Payment); bool isInsuranceDataOk = checkIfIsntInPast(model.ValidFrom, model.ValidTo); if (isAccountOk && isInsuranceDataOk) { model.ID = Guid.NewGuid().ToString(); var insurance = InsuranceViewFactory.Create(model); insurance.Data.Payment = model.Payment; insurance.Data.Type = model.Type; insurance.Data.ValidFrom = model.ValidFrom ?? DateTime.MinValue; insurance.Data.ValidTo = model.ValidTo ?? DateTime.MaxValue; insurance.Data.AccountId = model.AccountId; insurance.Data.Status = Status.Active.ToString(); accountObject.Data.Balance = accountObject.Data.Balance - model.Payment; var transaction = TransactionFactory.CreateTransaction(model.ID, model.Payment, model.Type + " insurance", "systemAccount", model.AccountId, model.ValidFrom, model.ValidTo); await insurances.AddObject(insurance); await accounts.UpdateObject(accountObject); await generateInsuranceNotification(insurance); await transactions.AddObject(transaction); TempData["Status"] = insurance.Data.Type + " insurance is now valid from " + insurance.Data.ValidFrom.ToString("dd/M/yyyy", CultureInfo.InvariantCulture) + " to " + insurance.Data.ValidTo.ToString("dd/M/yyyy", CultureInfo.InvariantCulture) + " in payment of " + insurance.Data.Payment; } return(RedirectToAction("Index")); }