Ejemplo n.º 1
0
        public ActionResult Account()
        {
            var      data = UserProcessor.LoadUser(User.Identity.GetUserId());
            GameUser user = new GameUser
            {
                FirstName = data.Fname,
                LastName  = data.Lname,
                Age       = data.Age,
                Balance   = data.Balance
            };

            user.GamesBought = PurchaseProcessor.GetGamesBought(User.Identity.GetUserId());
            user.GamesSold   = PurchaseProcessor.GetGamesSold(User.Identity.GetUserId());
            var list = GameProcessor.GetGamesOnSale(User.Identity.GetUserId());

            user.GamesOnSale = new List <Game>();
            foreach (var row in list)
            {
                user.GamesOnSale.Add(new Game
                {
                    Name        = row.Name,
                    CreatedBy   = row.CreatedBy,
                    Year        = row.Year,
                    GameConsole = row.Console
                });
            }
            return(View(user));
        }
Ejemplo n.º 2
0
 public ActionResult BuyGame(Game game)
 {
     if (UserProcessor.CheckBalance(User.Identity.GetUserId()))
     {
         var data = GameProcessor.LoadGame(game.Id.ToString());
         int rec  = PurchaseProcessor.PurchaseGame(data.Name, data.OwnerId, User.Identity.GetUserId());
         int recs = GameProcessor.BuyGame(game.Id);
         return(RedirectToAction("BrowseGames"));
     }
     return(RedirectToAction("UpdateBalance"));
 }
Ejemplo n.º 3
0
        public void Returns_CreatePackagingSlipCommand_For_Book_Purchase()
        {
            Mock <IProductTypeEvaluator> evaluator = new Mock <IProductTypeEvaluator>();

            evaluator.Setup(p => p.IsPhysical(_product)).Returns(true);

            IBusinessRuleMatcherRepository repository = new BusinessRuleMatcherRepository(evaluator.Object);
            ICommandComparerRepository     commandComparerRepository = new CommandComparerRepository();
            PurchaseProcessor rp = new PurchaseProcessor(repository, commandComparerRepository);

            PurchaseCommandSet purchaseCommandSet = rp.ProcessPurchase(_purchase);

            Assert.AreEqual(1, purchaseCommandSet.Commands.OfType <CreatePackagingSlipCommand>().Count());
        }
Ejemplo n.º 4
0
        public void Returns_Empty_CommandsSet_For_Zero_Products_Purchase()
        {
            Mock <IBusinessRuleMatcherRepository> ruleMatcherRepositoryMock = new Mock <IBusinessRuleMatcherRepository>();

            ruleMatcherRepositoryMock.Setup(p => p.GetRuleMatchers()).Returns(new IBusinessRuleMatcher[0]);

            ICommandComparerRepository commandComparerRepository = new CommandComparerRepository();
            PurchaseProcessor          rp = new PurchaseProcessor(ruleMatcherRepositoryMock.Object, commandComparerRepository);
            Purchase emptyPurchase        = new Purchase(new Product[0], new Payment());

            PurchaseCommandSet purchaseCommandsSet = rp.ProcessPurchase(emptyPurchase);

            Assert.AreEqual(0, purchaseCommandsSet.Commands.Count);
        }
Ejemplo n.º 5
0
        public void Returns_UpgradeMembershipCommand_For_Book_Purchase()
        {
            Mock <IProductTypeEvaluator> evaluator = new Mock <IProductTypeEvaluator>();

            evaluator.Setup(p => p.IsMembershipActivation(_product)).Returns(true);

            IBusinessRuleMatcherRepository repository = new BusinessRuleMatcherRepository(evaluator.Object);
            ICommandComparerRepository     commandComparerRepository = new CommandComparerRepository();
            PurchaseProcessor rp = new PurchaseProcessor(repository, commandComparerRepository);

            PurchaseCommandSet purchaseCommandSet = rp.ProcessPurchase(_purchase);

            Assert.AreEqual(1, purchaseCommandSet.Commands.Count);
            Assert.IsInstanceOfType(purchaseCommandSet.Commands.Single(), typeof(ActivateMembershipCommand));
        }
Ejemplo n.º 6
0
        public void Returns_ActivateMembershipCommand_For_Book_Purchase()
        {
            Mock <IProductTypeEvaluator> evaluator = new Mock <IProductTypeEvaluator>();

            evaluator.Setup(p => p.IsMembershipActivation(_product)).Returns(true);

            IBusinessRuleMatcherRepository repository = new BusinessRuleMatcherRepository(evaluator.Object);
            ICommandComparerRepository     commandComparerRepository = new CommandComparerRepository();
            PurchaseProcessor rp = new PurchaseProcessor(repository, commandComparerRepository);

            PurchaseCommandSet purchaseCommandSet = rp.ProcessPurchase(_purchase);

            ActivateMembershipCommand[] activateMembership = purchaseCommandSet.Commands.OfType <ActivateMembershipCommand>().ToArray();
            Assert.AreEqual(1, activateMembership.Length);
        }
Ejemplo n.º 7
0
        public void Returns_MultipleCommands_For_Purchase_With_Single_Product_Matching_Multiple_BusinessRules()
        {
            Mock <IProductTypeEvaluator> evaluator = new Mock <IProductTypeEvaluator>();

            evaluator.Setup(p => p.IsPhysical(_product)).Returns(true);
            evaluator.Setup(p => p.IsBook(_product)).Returns(true);

            IBusinessRuleMatcherRepository repository = new BusinessRuleMatcherRepository(evaluator.Object);
            ICommandComparerRepository     commandComparerRepository = new CommandComparerRepository();
            PurchaseProcessor rp = new PurchaseProcessor(repository, commandComparerRepository);

            PurchaseCommandSet purchaseCommandSet = rp.ProcessPurchase(_purchase);

            Assert.IsTrue(purchaseCommandSet.Commands.Count > 1);
        }
