Gric
New member
- Joined
- Feb 25, 2023
- Messages
- 1
- Programming Experience
- Beginner
I'm stuck with Implementing method "TotalProvisionRevenue()" I need sum of all transactions provision . How can I get this data?
C#:
using BankingSystem.Exceptions;
using BankingSystem.Models;
using BankingSystem.Repositories;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BankingSystem.Services
{
public class BankService
{
public BankService()
{
Accounts = new AccountRepository();
Transactions = new TransactionRepository();
}
private AccountRepository Accounts { get; set; }
private TransactionRepository Transactions { get; set; }
public void ViewAccount()
{
Console.WriteLine("Please enter account number");
var accountNumber = Console.ReadLine();
var account = GetAccountByNumber(accountNumber);
if (account == null)
{
Console.WriteLine("account does not exist");
return;
}
account.Print();
var accountTransactions = GetTransactionForAccount(accountNumber);
accountTransactions.ForEach(x => x.Print());
}
private List<Transaction> GetTransactionForAccount(string accountNumber)
{
var transactionAccount = Transactions.Getall();
return transactionAccount
.Where(x => x.AccountNumberFrom == accountNumber || x.AccountNumberTo == accountNumber)
.ToList();
}
public void TotalProvisionRevenue()
{
throw new NotImplementedException();
}
public void ViewAllTransactions()
{
var transactions = Transactions.Getall();
transactions.ForEach(x => x.Print());
}
public void ViewAllAccounts()
{
var accounts = Accounts.GetAll();
accounts.ForEach(x => x.Print());
}
public void CreateTransaction()
{
Console.WriteLine("Account from");
Console.WriteLine("Enter account number ");
var accountFromNumber = Console.ReadLine();
var firstAccount = GetAccountByNumber(accountFromNumber);
if (firstAccount == null)
{
throw new BankingSystemException($"Account with number {accountFromNumber} does not exits");
}
Console.WriteLine("Account to");
Console.WriteLine("Enter account number ");
var accountToNumber = Console.ReadLine();
var secondAccount = GetAccountByNumber(accountToNumber);
if (secondAccount == null)
{
throw new BankingSystemException($"Account with number {accountToNumber} does not exits");
}
Console.WriteLine("Enter amount to transfer ");
var transferAmount = decimal.Parse(Console.ReadLine());
if (transferAmount < 0)
{
throw new BankingSystemException("Invalid input. Amount can not be negative number");
}
var provision = transferAmount * 0.03m;
firstAccount.DecreaseBalance(transferAmount + provision);
secondAccount.IncreaseBalance(transferAmount);
var transaction = new Transaction();
transaction.AccountNumberFrom = accountFromNumber;
transaction.AccountNumberTo = accountToNumber;
transaction.Amount = transferAmount;
transaction.Provision = provision;
transaction.EntryDate = DateTime.Now;
Transactions.AddTransactions(transaction);
}
public void CreateAccount()
{
Console.WriteLine("Please enter account number");
var inputAccountNumber = Console.ReadLine();
var newAccount = new Account();
newAccount.AccountNumber = inputAccountNumber;
Console.WriteLine("Please enter account holder name");
var name = Console.ReadLine();
Console.WriteLine("Please enter account holder surname");
var surname = Console.ReadLine();
Console.WriteLine("Please enter account holder balance");
var balance = Console.ReadLine();
ValidateAccountDetails(name, surname, balance);
newAccount.Name = name;
newAccount.Surname = surname;
newAccount.IncreaseBalance(decimal.Parse(balance));
Accounts.Create(newAccount);
}
private void ValidateAccountDetails(string name, string surname, string balance)
{
if(name.Trim() == "")
{
throw new BankingSystemException($"Name: {name} invalid");
}
}
private void AddTransaction(Transaction transaction)
{
Transactions.Create(transaction);
}
private Account GetAccountByNumber(string accountNumber)
{
var accRepo = Accounts.GetAll();
return accRepo.FirstOrDefault(x => x.AccountNumber == accountNumber);
}
}
}
Last edited by a moderator: