public ProcessResult Process(Deposit deposit) { ProcessResultBuilder builder = new ProcessResultBuilder(); try { if (!deposit.IsValid) { builder.AddErrorMessage("Invalid deposit"); } if (!builder.HasErrorMessages) { _balance += deposit.Amount; } return(builder.UsingBalance(_balance)); } catch (Exception ex) { return(builder .WithException(ex) .UsingBalance(_balance)); } }
public ProcessResult Process(Withdrawal withdrawal) { ProcessResultBuilder builder = new ProcessResultBuilder(); try { if (!withdrawal.IsValid) { builder.AddErrorMessage("Invalid withdrawal"); } if (!HasSufficientFunds(withdrawal.Amount)) { builder.AddErrorMessage("You cannot withdraw more than is in the account"); } if (!builder.HasErrorMessages) { _balance -= withdrawal.Amount; } return(builder.UsingBalance(_balance)); } catch (Exception ex) { return(builder .WithException(ex) .UsingBalance(_balance)); } }
public ProcessResult Process(Fee fee) { ProcessResultBuilder builder = new ProcessResultBuilder(); try { if (!fee.IsValid) { builder.AddErrorMessage("Invalid fee"); } if (!builder.HasErrorMessages) { _balance -= fee.Amount; } return(builder.UsingBalance(_balance)); } catch (Exception ex) { return(builder .WithException(ex) .UsingBalance(_balance)); } }