Ejemplo n.º 8
0
        public void Returns_CommandsBoundForDifferentProducts_For_PurchaseWithMultipleProducts()
        {
            Product product1 = new Product(new ProductCategory[0], ProductFlags.None, String.Empty);
            Product product2 = new Product(new ProductCategory[0], ProductFlags.None, String.Empty);

            Purchase purchase = new Purchase(new[] { product1, product2 }, new Payment());

            Mock <IProductTypeEvaluator> evaluator = new Mock <IProductTypeEvaluator>();

            evaluator.Setup(p => p.IsPhysical(product1)).Returns(true);
            evaluator.Setup(p => p.IsBook(It.IsAny <Product>())).Returns(true);

            IBusinessRuleMatcherRepository repository = new BusinessRuleMatcherRepository(evaluator.Object);
            ICommandComparerRepository     commandComparerRepository = new CommandComparerRepository();
            PurchaseProcessor rp = new PurchaseProcessor(repository, commandComparerRepository);

            PurchaseCommandSet purchaseCommandSet = rp.ProcessPurchase(purchase);

            Assert.AreEqual(2, purchaseCommandSet.Commands.OfType <IProductBoundPurchaseProcessingCommand>().Select(p => p.Product).Distinct().Count());
        }
Ejemplo n.º 9
0
        public void RoundingRules_FromInput3()
        {
            var purchaseInput = new List <string>()
            {
                "1 imported bottle of perfume at 27.99 1",
                "1 bottle of perfume at 18.99",
                "1 packet of headache pills at 9.75",
                "1 box of imported chocolates at 11.25",
            };

            var factory        = new MerchandiseFactory();
            var merchandises   = factory.Create(new InputReader(purchaseInput));
            var availableTaxes = new List <ITax>
            {
                new SalesTax(new Exemptions()),
                new ImportTax()
            };


            var output = new StringBuilder();
            var saved  = Console.Out;

            try
            {
                using (var writer = new StringWriter(output))
                {
                    Console.SetOut(writer);

                    var processor = new PurchaseProcessor(new Purchase(merchandises), availableTaxes);
                    processor.PrintReceipt();

                    string expected = "Sales Taxes: 6.70 Total: 74.68";
                    var    text     = output.ToString();
                    Assert.IsTrue(text.Contains(expected));
                }
            }
            finally
            {
                Console.SetOut(saved);
            }
        }
Ejemplo n.º 10
0
        public void RoundingRules_FromInput2()
        {
            var purchaseInput = new List <string>()
            {
                "1 imported box of chocolates at 10.00",
                "1 imported bottle of perfume at 47.50"
            };

            var factory        = new MerchandiseFactory();
            var merchandises   = factory.Create(new InputReader(purchaseInput));
            var availableTaxes = new List <ITax>
            {
                new SalesTax(new Exemptions()),
                new ImportTax()
            };


            var output = new StringBuilder();
            var saved  = Console.Out;

            try
            {
                using (var writer = new StringWriter(output))
                {
                    Console.SetOut(writer);

                    var processor = new PurchaseProcessor(new Purchase(merchandises), availableTaxes);
                    processor.PrintReceipt();

                    string expected = "Sales Taxes: 7.65 Total: 65.15";
                    var    text     = output.ToString();
                    Assert.IsTrue(text.Contains(expected));
                }
            }
            finally
            {
                Console.SetOut(saved);
            }
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            Console.WriteLine("-----------------------------------");
            Console.WriteLine("       Sales Taxes Problem         ");
            Console.WriteLine("-----------------------------------");


            while (true)
            {
                char selection     = SelectInput();
                var  purchaseInput = GetInput(selection);

                if (purchaseInput is null)
                {
                    return;
                }
                var factory      = new MerchandiseFactory();
                var merchandises = factory.Create(new InputReader(purchaseInput));

                var availableTaxes = new List <ITax>
                {
                    new SalesTax(new Exemptions()),
                    new ImportTax()
                };

                var processor = new PurchaseProcessor(new Purchase(merchandises), availableTaxes);
                processor.PrintReceipt();

                Console.WriteLine("-----------------------------------");
                Console.WriteLine();
            }


            //Console.WriteLine(">> Press ENTER to quit.");
            //Console.ReadLine();
        }
        /// <summary>
        /// Purchase
        /// </summary>
        public PaymentResponse Purchase(PayfortAuthorizationInfoRequest request)
        {
            //Declarations
            var errInfo = new PaymentResponse();

            //errInfo.UserId = request.UserId;
            //errInfo.BookingId = request.BookingId;

            if (request != null)
            {
                //1. Generate SHA256 Signature
                request.Signature = request.GenerateAuthorizationSHA256Signature();

                //2. Generate Json Request Parameter
                var jsonRequest = request.GetAuthorizationRequestParams();

                //3. Send Request
                return(PurchaseProcessor.Purchase(jsonRequest, request.Url, errInfo));
            }
            else
            {
                return(ExceptionHandler.ExceptionHandler.GetPayfortExceptionResponseInfo(errInfo, PaymentCommandType.PURCHASE));
            }
        }