public IActionResult CreateOrder(NewOrderWrapper postData)
        {
            if (!CheckUser())
            {
                return(RedirectToAction("Login", "User"));
            }
            if (ModelState.IsValid)
            {
                Product prod = _db.Products
                               .SingleOrDefault(p => p.ProductId == postData.Form.ProductId);

                if (postData.Form.Quantity <= prod.Quantity)
                {
                    postData.Form.UserId = HttpContext.Session.Get <User>("user").UserId;
                    _db.Add(postData.Form);
                    prod.Quantity -= postData.Form.Quantity;
                    prod.UpdatedAt = DateTime.Now;
                    _db.SaveChanges();
                    return(RedirectToAction("Orders"));
                }

                ModelState.AddModelError("Form.Quantity", "Not enough product in stock.");
            }
            return(NewOrder(postData.Form.ProductId));
        }
 public void RunTestsThread()
 {
     try
     {
         while (true)
         {
             lock (TimeoutOrders)
             {
                 //1- Ok order
                 DoLog(string.Format("Sending full regular order @{0}", Configuration.Name), Constants.MessageType.Information);
                 Order           fullOrder        = OrderBuilder.BuildFullOrder();
                 NewOrderWrapper fullOrderWrapper = new NewOrderWrapper(fullOrder, Configuration);
                 MessageOk.Add(fullOrder.ClOrdId, fullOrder);
                 TimeoutOrders.Add(fullOrder.ClOrdId, DateTime.Now);
                 ExecutionReportsReceived.Add(fullOrder.ClOrdId, 0);
                 DoPublishMessage(fullOrderWrapper);
             }
             Thread.Sleep(2000);
         }
     }
     catch (Exception ex)
     {
         DoLog(string.Format("{0}-Critical error running tests:{1}", Configuration.Name, ex.Message), Constants.MessageType.Error);
     }
 }
        public void RunTestsThread()
        {
            try
            {
                //1- Ok order
                DoLog(string.Format("Sending full regular order @{0}", Configuration.Name), Constants.MessageType.Information);
                Order           fullOrder        = OrderBuilder.BuildFullOrder();
                NewOrderWrapper fullOrderWrapper = new NewOrderWrapper(fullOrder, Configuration);
                MessageOk.Add(fullOrder.ClOrdId, fullOrder);
                TimeoutOrders.Add(fullOrder.ClOrdId, DateTime.Now);
                DoPublishMessage(fullOrderWrapper);

                //2- Missing Mandatory tag test
                DoLog(string.Format("Sending missing tag order @{0}", Configuration.Name), Constants.MessageType.Information);
                Order           missingTagOrder        = OrderBuilder.BuildOrderMissingAccount();
                NewOrderWrapper missingTagOrderWrapper = new NewOrderWrapper(missingTagOrder, Configuration);
                MissingTags.Add(missingTagOrder.ClOrdId, "1");//ClOrdId
                TimeoutOrders.Add(missingTagOrder.ClOrdId, DateTime.Now);
                DoPublishMessage(missingTagOrderWrapper);

                //3- Invalid Value tag test
                DoLog(string.Format("Sending invalid tag value @{0}", Configuration.Name), Constants.MessageType.Information);
                Order invalidValueOrder = OrderBuilder.BuildFullOrder();
                invalidValueOrder.Side = Side.BuyToClose;
                NewOrderWrapper invalidValueOrderWrapper = new NewOrderWrapper(invalidValueOrder, Configuration);
                MissingTags.Add(invalidValueOrder.ClOrdId, "54");//Side
                TimeoutOrders.Add(invalidValueOrder.ClOrdId, DateTime.Now);
                DoPublishMessage(invalidValueOrderWrapper);
            }
            catch (Exception ex)
            {
                DoLog(string.Format("{0}-Critical error running tests:{1}", Configuration.Name, ex.Message), Constants.MessageType.Error);
            }
        }
Beispiel #4
0
        public void RunTestsThread()
        {
            try
            {
                //1- Send orders and get ready to validate counters
                DoLog(string.Format("Sending full regular order @{0}", Configuration.Name), Constants.MessageType.Information);
                Order           fullOrder1       = OrderBuilder.BuildFullOrder();
                NewOrderWrapper fullOrderWrapper = new NewOrderWrapper(fullOrder1, Configuration);
                OrdersSent.Add(fullOrder1.ClOrdId, fullOrder1);
                TimeoutOrders.Add(fullOrder1.ClOrdId, DateTime.Now);
                DoPublishMessage(fullOrderWrapper);

                Order           fullOrder2        = OrderBuilder.BuildFullOrder();
                NewOrderWrapper fullOrderWrapper2 = new NewOrderWrapper(fullOrder2, Configuration);
                OrdersSent.Add(fullOrder2.ClOrdId, fullOrder1);
                TimeoutOrders.Add(fullOrder2.ClOrdId, DateTime.Now);
                DoPublishMessage(fullOrderWrapper2);

                Order           fullOrder3        = OrderBuilder.BuildFullOrder();
                NewOrderWrapper fullOrderWrapper3 = new NewOrderWrapper(fullOrder3, Configuration);
                OrdersSent.Add(fullOrder3.ClOrdId, fullOrder3);
                TimeoutOrders.Add(fullOrder3.ClOrdId, DateTime.Now);
                DoPublishMessage(fullOrderWrapper3);
            }
            catch (Exception ex)
            {
                DoLog(string.Format("{0}-Critical error running tests:{1}", Configuration.Name, ex.Message), Constants.MessageType.Error);
            }
        }
        public IActionResult NewOrder(int productId)
        {
            if (!CheckUser())
            {
                return(RedirectToAction("Login", "User"));
            }

            NewOrderWrapper data = new NewOrderWrapper();

            data.Form           = new Order();
            data.Form.ProductId = productId;
            data.CurrentProduct = _db.Products
                                  .SingleOrDefault(p => p.ProductId == productId);
            return(View("NewOrder", data));
        }
        public void RunTestsThread()
        {
            try
            {
                while (true)
                {
                    //1- Send orders and get ready to validate counters
                    DoLog(string.Format("Sending full regular order @{0}", Configuration.Name), Constants.MessageType.Information);
                    Order           fullOrder1       = OrderBuilder.BuildFullOrder();
                    NewOrderWrapper fullOrderWrapper = new NewOrderWrapper(fullOrder1, Configuration);
                    OrdersSent.Add(fullOrder1.ClOrdId, fullOrder1);
                    TimeoutOrders.Add(fullOrder1.ClOrdId, DateTime.Now);
                    LastProcessedCounter.Add(fullOrder1.ClOrdId, 0);
                    DoPublishMessage(fullOrderWrapper);

                    Thread.Sleep(1000 * Configuration.PauseBetweenOrdersInSeconds);//1 second
                }
            }
            catch (Exception ex)
            {
                DoLog(string.Format("{0}-Critical error running tests:{1}", Configuration.Name, ex.Message), Constants.MessageType.Error);
            }
        }