public void RunPostPaymentLogic(Payment payment, IBusinessLogicMapper mapper)
 {
     foreach (IPaymentRule rule in _provider.GetAllRules())
     {
         if (rule.IsValid(payment))
         {
             foreach (IPostPaymentProcess process in _processFactory.GetProcesses(rule.GetType(), mapper))
             {
                 process.Process(payment);
             }
         }
     }
 }
        public List <IPostPaymentProcess> GetProcesses(Type passingRuleType, IBusinessLogicMapper mapper)
        {
            List <IPostPaymentProcess> _returnList = new List <IPostPaymentProcess>();

            switch (_typeDict[passingRuleType])
            {
            case 0:     //book rule
                _returnList.Add(new GeneratePackingSlipProcess(mapper));
                break;

            case 1:     //learning to ski rule
                break;

            case 2:     //membership activation rule
                break;

            case 3:     //membership upgrade rule
                break;

            case 4:     //physical product or book rule
                break;

            case 5:     //physical product rule
                _returnList.Add(new GeneratePackingSlipProcess(mapper));
                break;

            case 6:     //video rule
                break;

            case 7:     //any membership rule
                break;

            default:
                throw new NotImplementedException();
            }
            return(_returnList);
        }
 public GeneratePackingSlipProcess(IBusinessLogicMapper mapper)
 {
     _mapper = mapper;
 }
 public EmailOwnerProcess(IBusinessLogicMapper mapper)
 {
     _mapper = mapper;
 }