Esempio n. 1
0
 /// <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
 };
Esempio n. 2
0
 /// <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;
            }
        }
Esempio n. 4
0
        /// <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>();
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        /// <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;
 }
Esempio n. 8
0
 /// <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;
 }
Esempio n. 9
0
 /// <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)
 {
 }
Esempio n. 10
0
 /// <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;
 }
Esempio n. 12
0
 /// <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));
 }
Esempio n. 13
0
 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;
 }