public Amount RetrieveBalance(LoyaltyPointAccountIdentity identity, Currency requiredCurrency) { log.Trace("Retrieving balance for '{0}' using implementation '{1}'.", identity, decorated.GetType().Name); var result = decorated.RetrieveBalance(identity, requiredCurrency); return(result); }
public Amount RetrieveBalance(LoyaltyPointAccountIdentity identity, Currency requiredCurrency) { if (!transactions.Any()) { return(new Amount(requiredCurrency, 0)); } var result = transactions.Aggregate((a, b) => new Amount(requiredCurrency, currencyAdaptor.Adapt(b, requiredCurrency).Value + a.Value)); return(result); }
public LoyaltyPointAccount( IAccountState createdState, IAccountState activeState, IAccountState inactiveState, LoyaltyPointAccountIdentity identity, Currency primaryCurrency) { this.createdState = CtorGuard.NotNull(createdState, nameof(createdState)); this.activeState = CtorGuard.NotNull(activeState, nameof(activeState)); this.inactiveState = CtorGuard.NotNull(inactiveState, nameof(inactiveState)); this.identity = identity; this.primaryCurrency = primaryCurrency; SetState(createdState); }
public void Deposit(LoyaltyPointAccountIdentity identity, Amount amount) { transactions.Add(amount); }
public void Deposit(LoyaltyPointAccountIdentity identity, Amount amount) { log.Warning("Request to deposit Loyalty Points into Inactive account rejected. The deposited amount of '{0}' will not reflect in account '{1}'.", amount, identity); }
public Amount RetrieveBalance(LoyaltyPointAccountIdentity identity, Currency requiredCurrency) { log.Warning("Request to retrieve balance of '{0}' ignored. A default balance of '{1}' will be returned.", identity, defaultBalance); return(defaultBalance); }