diff --git a/ServerManagement/Models/ServersEFCoreRepository.cs b/ServerManagement/Models/ServersEFCoreRepository.cs new file mode 100644 index 0000000..bdaedad --- /dev/null +++ b/ServerManagement/Models/ServersEFCoreRepository.cs @@ -0,0 +1,80 @@ +using Microsoft.EntityFrameworkCore; +using ServerManagement.Data; +using ServerManagement.Models; + +namespace ServerManagement; + +public class ServersEFCoreRepository +{ + private readonly IDbContextFactory contextFactory; + public ServersEFCoreRepository(IDbContextFactory contextFactory) + { + this.contextFactory = contextFactory; + } + + public void AddServer(Server server) + { + using var context = this.contextFactory.CreateDbContext(); + context.Servers.Add(server); + + context.SaveChanges(); + } + + public List GetServers() + { + using var context = this.contextFactory.CreateDbContext(); + return context.Servers.ToList(); + } + + public List GetServersByCity(string cityName) + { + using var context = this.contextFactory.CreateDbContext(); + return context.Servers.Where(s => s.City != null && s.City.ToLower().IndexOf(cityName.ToLower()) >= 0).ToList(); + } + + public Server GetServerById(int id) + { + using var context = this.contextFactory.CreateDbContext(); + var server = context.Servers.Find(id); + + if (server is not null) return server; + return new Server(); + } + + public void UpdateServer(int serverId, Server server) + { + if (server == null) throw new ArgumentNullException(nameof(server)); + if (serverId != server.Id) return; + + using var context = this.contextFactory.CreateDbContext(); + var serverToUpdate = context.Servers.Find(serverId); + + if (serverToUpdate is not null) + { + serverToUpdate.IsOnline = server.IsOnline; + serverToUpdate.Name = server.Name; + serverToUpdate.City = server.City; + + context.SaveChanges(); + } + } + + public void DeleteServer(int serverId) + { + using var context = this.contextFactory.CreateDbContext(); + var server = context.Servers.Find(serverId); + if (server is null) return; + + context.Servers.Remove(server); + context.SaveChanges(); + } + + public List SearchServers(string serverFilter) + { + using var context = this.contextFactory.CreateDbContext(); + return context.Servers.Where(s => + s.Name != null && + s.Name.ToLower().IndexOf(serverFilter.ToLower()) >= 0) + .ToList(); + } +}