diff --git a/ServerManagement/Components/Controls/ServerComponent.razor b/ServerManagement/Components/Controls/ServerComponent.razor
index 7a6ea06..0e7dc80 100755
--- a/ServerManagement/Components/Controls/ServerComponent.razor
+++ b/ServerManagement/Components/Controls/ServerComponent.razor
@@ -2,6 +2,7 @@
@inject NavigationManager NavigationManager
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
+@inject IServersEFCoreRepository ServersEFCoreRepository
@if (Server != null)
{
@@ -69,7 +70,7 @@
{
if (serverId > 0)
{
- ServersRepository.DeleteServer(serverId);
+ ServersEFCoreRepository.DeleteServer(serverId);
NavigationManager.Refresh(forceReload: true);
}
}
@@ -113,6 +114,8 @@
}
}
this.Server.IsOnline = status;
+
+ ServersEFCoreRepository.UpdateServer(this.Server.Id, Server);
}
}
}
diff --git a/ServerManagement/Components/Controls/ServerListComponent.razor b/ServerManagement/Components/Controls/ServerListComponent.razor
index 2a0d935..363cfc5 100644
--- a/ServerManagement/Components/Controls/ServerListComponent.razor
+++ b/ServerManagement/Components/Controls/ServerListComponent.razor
@@ -1,5 +1,7 @@
@using System.Threading;
+@inject IServersEFCoreRepository ServersEFCoreRepository
+
@@ -61,11 +63,11 @@
{
if (string.IsNullOrWhiteSpace(this.SearchFilter))
{
- servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
+ servers = ServersEFCoreRepository.GetServersByCity(CityName ?? "Eindhoven");
}
else
{
- servers = ServersRepository.SearchServers(SearchFilter);
+ servers = ServersEFCoreRepository.SearchServers(SearchFilter);
}
}
@@ -77,11 +79,11 @@
{
if (string.IsNullOrWhiteSpace(this.SearchFilter))
{
- servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
+ servers = ServersEFCoreRepository.GetServersByCity(CityName ?? "Eindhoven");
}
else
{
- servers = ServersRepository.SearchServers(SearchFilter);
+ servers = ServersEFCoreRepository.SearchServers(SearchFilter);
}
// Render the component again by letting it know the state changed.
StateHasChanged();
diff --git a/ServerManagement/Components/Pages/AddEditServer.razor b/ServerManagement/Components/Pages/AddEditServer.razor
index 7084e1c..259bb76 100644
--- a/ServerManagement/Components/Pages/AddEditServer.razor
+++ b/ServerManagement/Components/Pages/AddEditServer.razor
@@ -2,6 +2,7 @@
@inject NavigationManager NavigationManager
@inject IJSRuntime JSRuntime
+@inject IServersEFCoreRepository ServersEFCoreRepository
QuickGrid demo
@@ -63,13 +64,21 @@
}
@code {
- private List? servers = ServersRepository.GetServers();
+ private List? servers;
private PaginationState paginationState = new PaginationState { ItemsPerPage = 5 };
+
+ protected override void OnAfterRender(bool firstRender)
+ {
+ if (firstRender)
+ {
+ servers = ServersEFCoreRepository.GetServers();
+ }
+ }
private void DeleteServer(int serverId)
{
if (serverId > 0)
{
- ServersRepository.DeleteServer(serverId);
+ ServersEFCoreRepository.DeleteServer(serverId);
NavigationManager.Refresh(forceReload: true);
}
}
diff --git a/ServerManagement/Components/Pages/Servers.razor b/ServerManagement/Components/Pages/Servers.razor
index 85fdc98..6846640 100644
--- a/ServerManagement/Components/Pages/Servers.razor
+++ b/ServerManagement/Components/Pages/Servers.razor
@@ -5,6 +5,7 @@
@inject NavigationManager NavigationManager
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
+@inject IServersEFCoreRepository ServersEFCoreRepository
Servers
@@ -64,7 +65,7 @@
StateHasChanged();
}
- var serversEindhoven = ServersRepository.GetServersByCity("Eindhoven");
+ var serversEindhoven = ServersEFCoreRepository.GetServersByCity("Eindhoven");
if (serversEindhoven != null)
{
EindhovenOnlineServersStore.SetNumberServersOnline(serversEindhoven.Count(s => s.IsOnline));
diff --git a/ServerManagement/Components/Pages/Wizards/SetStatus.razor b/ServerManagement/Components/Pages/Wizards/SetStatus.razor
index b7ee4d0..d3735fa 100644
--- a/ServerManagement/Components/Pages/Wizards/SetStatus.razor
+++ b/ServerManagement/Components/Pages/Wizards/SetStatus.razor
@@ -4,6 +4,7 @@
@inject NavigationManager NavigationManager
@inject ContainerStorage containerStorage
+@inject IServersEFCoreRepository ServersEFCoreRepository
Server Status
@@ -48,7 +49,7 @@
if (server != null)
{
containerStorage.SetServer(null);
- ServersRepository.AddServer(server);
+ ServersEFCoreRepository.AddServer(server);
NavigationManager.NavigateTo($"/servers/back_from/{server?.City}");
}
}
diff --git a/ServerManagement/Models/IServersEFCoreRepository.cs b/ServerManagement/Models/IServersEFCoreRepository.cs
new file mode 100644
index 0000000..2111e67
--- /dev/null
+++ b/ServerManagement/Models/IServersEFCoreRepository.cs
@@ -0,0 +1,13 @@
+namespace ServerManagement.Models
+{
+ public interface IServersEFCoreRepository
+ {
+ void AddServer(Server server);
+ void DeleteServer(int serverId);
+ Server? GetServerById(int id);
+ List GetServers();
+ List GetServersByCity(string cityName);
+ List SearchServers(string serverFilter);
+ void UpdateServer(int serverId, Server server);
+ }
+}
\ No newline at end of file
diff --git a/ServerManagement/Models/ServersEFCoreRepository.cs b/ServerManagement/Models/ServersEFCoreRepository.cs
index bdaedad..52b3878 100644
--- a/ServerManagement/Models/ServersEFCoreRepository.cs
+++ b/ServerManagement/Models/ServersEFCoreRepository.cs
@@ -1,10 +1,9 @@
using Microsoft.EntityFrameworkCore;
using ServerManagement.Data;
-using ServerManagement.Models;
-namespace ServerManagement;
+namespace ServerManagement.Models;
-public class ServersEFCoreRepository
+public class ServersEFCoreRepository : IServersEFCoreRepository
{
private readonly IDbContextFactory contextFactory;
public ServersEFCoreRepository(IDbContextFactory contextFactory)
diff --git a/ServerManagement/Models/ServersRepository.cs b/ServerManagement/Models/ServersRepository.cs
index 6432235..cc041ce 100644
--- a/ServerManagement/Models/ServersRepository.cs
+++ b/ServerManagement/Models/ServersRepository.cs
@@ -1,5 +1,6 @@
namespace ServerManagement.Models
{
+ // No longer used, since ServersEFCoreRepository is now in use.
public static class ServersRepository
{
private static List servers = new List()
diff --git a/ServerManagement/Program.cs b/ServerManagement/Program.cs
index 179d2c8..9316c15 100644
--- a/ServerManagement/Program.cs
+++ b/ServerManagement/Program.cs
@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore;
using ServerManagement.Components;
using ServerManagement.Data;
+using ServerManagement.Models;
using ServerManagement.StateStore;
var builder = WebApplication.CreateBuilder(args);
@@ -33,6 +34,11 @@ builder.Services.AddScoped();
builder.Services.AddScoped();
+// Transient is used here, the database is already globally accessible,
+// so this service does not need to live longer than necessary, just when needed.
+// First the interface is registered, then its concrete implementation.
+builder.Services.AddTransient();
+
var app = builder.Build();
// Configure the HTTP request pipeline.