Example #1
0
        public MakePaymentResult MakePayment(MakePaymentRequest request)
        {
            var datastore = _dataStoreFactory.Create(_appConfig.GetKeyValue("DataStoreType"));
            var account   = datastore.GetAccount(request.DebtorAccountNumber);

            var result = new MakePaymentResult();

            switch (request.PaymentScheme)
            {
            case PaymentScheme.Bacs:
                result.Success = _accountValidatorBacs.Validate(request, account);
                break;

            case PaymentScheme.FasterPayments:
                result.Success = _accountValidatorFasterPayments.Validate(request, account);
                break;

            case PaymentScheme.Chaps:
                result.Success = _accountValidatorChaps.Validate(request, account);
                break;
            }


            if (result.Success)
            {
                account.Balance -= request.Amount;
                datastore.UpdateAccount(account);
            }

            return(result);
        }