122 lines
2.9 KiB
C#
122 lines
2.9 KiB
C#
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Watcher.Data;
|
|
using Watcher.Models;
|
|
using Watcher.ViewModels;
|
|
|
|
[Authorize]
|
|
public class ServerController : Controller
|
|
{
|
|
private readonly AppDbContext _context;
|
|
|
|
public ServerController(AppDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<IActionResult> Overview()
|
|
{
|
|
var vm = new ServerOverviewViewModel
|
|
{
|
|
Servers = await _context.Servers.OrderBy(s => s.Id).ToListAsync()
|
|
};
|
|
|
|
return View(vm);
|
|
}
|
|
|
|
[HttpGet]
|
|
public IActionResult AddServer()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<IActionResult> AddServer(AddServerViewModel vm)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return View(vm);
|
|
|
|
var server = new Server
|
|
{
|
|
Name = vm.Name,
|
|
IPAddress = vm.IPAddress,
|
|
Type = vm.Type,
|
|
IsOnline = vm.IsOnline,
|
|
};
|
|
|
|
_context.Servers.Add(server);
|
|
await _context.SaveChangesAsync();
|
|
|
|
return RedirectToAction(nameof(Overview));
|
|
}
|
|
|
|
[HttpPost]
|
|
[ValidateAntiForgeryToken]
|
|
public async Task<IActionResult> Delete(int id)
|
|
{
|
|
var server = await _context.Servers.FindAsync(id);
|
|
if (server == null)
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
_context.Servers.Remove(server);
|
|
await _context.SaveChangesAsync();
|
|
return RedirectToAction(nameof(Overview));
|
|
}
|
|
|
|
// GET: Server/Edit/5
|
|
public async Task<IActionResult> EditServer(int id)
|
|
{
|
|
var server = await _context.Servers.FindAsync(id);
|
|
if (server == null) return NotFound();
|
|
|
|
var vm = new EditServerViewModel
|
|
{
|
|
Name = server.Name,
|
|
IPAddress = server.IPAddress,
|
|
Type = server.Type
|
|
};
|
|
|
|
return View(vm);
|
|
}
|
|
|
|
// POST: Server/Edit/5
|
|
[HttpPost]
|
|
[ValidateAntiForgeryToken]
|
|
public async Task<IActionResult> EditServer(int id, EditServerViewModel vm)
|
|
{
|
|
if (ModelState.IsValid)
|
|
{
|
|
var server = await _context.Servers.FindAsync(id);
|
|
if (server == null) return NotFound();
|
|
|
|
server.Name = vm.Name;
|
|
server.IPAddress = vm.IPAddress;
|
|
server.Type = vm.Type;
|
|
|
|
await _context.SaveChangesAsync();
|
|
return RedirectToAction(nameof(Overview));
|
|
}
|
|
|
|
return View(vm);
|
|
}
|
|
|
|
public async Task<IActionResult> ServerCardsPartial()
|
|
{
|
|
var servers = _context.Servers.ToList();
|
|
|
|
foreach (var server in servers)
|
|
{
|
|
server.IsOnline = (DateTime.UtcNow - server.LastSeen).TotalSeconds <= 120;
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
|
|
return PartialView("_ServerCard", servers); // korrekt
|
|
}
|
|
|
|
|
|
}
|