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.