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()); }
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()); }
public Order(StockTransferOrderModel orderModel) { this.UserId = orderModel.UserId; this.Status = orderModel.Status; this.StockId = orderModel.StockId; this.TransferId = orderModel.TransferId; this.Value = orderModel.Value; }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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)); }
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()); }
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()); }
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); }
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()); }
public async Task <HttpResponseMessage> RefuseTransfer(StockTransferOrderModel item) => await PutJson("refuse_transfer", item);
public async Task <HttpResponseMessage> FindTransfer(StockTransferOrderModel item) => await PutJson("find_transfer", item);
public async Task <HttpResponseMessage> UpdateOrder(StockTransferOrderModel item) { return(await PutJson("update", item)); }
public async Task <HttpResponseMessage> AddOrder(StockTransferOrderModel item) { return(await PostJson("", item)); }
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)); }
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)); }
//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);