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 1e8bcb3..5750da9 100644 --- a/RobotApp.Client/Pages/Order/OrderMess.razor +++ b/RobotApp.Client/Pages/Order/OrderMess.razor @@ -7,6 +7,7 @@ @inject IJSRuntime JS @inject IDialogService DialogService +@inject ISnackbar Snackbar @inject HttpClient Http @@ -50,8 +51,8 @@ SendSuccess="@sendSuccess" OnCopy="CopyJsonToClipboard" OnSend="SendOrderToServer" - OnImport="OpenImportDialog" /> - + OnImport="OpenImportDialog" + OnCancel="CancelOrder" /> @@ -65,7 +66,6 @@ private string OrderJson = ""; // 🔥 CACHE JSON (QUAN TRỌNG) private bool copied; private bool? sendSuccess; - private bool sending; private CancellationTokenSource? _copyCts; // ================= INIT ================= @@ -245,6 +245,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 e2353a4..3472e8d 100644 --- a/RobotApp/Controllers/OrderController.cs +++ b/RobotApp/Controllers/OrderController.cs @@ -1,8 +1,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using RobotApp.Services.Robot; +using RobotApp.Interfaces; using RobotApp.VDA5050.Order; -using System.Text.Json; namespace RobotApp.Controllers; @@ -10,24 +9,11 @@ namespace RobotApp.Controllers; [Route("api/order")] //[Authorize] [AllowAnonymous] -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 @@ -36,4 +22,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" + }); + } +}