diff --git a/Solution/AdminPanel/AdminPanel.csproj b/Solution/AdminPanel/AdminPanel.csproj
index e3e33e3..7b1d5f5 100644
--- a/Solution/AdminPanel/AdminPanel.csproj
+++ b/Solution/AdminPanel/AdminPanel.csproj
@@ -8,4 +8,8 @@
true
+
+
+
+
diff --git a/Solution/AdminPanel/MainWindow.xaml b/Solution/AdminPanel/MainWindow.xaml
index 1eb7b98..dd28584 100644
--- a/Solution/AdminPanel/MainWindow.xaml
+++ b/Solution/AdminPanel/MainWindow.xaml
@@ -10,7 +10,7 @@
-
+
diff --git a/Solution/AdminPanel/MainWindow.xaml.cs b/Solution/AdminPanel/MainWindow.xaml.cs
index e0d44f6..c81e166 100644
--- a/Solution/AdminPanel/MainWindow.xaml.cs
+++ b/Solution/AdminPanel/MainWindow.xaml.cs
@@ -1,4 +1,6 @@
-using System.Text;
+using LibCubeIntegration.GetCubeStrategies;
+using LibCubeIntegration.ResetCubeStrategies;
+using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
@@ -16,9 +18,16 @@ namespace AdminPanel
///
public partial class MainWindow : Window
{
+ private IResetCubeStrategy ResetStrategy = new ResetCubeViaAPIStrategy("CubeProxy");
+
public MainWindow()
{
InitializeComponent();
}
+
+ private async void Reset_Click(object sender, RoutedEventArgs e)
+ {
+ await ResetStrategy.ResetCubeAsync();
+ }
}
}
\ No newline at end of file
diff --git a/Solution/CubeProxy/Controllers/CubeController.cs b/Solution/CubeProxy/Controllers/CubeController.cs
index 4f752c0..d1ac2c3 100644
--- a/Solution/CubeProxy/Controllers/CubeController.cs
+++ b/Solution/CubeProxy/Controllers/CubeController.cs
@@ -1,4 +1,5 @@
-using LibCubeIntegration.Services;
+using LibCubeIntegration.ResetCubeStrategies;
+using LibCubeIntegration.Services;
using LibNetCube;
using Microsoft.AspNetCore.Mvc;
@@ -10,10 +11,12 @@ namespace CubeProxy.Controllers
public class CubeController : Controller
{
readonly CubeServiceFacade _cubeService = new CubeServiceFacade("CubeService");
+ readonly IResetCubeStrategy ResetStrategy = new ResetCubeViaAPIStrategy("CubeService");
[HttpPost("[action]")]
- public IActionResult Reset()
+ public async Task Reset()
{
+ await ResetStrategy.ResetCubeAsync();
return Ok();
}
diff --git a/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs b/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs
new file mode 100644
index 0000000..0a5c3ec
--- /dev/null
+++ b/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibCubeIntegration.ResetCubeStrategies
+{
+ public interface IResetCubeStrategy
+ {
+ public Task ResetCubeAsync();
+ }
+}
diff --git a/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs b/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs
new file mode 100644
index 0000000..be6aabf
--- /dev/null
+++ b/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibCubeIntegration.ResetCubeStrategies
+{
+ public class ResetCubeViaAPIStrategy : IResetCubeStrategy
+ {
+ private string ServerAddress;
+ static readonly HttpClient Client = new();
+
+ public ResetCubeViaAPIStrategy(string serviceName = "CubeService")
+ {
+ ServerAddress = NetworkingConfiguration.GetFullAddressForServer(serviceName);
+ }
+
+ public async Task ResetCubeAsync()
+ {
+ var requestUri = $"{ServerAddress}/api/Cube/Reset";
+ var response = await Client.PostAsync(requestUri, null);
+ return response.IsSuccessStatusCode;
+ }
+ }
+}