public Result RunBusinessRuleEngine(PaymentType type) { switch (type) { case PaymentType.PHYSICAL_PRODUCT: { var generateCommissionPayment = new GenerateCommissionPayment(); var packingSlip = new GeneratePackingSlip(generateCommissionPayment); return(packingSlip.Process()); } case PaymentType.BOOK: { var generateCommissionPayment = new GenerateCommissionPayment(); var GeneratePackingSlipForRoyaltyDepartment = new GeneratePackingSlipForRoyaltyDepartment(generateCommissionPayment); return(GeneratePackingSlipForRoyaltyDepartment.Process()); } case PaymentType.MEMBERSHIP_ACTIVATE: { var sendEmailNotifification = new EMailNotification(); var activateMemberShip = new ActivateMemberShip(sendEmailNotifification); return(activateMemberShip.Process()); } case PaymentType.MEMBERSHIP_UPGRADE: { var sendEmailNotifification = new EMailNotification(); var applyUpgrade = new ApplyUpgrade(sendEmailNotifification); return(applyUpgrade.Process()); } case PaymentType.VIDEO: { var addFirstAidVideo = new AddFirstAidVideo(); var packingSlip = new GeneratePackingSlip(addFirstAidVideo); return(packingSlip.Process()); } default: return(new Result((int)Status.FAIL, "payment type is not found")); } }
public Response RunBusinessRuleEngine(PaymentType type) { switch (type) { case PaymentType.PHYSICAL_PRODUCT: { var createCommissionPayment = new ProcessCommissionPayment(); var packingSlip = new PhysicalProductPackingSlip(createCommissionPayment); return(packingSlip.Process()); } case PaymentType.BOOK: { var createCommissionPayment = new ProcessCommissionPayment(); var GeneratePackingSlipForRoyaltyDepartment = new CreateDuplicateSlipForRoyaldepartment(createCommissionPayment); return(GeneratePackingSlipForRoyaltyDepartment.Process()); } case PaymentType.MEMBERSHIP_ACTIVATE: { var sendEmailNotifification = new NotifyEmail(); var activateMemberShip = new ActivateMemeberShip(sendEmailNotifification); return(activateMemberShip.Process()); } case PaymentType.MEMBERSHIP_UPGRADE: { var sendEmailNotifification = new NotifyEmail(); var applyUpgrade = new UpgradeMembership(sendEmailNotifification); return(applyUpgrade.Process()); } case PaymentType.VIDEO: { var addFirstAidVideo = new AddFirstAidVideo(); var packingSlip = new PhysicalProductPackingSlip(addFirstAidVideo); return(packingSlip.Process()); } default: return(new Response((int)Status.FAIL, "payment type is not found")); } }