diff --git a/RobotApp.Client/Pages/Order/JsonOutputPanel.razor b/RobotApp.Client/Pages/Order/JsonOutputPanel.razor index 900a4ac..7e9ff0c 100644 --- a/RobotApp.Client/Pages/Order/JsonOutputPanel.razor +++ b/RobotApp.Client/Pages/Order/JsonOutputPanel.razor @@ -14,6 +14,15 @@ Import JSON + + + Cancel + + SendSuccess switch diff --git a/RobotApp.Client/Pages/Order/OrderMess.razor b/RobotApp.Client/Pages/Order/OrderMess.razor index 84f5eb5..bc73b0a 100644 --- a/RobotApp.Client/Pages/Order/OrderMess.razor +++ b/RobotApp.Client/Pages/Order/OrderMess.razor @@ -8,6 +8,7 @@ @inject IJSRuntime JS @inject IDialogService DialogService +@inject ISnackbar Snackbar @inject HttpClient Http @@ -51,8 +52,8 @@ SendSuccess="@sendSuccess" OnCopy="CopyJsonToClipboard" OnSend="SendOrderToServer" - OnImport="OpenImportDialog" /> - + OnImport="OpenImportDialog" + OnCancel="CancelOrder" /> @@ -66,7 +67,6 @@ private string OrderJson = ""; // 🔥 CACHE JSON (QUAN TRỌNG) private bool copied; private bool? sendSuccess; - private bool sending; private CancellationTokenSource? _copyCts; // ================= INIT ================= @@ -246,6 +246,35 @@ }); } + async Task CancelOrder() + { + try + { + var res = await Http.PostAsync("/api/order/cancel", null); + + sendSuccess = null; // reset trạng thái SEND + copied = false; + + if (res.IsSuccessStatusCode) + { + Snackbar.Add( + "⛔ Order đã huỷ", + Severity.Info); + } + else + { + Snackbar.Add( + "❌ Huỷ order thất bại", + Severity.Error); + } + } + catch (Exception ex) + { + Snackbar.Add( + $"❌ Lỗi: {ex.Message}", + Severity.Error); + } + } async Task CopyJsonToClipboard() diff --git a/RobotApp/Controllers/OrderController.cs b/RobotApp/Controllers/OrderController.cs index 4115cb2..ab8ac29 100644 --- a/RobotApp/Controllers/OrderController.cs +++ b/RobotApp/Controllers/OrderController.cs @@ -1,30 +1,16 @@ using Microsoft.AspNetCore.Mvc; -using RobotApp.Services.Robot; +using RobotApp.Interfaces; using RobotApp.VDA5050.Order; -using System.Text.Json; namespace RobotApp.Controllers; [ApiController] [Route("api/order")] -public class OrderController : ControllerBase +public class OrderController( IOrder robotOrderController, IInstantActions instantActions) : ControllerBase { - private readonly RobotOrderController robotOrderController; - - public OrderController(RobotOrderController robotOrderController) - { - this.robotOrderController = robotOrderController; - } - [HttpPost] public IActionResult SendOrder([FromBody] OrderMsg order) { - Console.WriteLine("===== ORDER RECEIVED ====="); - Console.WriteLine(JsonSerializer.Serialize(order, new JsonSerializerOptions - { - WriteIndented = true - })); - robotOrderController.UpdateOrder(order); return Ok(new @@ -33,4 +19,17 @@ public class OrderController : ControllerBase message = "Order received" }); } -} \ No newline at end of file + + [HttpPost("cancel")] + public IActionResult CancelOrder() + { + robotOrderController.StopOrder(); + instantActions.StopOrderAction(); + + return Ok(new + { + success = true, + message = "Order and actions have been cancelled" + }); + } +}