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"
+ });
+ }
+}