/// <summary> /// Get bank account from account /// </summary> /// <param name="account">Account</param> /// <param name="bonusCounter"></param> /// <returns>Bank account</returns> public static BankAccount MapBankAccount(this Account account, IBonusCounter bonusCounter) => new BankAccount(bonusCounter) { Type = (int)account.TypeAccount, Amount = account.Amount, Bonus = account.Bonus, FirstName = account.FirstName, Lastname = account.LastName, IsClosed = account.IsClosed };
/// <summary> /// Provides loaded from storage instance of bank account /// </summary> /// <param name="lastName">User Last Name</param> /// <param name="typeAccount">Type account</param> /// <param name="amount">Amount</param> /// <param name="bonus">Bonus</param> /// <param name="id">Account id</param> /// <param name="firstName">User first Name</param> /// <param name="bonusCounter">Bonus counter</param> public Account(int id, string firstName, string lastName, AccountType typeAccount, decimal amount, int bonus, IBonusCounter bonusCounter) { this._bonusCounter = bonusCounter ?? throw new ArgumentNullException(nameof(bonusCounter)); this.FirstName = firstName; this.LastName = lastName; this.Id = id; this.TypeAccount = typeAccount; this.Amount = amount; this.Bonus = bonus; }
/// <summary> /// Initializes a new instance of the <see cref="AmountChangedEventArgs{T}" /> class. /// </summary> /// <param name="account">The account</param> /// <param name="bonusCounter">The bonuscounter</param> public AmountChangedEventArgs(BankAccount account, IBonusCounter bonusCounter) { if (account == null) { throw new ArgumentNullException(nameof(account)); } if (bonusCounter != null) { this._calcBonus = bonusCounter.CalcBonus; } }
/// <summary> /// Initializes an instance of the <see cref="BankAccountListService"/> with passed bank account list storage and bonus counter. /// </summary> /// <param name="bankAccountStorage">An instance of a bank account service interface.</param> /// <param name="bonusCounter">An instance of a bonus counter interface.</param> /// <exception cref="ArgumentNullException"> /// Thrown when <paramref name="bankAccountStorage"/> or/and <paramref name="bonusCounter"/> equal to null. /// </exception> public BankAccountListService(IBankAccountListStorage bankAccountStorage, IBonusCounter bonusCounter) { if (ReferenceEquals(bankAccountStorage, null)) { throw new ArgumentNullException(nameof(bankAccountStorage)); } if (ReferenceEquals(bonusCounter, null)) { throw new ArgumentNullException(nameof(bonusCounter)); } _bankAccountListStorage = bankAccountStorage; _bonusCouter = bonusCounter; BankAccounts = new List <BankAccount>(); }
static void Main(string[] args) { IIDGenerator generator = Resolver.Get <IIDGenerator>(); IAccountService service = Resolver.Get <IAccountService>(); IBonusCounter counter = Resolver.Get <IBonusCounter>(); BankAccount account1 = new BankAccount(generator.GenerateId(), "Eugene", "Masarnouski", counter, 1000, AccountType.Base, 0); BankAccount account2 = new BankAccount(generator.GenerateId(), "Alesya", "Dzehachova", counter, 200, AccountType.Gold, 0); BankAccount account3 = new BankAccount(generator.GenerateId(), "Vitaliy", "Masarnouski", counter, 200, AccountType.Premium, 0); service.Create(account1); service.Create(account2); service.Create(account3); service.View(); Console.ReadLine(); }
/// <summary> /// Get account from bank account /// </summary> /// <param name="account">Bank account</param> /// <returns>Account</returns> public static Account MapAccount(this BankAccount account, IBonusCounter bonusCounter) { if (bonusCounter == null) { throw new ArgumentNullException(nameof(bonusCounter)); } if (!Enum.TryParse(account.Type.ToString(), out AccountType accountType)) { throw new InvalidCastException(nameof(account.Type)); } var accountMapped = AccountFactory.Create(0, account.FirstName, account.Lastname, accountType, bonusCounter); accountMapped.Id = account.Id; accountMapped.Amount = account.Amount; accountMapped.Bonus = account.Bonus; accountMapped.IsClosed = account.IsClosed; return(accountMapped); }
public BankAccount(IBonusCounter bonusCounter) { _bonusCounter = bonusCounter ?? throw new ArgumentNullException(nameof(bonusCounter)); this.AmountChanged += this.BonusChanged; }
/// <summary> /// Initializes an instance of the <see cref="BankAccountListService"/> with passed list of book accounts, /// bank account list storage and bonus counter. /// </summary> /// <param name="bankAccounts">A list of bank accounts.</param> /// <param name="bankAccountStorage">An instance of a bank account service interface.</param> /// <param name="bonusCounter">An instance of a bonus counter interface.</param> public BankAccountListService(List <BankAccount> bankAccounts, IBankAccountListStorage bankAccountStorage, IBonusCounter bonusCounter) : this(bankAccountStorage, bonusCounter) { BankAccounts = bankAccounts; }
/// <summary> /// Provides instance <see cref="BaseAccount"/> /// </summary> /// <param name="lastName">User Last Name</param> /// <param name="typeAccount">Type account</param> /// <param name="amount">Amount</param> /// <param name="bonus">Bonus</param> /// <param name="number"></param> /// <param name="firstName">User first Name</param> /// <param name="bonusCounter"></param> public BaseAccount(int number, string firstName, string lastName, AccountType typeAccount, decimal amount, int bonus, IBonusCounter bonusCounter) : base(number, firstName, lastName, typeAccount, amount, bonus, bonusCounter) { }
/// <summary> /// Initializes a new state of the object. /// </summary> public BankAccountService(IRepository repository, IGenerator generator, IBonusCounter bonusCounter) { this.Repository = repository; this.Generator = generator; this.BonusCounter = bonusCounter; }
public BankAccount(int id, string holderName, string holderSurName, IBonusCounter counter, decimal balance, AccountType type, int bonus) : this(id, holderName, holderSurName, balance, type, bonus) { this.Counter = counter; }
/// <summary> /// Initializes a new instance of the <see cref="AccountService" /> class. /// </summary> /// <param name="accountRepository">The account repository</param> /// <param name="bonusCounter">The bonuscounter</param> public AccountService(IAccountRepository accountRepository, IBonusCounter bonusCounter) { this._accountRepository = accountRepository ?? throw new ArgumentNullException(nameof(accountRepository)); this._bonusCounter = bonusCounter ?? throw new ArgumentNullException(nameof(bonusCounter)); }
public AccountService(IStorageFactory storage, IBonusCounter bonusCounter) { this.storage = storage; this.bonusCounter = bonusCounter; accountsList = storage.GetInstance().Load(); }
/// <summary> /// Provides instance <see cref="PlatinumAccount"/> /// </summary> /// <param name="lastName">User Last Name</param> /// <param name="typeAccount">Type account</param> /// <param name="amount">Amount</param> /// <param name="bonus">Bonus</param> /// <param name="id">Account id</param> /// <param name="firstName">User first Name</param> public PlatinumAccount(int id, string firstName, string lastName, AccountType typeAccount, decimal amount, int bonus, IBonusCounter bonusCounter) : base(id, firstName, lastName, typeAccount, amount, bonus, bonusCounter) { }
/// <summary> /// Initializes a new instance of the child <see cref="Account" /> class. /// </summary> /// <param name="id">The id</param> /// <param name="firstName">The firstname</param> /// <param name="lastName">The lastName</param> /// <param name="typeAccount">Account type</param> /// <param name="bonusCounter">The bonus counter</param> /// <returns>The instance of the child <see cref="Account"/></returns> public static Account Create(int id, string firstName, string lastName, AccountType typeAccount, IBonusCounter bonusCounter) { if (string.IsNullOrWhiteSpace(firstName)) { throw new ArgumentNullException(nameof(firstName)); } if (string.IsNullOrWhiteSpace(lastName)) { throw new ArgumentNullException(nameof(lastName)); } if (bonusCounter == null) { throw new ArgumentNullException(nameof(bonusCounter)); } switch (typeAccount) { case AccountType.Base: return(new BaseAccount(id, firstName, lastName, typeAccount, 0, 0, bonusCounter)); case AccountType.Gold: return(new GoldAccount(id, firstName, lastName, typeAccount, 0, 0, bonusCounter)); case AccountType.Platinum: return(new PlatinumAccount(id, firstName, lastName, typeAccount, 0, 0, bonusCounter)); default: throw new InvalidOperationException($"Type account isn't supported"); } }
/// <summary> /// Initializes an instance of the <see cref="BankAccountService"/> with passed collection of bank accounts, /// bank accounts storage and bonus counter. /// </summary> /// <param name="collection">The list of bank accounts.</param> /// <param name="bankAccountStorage">The instance of the bank account storage interface.</param> /// <param name="bonusCounter">The instance of the bonus counter interface.</param> public BankAccountService(IEnumerable <BankAccount> collection, IAccountStorage bankAccountStorage, IBonusCounter bonusCounter) : this(bankAccountStorage, bonusCounter) { BankAccounts = collection; }