Ejemplo n.º 1
0
        public async Task <IActionResult> AddOrder(StockTransferOrderModel item)
        {
            if (ModelState.IsValid)
            {
                var resp = await aggregationController.AddNewOrder(item);

                if (resp.StatusCode == 200)
                {
                    eventBus.PublishEvent(new AddOrderEvent
                    {
                        Author = item.Username,
                        Stock  = "Stock" + item.StockId.ToString(),
                        Value  = item.Value.ToString()
                    });
                    return(RedirectToAction("CorrectlyAddedOrder"));
                }
                return(View("MyError", new ErrorModel(resp)));
            }
            var stockList = await stockService.GetStocks();

            if (stockList == null)
            {
                var resp = StatusCode(500, "StockService is unavailable. Please, try again later");
                return(View("MyError", new ErrorModel(resp)));
            }
            ViewBag.stockList = new SelectList(stockList, "Id", "Name", item.StockId);
            return(View());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> RefuseOrder(StockTransferOrderModel item)
        {
            if (ModelState.IsValid)
            {
                var resp = await aggregationController.RefuseOrder(item);

                if (resp.StatusCode == 200)
                {
                    return(RedirectToAction("CorrectlyRefusedOrder"));
                }
                return(View("MyError", new ErrorModel(resp)));
            }
            var stockList = await stockService.GetStocks();

            if (stockList == null)
            {
                var resp = StatusCode(500, "Your data wasn't correct. And StockService is unavailable now. Please, try later");
                return(View("MyError", new ErrorModel(resp)));
            }
            ViewBag.stockList = new SelectList(stockList, "Id", "Name", item.StockId);
            var transfList = await transferService.GetTransfers();

            if (transfList == null)
            {
                var resp = StatusCode(500, "Your data wasn't correct. And TransferService is unavailable. Please, try again later");
                return(View("MyError", new ErrorModel(resp)));
            }
            ViewBag.transfList = new SelectList(transfList, "Id", "Name");
            return(View());
        }
Ejemplo n.º 3
0
 public Order(StockTransferOrderModel orderModel)
 {
     this.UserId     = orderModel.UserId;
     this.Status     = orderModel.Status;
     this.StockId    = orderModel.StockId;
     this.TransferId = orderModel.TransferId;
     this.Value      = orderModel.Value;
 }
Ejemplo n.º 4
0
        public async Task <IActionResult> AddOrder(int?stockId, double?value)
        {
            if (stockId == null || value == null)
            {
                return(StatusCode(500, "Parameters are invalid"));
            }
            var item = new StockTransferOrderModel();

            item.StockId = stockId.GetValueOrDefault();
            item.Value   = value.GetValueOrDefault();

            var stockResp = await stockService.BookStock(item);

            if (stockResp == null)
            {
                return(StatusCode(503, "StockService is unavailable"));
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                item.OrderStatus = 20;
                return(StatusCode(500, "Stock wasn't found"));
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                item.OrderStatus = 30;
                return(StatusCode(507, "There isn't enough place"));
            }
            item.OrderStatus = 10;
            var transfResp = await transferService.FindTransfer(item);

            if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
            {
                stockResp = await stockService.RefuseStock(item);

                return(StatusCode(503, "TransferService is unavailable, so recall of refusing stock was made"));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                item.OrderStatus = item.OrderStatus + 2;
                stockResp        = await stockService.RefuseStock(item);

                return(StatusCode(500, "There are no transfers"));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                item.OrderStatus += 3;
                stockResp         = await stockService.RefuseStock(item);

                return(StatusCode(500, "All transfers are busy"));
            }
            item.OrderStatus += 1;
            var code = await orderService.AddOrder(item);

            return(Ok());
        }
Ejemplo n.º 5
0
        public IActionResult BookTransfer(StockTransferOrderModel item)
        {
            var trans    = dbcontext.Transfers;
            var transfer = trans.FirstOrDefault(t => t.Id == item.TransferId);

            if (transfer == null)
            {
                return(StatusCode(404, "There is no transfer with such id"));
            }
            transfer.Status = 1;
            dbcontext.Transfers.Update(transfer);
            dbcontext.SaveChanges();
            return(Ok());
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> RefuseOrder([FromBody] StockTransferOrderModel item)
        {
            if (item == null)
            {
                return(NoContent());
            }
            var ord = dbcontext.Orders.FirstOrDefault(t => t.Id == item.Id);

            if (ord == null)
            {
                return(NotFound());
            }
            ord.Status = item.Status;
            dbcontext.Orders.Update(ord);
            dbcontext.SaveChanges();
            return(new NoContentResult());
        }
Ejemplo n.º 7
0
        public IActionResult RefuseStock([FromBody] StockTransferOrderModel item)
        {
            logger.LogDebug($"Getting stock with id = {item.StockId}");
            var stck = dbcontext.Stocks.FirstOrDefault(t => t.Id == item.StockId);

            if (stck == null)
            {
                logger.LogDebug($"Can't find stock with id = {item.StockId}");
                return(NotFound());
            }
            logger.LogDebug($"Refusing place in the stock id = {item.StockId}");
            stck.FreePlace = stck.FreePlace + item.Value;
            logger.LogDebug($"Updating database");
            dbcontext.Stocks.Update(stck);
            logger.LogDebug($"Saving changes");
            dbcontext.SaveChanges();
            return(Ok());
        }
Ejemplo n.º 8
0
 public async Task <IActionResult> AddOrder([FromBody] StockTransferOrderModel item)
 {
     if (item == null)
     {
         logger.LogDebug($"Info for creating order is empty");
         return(StatusCode(204, "the item for adding is empty"));
     }
     dbcontext.Orders.Add(new Order()
     {
         Status     = item.Status,
         StockId    = item.StockId,
         TransferId = item.TransferId,
         UserId     = item.UserId,
         Value      = item.Value
     });
     dbcontext.SaveChanges();
     return(Ok());
 }
Ejemplo n.º 9
0
        public IActionResult RefuseTransfer([FromBody] StockTransferOrderModel item)
        {
            if (item.TransferId == 0)
            {
                return(NoContent());
            }
            var trans = dbcontext.Transfers.FirstOrDefault(t => t.Id == item.TransferId);

            if (trans == null)
            {
                return(StatusCode(404, "Transfer with such id wasn't found"));
            }
            trans.Status = 0;

            dbcontext.Transfers.Update(trans);
            dbcontext.SaveChanges();
            return(Ok());
        }
Ejemplo n.º 10
0
        public IActionResult FindTransfer(StockTransferOrderModel item)
        {
            var trans = dbcontext.Transfers;

            if (trans.Count() == 0)
            {
                return(NoContent());
            }
            var TransId = 0;

            foreach (var t in trans)
            {
                if (TransId > 0)
                {
                    break;
                }
                if (t.Carrying >= item.Value && t.Status == 0)
                {
                    TransId = t.Id;
                }
            }

            if (TransId == 0)
            {
                return(BadRequest("All transfers are busy"));
            }
            var transfer = dbcontext.Transfers.FirstOrDefault(t => t.Id == TransId);

            transfer.Status = 1;
            item.TransferId = TransId;
            dbcontext.Transfers.Update(transfer);
            dbcontext.SaveChanges();
            var msg = TransId.ToString();

            return(StatusCode(200, msg));
        }
Ejemplo n.º 11
0
        public IActionResult BookStock([FromBody] StockTransferOrderModel item)
        {
            logger.LogDebug($"Getting stock with id = {item.StockId}");
            var stck = dbcontext.Stocks.FirstOrDefault(t => t.Id == item.StockId);

            if (stck == null)
            {
                logger.LogDebug($"Can't find stock with id = {item.StockId}");
                return(NotFound());
            }
            if (stck.FreePlace < item.Value)
            {
                logger.LogDebug($"The stock {item.StockId} doesn't have enough place for order");
                return(BadRequest("not enough place"));
            }
            logger.LogDebug($"Booking place in the stock id = {item.StockId}");
            stck.FreePlace = stck.FreePlace - item.Value;
            logger.LogDebug($"Updating database");
            var res = dbcontext.Stocks.Update(stck);

            logger.LogDebug($"Saving changes");
            dbcontext.SaveChanges();
            return(Ok());
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> RefuseOrderByOrderId(StockTransferOrderModel item)
        {
            if (ModelState.IsValid)
            {
                var itm = await orderService.GetById(item.Id);

                var resp = await aggregationController.RefuseOrder(itm);

                if (resp.StatusCode == 200)
                {
                    return(RedirectToAction("CorrectlyRefusedOrder"));
                }
                return(View("MyError", new ErrorModel(resp)));
            }
            var ordList = await orderService.GetOrders();

            if (ordList == null)
            {
                var resp = StatusCode(500, "OrderService is unavailable. Please, try again later");
                return(View("MyError", new ErrorModel(resp)));
            }
            ViewBag.ordList = new SelectList(ordList, "Id", "Id");
            return(View());
        }
Ejemplo n.º 13
0
        public async Task <IActionResult> AddOrder(int?stockId, double?value)
        {
            var msg = "";

            if (stockId == null || value == null)
            {
                if (stockId == null)
                {
                    if (value == null)
                    {
                        msg = "Stock identificator and order value are invalid";
                    }
                    else
                    {
                        msg = "Stock identificator is invalid";
                    }
                }
                else
                {
                    msg = "Order value is invalid";
                }
                return(StatusCode(400, msg));
            }
            var item = new StockTransferOrderModel();

            item.StockId = stockId.GetValueOrDefault();
            item.Value   = value.GetValueOrDefault();

            var stockResp = await stockService.BookStock(item);

            if (stockResp == null)
            {
                msg = "StockService is unavailable";
                return(StatusCode(503, msg));
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                item.OrderStatus = 20;
                msg = "Stock wasn't found";
                return(StatusCode(404, msg));
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                item.OrderStatus = 30;
                msg = "There isn't enough place";
                return(StatusCode(507, msg));
            }
            item.OrderStatus = 10;
            var transfResp = await transferService.FindTransfer(item);

            if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
            {
                stockResp = await stockService.RefuseStock(item);

                msg = "TransferService is unavailable, so your order wasn't booked. Try again later";
                return(StatusCode(503, msg));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                item.OrderStatus = item.OrderStatus + 2;
                stockResp        = await stockService.RefuseStock(item);

                msg = "There are no available transfers. Try again later";
                return(StatusCode(500, msg));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                item.OrderStatus += 3;
                stockResp         = await stockService.RefuseStock(item);

                msg = "All transfers are busy. Try again later";
                return(StatusCode(507, msg));
            }
            item.OrderStatus += 1;
            //var code = await orderService.AddOrder(item);
            return(StatusCode(200));
            //var stockList = await stockService.GetAllStocks(0, 0);
            //ViewBag.stockList = new SelectList(stockList, "Id", "Name",item.StockId);
            //return View(item);
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> RefuseOrder(int?stockId, double?value, int?transferId)
        {
            var msg = "";

            if (stockId == null || value == null || transferId == null)
            {
                if (stockId == null)
                {
                    if (value == null)
                    {
                        msg = "Stock identificator and order value are invalid";
                    }
                    else if (transferId == null)
                    {
                        msg = "Stock identificator and transfer identificator are invalid";
                    }
                    else
                    {
                        msg = "Stock identificator is invalid";
                    }
                }
                else if (value == null)
                {
                    if (transferId == null)
                    {
                        msg = "Order value and transfer identificator are invalid";
                    }
                    else
                    {
                        msg = "Transfer identificator is invalid";
                    }
                }
                else
                {
                    msg = "Transfer identificator is invalid";
                }
                return(StatusCode(400, msg));
            }
            var item = new StockTransferOrderModel();

            item.StockId    = stockId.GetValueOrDefault();
            item.Value      = value.GetValueOrDefault();
            item.TransferId = transferId.GetValueOrDefault();

            var stockResp = await stockService.RefuseStock(item);

            var transfResp = await transferService.RefuseTransfer(item);

            if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden || transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
            {
                if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                {
                    await transferService.BookTransfer(item);
                }
                if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                {
                    await stockService.BookStock(item);
                }
                QueueProducer.GetIntoQueueTillSuccess(async() =>
                {
                    using (var client = new HttpClient())
                    {
                        try
                        {
                            stockResp  = await stockService.RefuseStock(item);
                            transfResp = await transferService.RefuseTransfer(item);
                            if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden || transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                            {
                                if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                                {
                                    await transferService.BookTransfer(item);
                                }
                                if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                                {
                                    await stockService.BookStock(item);
                                }
                                return(false);
                            }
                            return(true);
                        }
                        catch
                        {
                        }
                        return(false);
                    }
                });
                //return StatusCode(503, $"StockService: {(stockResp?.StatusCode != System.Net.HttpStatusCode.Forbidden ? "online" : "offline")}; " +
                //                       $"TransferService: {(transfResp?.StatusCode != System.Net.HttpStatusCode.Forbidden ? "online" : "offline")}");
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                item.OrderStatus = 20;
                msg = "Stock wasn't found";
                return(StatusCode(404, msg));
            }
            item.OrderStatus = 90;
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                item.OrderStatus = item.OrderStatus + 2;
                msg = "No info for refusing transfer";
                return(StatusCode(404, msg));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                item.OrderStatus += 3;
                msg = "Can't find transfer for refuse";
                return(StatusCode(404, msg));
            }
            item.OrderStatus += 9;
            //await orderService.RefuseOrder(item);
            return(Ok());
        }
Ejemplo n.º 15
0
 public async Task <HttpResponseMessage> RefuseTransfer(StockTransferOrderModel item) =>
 await PutJson("refuse_transfer", item);
Ejemplo n.º 16
0
 public async Task <HttpResponseMessage> FindTransfer(StockTransferOrderModel item) =>
 await PutJson("find_transfer", item);
Ejemplo n.º 17
0
 public async Task <HttpResponseMessage> UpdateOrder(StockTransferOrderModel item)
 {
     return(await PutJson("update", item));
 }
Ejemplo n.º 18
0
 public async Task <HttpResponseMessage> AddOrder(StockTransferOrderModel item)
 {
     return(await PostJson("", item));
 }
Ejemplo n.º 19
0
        public async Task <ObjectResult> RefuseOrder(StockTransferOrderModel item)
        {
            var msg       = "";
            var stockResp = await stockService.RefuseStock(item);

            var transfResp = await transferService.RefuseTransfer(item);

            if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden || transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
            {
                if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                {
                    await transferService.BookTransfer(item);
                }
                if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                {
                    await stockService.BookStock(item);
                }
                QueueProducer.GetIntoQueueTillSuccess(async() =>
                {
                    using (var client = new HttpClient())
                    {
                        try
                        {
                            stockResp  = await stockService.RefuseStock(item);
                            transfResp = await transferService.RefuseTransfer(item);
                            if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden || transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                            {
                                if (stockResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                                {
                                    await transferService.BookTransfer(item);
                                }
                                if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
                                {
                                    await stockService.BookStock(item);
                                }
                                return(false);
                            }
                            return(true);
                        }
                        catch
                        {
                        }
                        return(false);
                    }
                });
                //return StatusCode(503, $"StockService: {(stockResp?.StatusCode != System.Net.HttpStatusCode.Forbidden ? "online" : "offline")}; " +
                //                       $"TransferService: {(transfResp?.StatusCode != System.Net.HttpStatusCode.Forbidden ? "online" : "offline")}");
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                item.Status = 20;
                msg         = "Stock wasn't found";
                return(StatusCode(404, msg));
            }
            item.Status = 90;
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                item.Status = item.Status + 2;
                msg         = "No info for refusing transfer";
                return(StatusCode(404, msg));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                item.Status += 3;
                msg          = "Can't find transfer for refuse";
                return(StatusCode(404, msg));
            }
            item.Status += 9;
            await orderService.RefuseOrder(item);

            eventBus.PublishEvent(new DeletedOrderEvent
            {
                User = "******"
            });
            return(StatusCode(200, msg));
        }
Ejemplo n.º 20
0
        public async Task <ObjectResult> AddNewOrder(StockTransferOrderModel item)
        {
            var msg       = "";
            var stockResp = await stockService.BookStock(item);

            if (stockResp == null)
            {
                msg = "StockService is unavailable";
                return(StatusCode(503, msg));
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                msg = "Stock wasn't found";
                return(StatusCode(404, msg));
            }
            if (stockResp?.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                msg = "There isn't enough place";
                return(StatusCode(507, msg));
            }
            item.Status = 10;
            var transfResp = await transferService.FindTransfer(item);

            if (transfResp?.StatusCode == System.Net.HttpStatusCode.Forbidden)
            {
                stockResp = await stockService.RefuseStock(item);

                msg = "TransferService is unavailable, so your order wasn't booked. Try again later";
                return(StatusCode(503, msg));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                item.Status = item.Status + 2;
                stockResp   = await stockService.RefuseStock(item);

                msg = "There are no available transfers. Try again later";
                return(StatusCode(404, msg));
            }
            if (transfResp?.StatusCode == System.Net.HttpStatusCode.BadRequest)
            {
                stockResp = await stockService.RefuseStock(item);

                msg = "All transfers are busy. Try again later";
                return(StatusCode(507, msg));
            }
            var trId = transfResp.Content.ReadAsStringAsync().Result;

            item.TransferId = Int16.Parse(trId);
            item.Status    += 1;
            var ordResp = await orderService.AddOrder(item);

            eventBus.PublishEvent(new AddedOrderEvent
            {
                User = item.Username
            });
            eventBus.PublishEvent(new OrderValuesEvent
            {
                Author = item.Username,
                Value  = item.Value.ToString()
            });
            return(StatusCode(200, msg));
        }
Ejemplo n.º 21
0
        //public async Task<HttpResponseMessage> GetStockById(int id, StockModel stock, double val) =>
        //    await PutJson("book_s/" + stock.Id, stock);

        public async Task <HttpResponseMessage> BookStock(StockTransferOrderModel item) =>
        await PutJson("books", item);