/// <summary> /// Save account balance into database /// </summary> /// <param name="account">account which balance will be saved</param> public void SaveAccountBalance(IPublicAccount account) { using (var db = new DbBank()) { db.Accounts .Where(p => p.InnerAccountNumber == account.AccountNumber.InnerNumber) .Set(p => p.BalanceValue, account.GetBalanceValue()) .Update(); } }
public InnerBankTransfer(IAccount sender, IPublicAccount receiver, decimal amount, string operationTitle) { ResponseStatus = ResponseStatus.Success; _operations = new List <BankOperation> { new OutgoingTransfer(sender, amount, operationTitle, receiver.AccountNumber.ToString()), new IncomingTransfer(receiver, amount, operationTitle, sender.AccountNumber.ToString()) }; }
/// <summary> /// creates deposit command. Allows to add custom source value, used in derived types /// </summary> /// <param name="targetAccount">account on which operation will be performed</param> /// <param name="amount">amount to send</param> /// <param name="operationTitle">operation title</param> /// <param name="source">source of the money</param> public Deposit(IPublicAccount targetAccount, decimal amount, string operationTitle, string source) : base(targetAccount.AccountNumber, new OperationRecord { Title = operationTitle, Credit = amount, Source = source }) { _targetAccount = targetAccount; _amount = amount; }
/// <summary> /// <see cref="IUserManager.GetAccount"/> /// </summary> public IPublicAccount GetAccount(AccountNumber accoutNumber) { IPublicAccount searchedAccount = null; foreach (var user in _users) { if (!user.ContainsAccount(accoutNumber)) { continue; } var a = user.GetAccount(accoutNumber); if (a != null) { searchedAccount = a; } } return(searchedAccount); }
public InnerBankTransfer(IAccount sender, IPublicAccount receiver, int amountInCents, string operationTitle) : this(sender, receiver, amountInCents / 100m, operationTitle) { }
/// <summary> /// <see cref="IBankDataInserter.SaveAccountBalance"/> /// </summary> public void SaveAccountBalance(IPublicAccount account) { _dataSaver.SaveAccountBalance(account); }
/// <summary> /// Execute operation, save it and save account operation balance afterwards /// </summary> /// <param name="operation">operation to execute and save</param> /// <param name="account">account to save</param> public void ExecuteAndSave(BankOperation operation, IPublicAccount account) { operation.Execute(); _dataInserter.SaveOperation(operation); _dataInserter.SaveAccountBalance(account); }
/// <summary> /// Execute complex command; save operation records and sender acount balance /// </summary> /// <param name="complexCommand">complex command to execute and save</param> /// <param name="sender">sender account</param> public void ExecuteAndSave(ComplexCommand complexCommand, IPublicAccount sender) { complexCommand.Execute(); _dataInserter.SaveOperations(complexCommand.GetExecutedOperations()); _dataInserter.SaveAccountBalance(sender); }
/// <summary> /// Execute complex command; save operation records and receiver and sender acount balance /// </summary> /// <param name="complexCommand">complex command to execute and save</param> /// <param name="sender">sender account</param> /// <param name="receiver">receiver account</param> public void ExecuteAndSave(ComplexCommand complexCommand, IPublicAccount sender, IPublicAccount receiver) { ExecuteAndSave(complexCommand, sender); _dataInserter.SaveAccountBalance(receiver); }
/// <summary> /// does nothing /// </summary> /// <param name="account">anything (ignored)</param> /// <param name="operation">anything (ignored)</param> public void SaveOperation(IPublicAccount account, BankOperation operation) { }
/// <summary> /// does nothing /// </summary> /// <param name="account">anything (ignored)</param> public void SaveAccountBalance(IPublicAccount account) { }
/// <param name="account">sender account number</param> /// <param name="transferFeeValue">fee value</param> /// <param name="receiverAccountNumber">receiver account number</param> public RollbackTransferFee(IPublicAccount account, decimal transferFeeValue, string receiverAccountNumber) : base(account, transferFeeValue, $"fee refund for transfer to {receiverAccountNumber}", "Bank 00112169") { }
/// <param name="account">receiver account number</param> /// <param name="amount">amount to transfer</param> /// <param name="title">operation title</param> /// <param name="senderAccountNumber">sendar account number</param> public IncomingTransfer(IPublicAccount account, decimal amount, string title, string senderAccountNumber) : base(account, amount, title, $"{senderAccountNumber}") { }
/// <summary> /// creates deposit command. Used to create deposit with default source field value /// </summary> /// <param name="targetAccount">account on which operation will be performed</param> /// <param name="amount">amount to send</param> /// <param name="operationTitle">operation title</param> public Deposit(IPublicAccount targetAccount, decimal amount, string operationTitle) : this(targetAccount, amount, operationTitle, "Deposit") { }
/// <param name="account">sender account number</param> /// <param name="amount">amount to transfer</param> /// <param name="title">operation title</param> /// <param name="receiverAccountNumber">receiver account number</param> public RollbackTransfer(IPublicAccount account, decimal amount, string title, AccountNumber receiverAccountNumber) : base(account, amount, title, $"{receiverAccountNumber}") { }