Example #1
0
        static void Main(string[] args)
        {
            Payment purchaseOne   = new Payment(2.5m, "Book", 250);
            Payment purchaseTwo   = new Payment(10m, "Membership", 251);
            Payment purchaseThree = new Payment(17m, "Physical", 252);
            Payment purchaseFour  = new Payment(5.75m, "UpgradeMembership", 253);
            Payment purchaseFive  = new Payment(7.59m, "Video", 254);

            BasePaymentProcessing baseHandler              = new PackingSlipHandler();
            BasePaymentProcessing membershipHandler        = new MembershipHandler();
            BasePaymentProcessing upgradeMembershipHandler = new UpgradeMembershipHandler();
            BasePaymentProcessing duplicateSlipHandler     = new DuplicatePackingSlipHandler();
            BasePaymentProcessing commisionPaymentHandler  = new CommissionPaymentHandler();
            BasePaymentProcessing videoPaymentHandler      = new VideoPaymentHandler();

            baseHandler.SetNextHandler(duplicateSlipHandler);
            baseHandler.SetNextHandler(commisionPaymentHandler);
            duplicateSlipHandler.SetNextHandler(membershipHandler);
            membershipHandler.SetNextHandler(upgradeMembershipHandler);
            commisionPaymentHandler.SetNextHandler(videoPaymentHandler);

            //Calling chain of responsibility
            baseHandler.ProcessPayment(purchaseOne);
            membershipHandler.ProcessPayment(purchaseTwo);
            baseHandler.ProcessPayment(purchaseThree);
            membershipHandler.ProcessPayment(purchaseFour);
            baseHandler.ProcessPayment(purchaseFive);

            Console.ReadKey();
        }
Example #2
0
 public Scenarios()
 {
     _manager        = new Mock <IBusinessLogic>();
     _logger         = new Mock <ILogger>();
     handlerDelegate = new Mock <HandlerDelegate>();
     responseHandler = new ResponseHandler(logger: _logger.Object);
     processCommissionPaymentHandler   = new ProcessCommissionPaymentHandler(logger: _logger.Object, manager: _manager.Object);
     physicalProductPackingSlipHandler = new PhysicalProductPackingSlipHandler(logger: _logger.Object, manager: _manager.Object);
     createDuplicateSlip        = new CreateDuplicateSlipForRoyaldepartmentHandler(logger: _logger.Object, manager: _manager.Object);
     notifyEmailHandler         = new NotifyEmailHandler(logger: _logger.Object, manager: _manager.Object);
     activateMemeberShipHandler = new ActivateMemeberShipHandler(logger: _logger.Object, manager: _manager.Object);
     upgradeMembershipHandler   = new UpgradeMembershipHandler(logger: _logger.Object, manager: _manager.Object);
     addFirstAidVideoHandler    = new AddFirstAidVideoHandler(logger: _logger.Object, manager: _manager.Object);
 }
        private async Task <OrderEngine> CreateOrderEngine()
        {
            packageSlipMock = new Mock <IPackageSlipRepository>();
            royaltySlipMock = new Mock <IPackageSlipRepository>();
            membershipMock  = new Mock <IMembershipRepository>();
            emailMock       = new Mock <IEmailRepository>();
            comissionMock   = new Mock <IComissionRepository>();
            var orderSlipHandler          = new OrderSlipHandler(packageSlipMock.Object);
            var royaltySlipHandler        = new RoyaltySlipHandler(royaltySlipMock.Object);
            var upgradeMembershipHandler  = new UpgradeMembershipHandler(membershipMock.Object, emailMock.Object);
            var activateMembershipHandler = new ActivateMembershipHandler(membershipMock.Object, emailMock.Object);
            var comissionHandler          = new ComissionHandler(comissionMock.Object);

            await upgradeMembershipHandler.SetNext(comissionHandler);

            await activateMembershipHandler.SetNext(upgradeMembershipHandler);

            await orderSlipHandler.SetNext(activateMembershipHandler);

            await royaltySlipHandler.SetNext(orderSlipHandler);

            return(new OrderEngine(royaltySlipHandler));
        }