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