public virtual bool Process(BankAccountDetails bankAccountDetails)
{
bankAccountDetails.FirstResult = _firstStepRouter.GetModulusCalculation(bankAccountDetails);
if (bankAccountDetails.RequiresCouttsAccountCheck())
{
return(ExceptionFourteenForCouttsAccounts(bankAccountDetails));
}
if (bankAccountDetails.WeightMappings.Count() == 1 || !bankAccountDetails.IsSecondCheckRequired())
{
return(bankAccountDetails.FirstResult);
}
if (bankAccountDetails.IsExceptionTwoAndFirstCheckPassed())
{
return(true);
}
return(bankAccountDetails.IsExceptionThreeAndCanSkipSecondCheck()
? bankAccountDetails.FirstResult
: _secondModulusCalculatorStep.Process(bankAccountDetails));
}