public MakePaymentResult MakePayment(MakePaymentRequest request) { var creator = new AccountDataStoreCreator(_configurationService); var account = creator.Create(request.DebtorAccountNumber); var validator = SchemeValidatorFactory.GetValidator(account, request); var result = validator.Validate(); if (result.Success) { account.Balance -= request.Amount; if (account.Location == AccountLocation.Backup) { var accountDataStore = new BackupAccountDataStore(); accountDataStore.UpdateAccount(account); } else { var accountDataStore = new AccountDataStore(); accountDataStore.UpdateAccount(account); } } return(result); }
public HttpResponseMessage UpdateAccount([FromBody] Account value) { bool retVal = false; HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.BadRequest); IAccountDataStore accountDataStore = new AccountDataStore(); retVal = accountDataStore.UpdateAccount(value); if (retVal == true) { response = Request.CreateResponse(HttpStatusCode.OK); } return(response); }
public void ProcessPayment(MakePaymentRequest request, string dataStoreType, Account account, MakePaymentResult result) { if (result.Success) { account.Balance -= request.Amount; if (dataStoreType == "Backup") { var accountDataStore = new BackupAccountDataStore(); accountDataStore.UpdateAccount(account); } else { var accountDataStore = new AccountDataStore(); accountDataStore.UpdateAccount(account); } } }
public MakePaymentResult MakePayment(MakePaymentRequest request) { var dataStoreType = ConfigurationManager.AppSettings["DataStoreType"]; Account account = null; if (dataStoreType == "Backup") { var accountDataStore = new BackupAccountDataStore(); account = accountDataStore.GetAccount(request.DebtorAccountNumber); } else { var accountDataStore = new AccountDataStore(); account = accountDataStore.GetAccount(request.DebtorAccountNumber); } var result = new MakePaymentResult(); switch (request.PaymentScheme) { case PaymentScheme.Bacs: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.Bacs)) { result.Success = false; } break; case PaymentScheme.FasterPayments: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.FasterPayments)) { result.Success = false; } else if (account.Balance < request.Amount) { result.Success = false; } break; case PaymentScheme.Chaps: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.Chaps)) { result.Success = false; } else if (account.Status != AccountStatus.Live) { result.Success = false; } break; } if (result.Success) { account.Balance -= request.Amount; if (dataStoreType == "Backup") { var accountDataStore = new BackupAccountDataStore(); accountDataStore.UpdateAccount(account); } else { var accountDataStore = new AccountDataStore(); accountDataStore.UpdateAccount(account); } } return(result); }
public MakePaymentResult MakePayment(MakePaymentRequest request) { var accountDataStoreGetData = new AccountDataStore(); Account account = accountDataStoreGetData.GetAccount(request.DebtorAccountNumber); var result = new MakePaymentResult(); switch (request.PaymentScheme) { case PaymentScheme.Bacs: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.Bacs)) { result.Success = false; } break; case PaymentScheme.FasterPayments: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.FasterPayments)) { result.Success = false; } else if (account.Balance < request.Amount) { result.Success = false; } break; case PaymentScheme.Chaps: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.Chaps)) { result.Success = false; } else if (account.Status != AccountStatus.Live) { result.Success = false; } break; } if (result.Success) { account.Balance -= request.Amount; var accountDataStoreUpdateData = new AccountDataStore(); accountDataStoreUpdateData.UpdateAccount(account); } return(result); }
public bool UpdateAccount(Account account) { IAccountDataStore accountDataStore = new AccountDataStore(); return(accountDataStore.UpdateAccount(account)); }
public MakePaymentResult MakePayment(MakePaymentRequest request) { Account account = accountFactory.Get(request); var result = new MakePaymentResult(); switch (request.PaymentScheme) { case PaymentScheme.Bacs: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.Bacs)) { result.Success = false; } break; //missing success true? case PaymentScheme.FasterPayments: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.FasterPayments)) { result.Success = false; } else if (account.Balance < request.Amount) { result.Success = false; } break; //missing success true? case PaymentScheme.Chaps: if (account == null) { result.Success = false; } else if (!account.AllowedPaymentSchemes.HasFlag(AllowedPaymentSchemes.Chaps)) { result.Success = false; } else if (account.Status != AccountStatus.Live) { result.Success = false; } break; //missing success true? } if (result.Success) { account.Balance -= request.Amount; var dataStoreType = Config.DataStoreType; if (dataStoreType == "Backup") { var accountDataStore = new BackupAccountDataStore(); accountDataStore.UpdateAccount(account); } else { var accountDataStore = new AccountDataStore(); accountDataStore.UpdateAccount(account); } } return(result); }