public OrderServiceImpl(OrderMaker orderMaker, OrderRepository orderRepository, IHostingEnvironment hostingEnvironment, OrderDetailService orderDetailService)
 {
     _orderMaker         = orderMaker;
     _hostingEnvironment = hostingEnvironment;
     _orderRepository    = orderRepository;
     _orderDetailService = orderDetailService;
 }
예제 #2
0
        public void TestOrderData()
        {
            string jsonString = File.ReadAllText("Data/TestData.json");
            var    options    = new JsonSerializerOptions();

            options.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
            var menuItems = JsonSerializer.Deserialize <Item[]>(jsonString, options);

            var count = new Dictionary <Item, int>(
                menuItems.Select(x => new KeyValuePair <Item, int>(x, 0)));

            Kitchen    testKitchen = new Kitchen();
            double     lambda      = 10000;
            OrderMaker testOrderer = new OrderMaker(menuItems, lambda);

            testOrderer.OrderPlacedEvent +=
                (sender, args) =>
            {
                Assert.IsTrue(Array.Exists(menuItems, x => x == args.Order.Item));
                count[args.Order.Item] += 1;
            };

            testOrderer.Start();
            int wait = 1000;

            Task.Delay(wait).Wait();
            double total = count.Values.ToArray().Sum();

            foreach (Item item in menuItems)
            {
                Assert.IsTrue(count[item] / total < 0.35, "Percent wrong: " + count[item] / total);
            }
        }
예제 #3
0
        public ViewResult AddOrder(OrderMaker model, int ProductID = 0)
        {
            if (model.Menu == null)
            {
                model.Menu = productRepository.Entities;
            }

            model.IdToChange = ProductID;


            return(View(model));
        }
예제 #4
0
        /*
         * public RedirectToRouteResult AddPosition(OrderMaker model, int ProductID) {
         *
         *  model.AddPosition(ProductID);
         *
         *  return RedirectToAction("AddOrder");
         * }
         *
         * public RedirectToRouteResult RemovePosition(OrderMaker model, int ProductID) {
         *
         *  model.RemovePosition(ProductID);
         *  return RedirectToAction("AddOrder");
         * }*/

        public PartialViewResult UpdatePositionList(OrderMaker model, int ProductID)
        {
            if (ProductID < 0)
            {
                model.RemovePosition(-ProductID);
            }
            else if (ProductID > 0)
            {
                model.AddPosition(ProductID);
            }

            return(PartialView(model));
        }
예제 #5
0
        public IActionResult Index(CompleteOrderViewModel model)
        {
            var oh = HttpContext.Session.Get <OrderHandler>("OrderHandler");

            //Make order
            OrderMaker om = new OrderMaker(oh);

            om.MakeOrder();

            //Subtract Inventory
            OrderInventoryHandler oih = new OrderInventoryHandler(oh);

            oih.SubtractInventory();

            return(RedirectToAction("Index", "ReviewOrder"));
        }
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            OrderMaker model = null;

            if (controllerContext.HttpContext.Session != null)
            {
                model = (OrderMaker)controllerContext.HttpContext.Session[sessionKey];
            }
            if (model == null)
            {
                model = new OrderMaker();
                if (controllerContext.HttpContext.Session != null)
                {
                    controllerContext.HttpContext.Session[sessionKey] = model;
                }
            }
            return(model);
        }
예제 #7
0
        public void TestExp()
        {
            Random Rng = new Random();
            int    iterations = 1000000, count = 0;
            double lambda = 3.250, nintieth = .7084, sum = 0;

            for (int i = 0; i < iterations; i++)
            {
                double k = OrderMaker.ExpCdfInv(Rng.NextDouble(), lambda);
                if (k > nintieth)
                {
                    count += 1;
                }
                sum += k;
            }
            Assert.IsTrue(count > 99000 && count < 101000,
                          string.Format("Ninetieth percentile test failed: {0} ", count));

            double average = sum / iterations;

            Assert.IsTrue(average > 0.257 && average < .357, "failed average test: " + average);
        }
예제 #8
0
        public ActionResult SaveOrder(OrderMaker model)
        {
            if (model.Positions.Any())
            {
                Order newOrder = new Order()
                {
                    ClientID      = clientRepository.Entities.Where(x => x.Email == ControllerContext.HttpContext.User.Identity.Name).FirstOrDefault().ID,
                    WaiterID      = 1,
                    OrderValue    = model.CalculateTotalCost(),
                    OrderDateTime = DateTime.Now
                };

                orderRepository.SaveEntity(newOrder);


                int newid;
                newid = orderRepository.Entities.LastOrDefault().OrderNr;


                foreach (var x in model.Positions)
                {
                    x.OrderNr = newid;
                    positionRepository.SaveEntity(x);
                }

                model.PositionNr = 1;
                model.Positions.Clear();
                return(RedirectToAction("List"));
            }

            else
            {
                ModelState.AddModelError("", "Zamówienie nie może być puste");
                return(View("AddOrder", model));
            }
        }