diff --git a/Moonlight/App/Models/Forms/ServerEditDataModel.cs b/Moonlight/App/Models/Forms/ServerEditDataModel.cs new file mode 100644 index 00000000..22adcbaf --- /dev/null +++ b/Moonlight/App/Models/Forms/ServerEditDataModel.cs @@ -0,0 +1,29 @@ +using System.ComponentModel.DataAnnotations; +using Moonlight.App.Database.Entities; + +namespace Moonlight.App.Models.Forms; + +public class ServerEditDataModel +{ + [Required(ErrorMessage = "You need to enter a name")] + [MaxLength(32, ErrorMessage = "The name cannot be longer that 32 characters")] + public string Name { get; set; } + + [Required(ErrorMessage = "You need to specify a user")] + public User Owner { get; set; } + + [Required(ErrorMessage = "You need to specify the cpu cores")] + public int Cpu { get; set; } + + [Required(ErrorMessage = "You need to specify the memory")] + public long Memory { get; set; } + + [Required(ErrorMessage = "You need to specify the disk")] + public long Disk { get; set; } + + public string OverrideStartup { get; set; } + + public int DockerImageIndex { get; set; } + + public bool IsCleanupException { get; set; } +} \ No newline at end of file diff --git a/Moonlight/Shared/Views/Admin/Servers/Edit.razor b/Moonlight/Shared/Views/Admin/Servers/Edit.razor index 95020ed6..fb06eeec 100644 --- a/Moonlight/Shared/Views/Admin/Servers/Edit.razor +++ b/Moonlight/Shared/Views/Admin/Servers/Edit.razor @@ -4,12 +4,14 @@ @using Moonlight.App.Repositories.Servers @using Moonlight.App.Database.Entities @using Microsoft.EntityFrameworkCore +@using Moonlight.App.Models.Forms @using Moonlight.App.Repositories +@using Mappy.Net @inject SmartTranslateService SmartTranslateService @inject ServerRepository ServerRepository -@inject ServerService ServerService @inject ImageRepository ImageRepository +@inject Repository UserRepository @@ -21,143 +23,152 @@ } else { -
-
- -
- - - - -
- -
- - - - -
- -
- - - - + +
+
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + +
-
-
-
- -
- - - - - - CPU Cores (100% = 1 Core) - -
- -
- - - - - - MB - -
- -
- - - - - - MB - +
+
+ +
+ + + + + + CPU Cores (100% = 1 Core) + +
+ +
+ + + + + + MB + +
+ +
+ + + + + + MB + +
-
-
-
- -
- - - - +
+
+ +
+ + + + +
+ + + +
- - - -
-
-
- @foreach (var vars in Server.Variables.Chunk(4)) - { -
- @foreach (var variable in vars) - { -
-
- -
- -
- -
- +
+ @foreach (var vars in Server.Variables.Chunk(4)) + { +
+ @foreach (var variable in vars) + { +
+
+ +
+ +
+ +
+ +
-
- } -
- } -
-
-
-
- - Cancel - - - + } +
+ } +
+
+
+
+ + Cancel + + +
-
+ } @@ -173,7 +184,11 @@ private List DockerImages; private List Images; - private Task Load(LazyLoader arg) + private User[] Users; + + private ServerEditDataModel Model = new(); + + private async Task Load(LazyLoader lazyLoader) { Server = ServerRepository .Get() @@ -182,25 +197,34 @@ if (Server != null) { + await lazyLoader.SetText("Loading images"); + Images = ImageRepository .Get() .Include(x => x.Variables) .Include(x => x.DockerImages) .ToList(); + await lazyLoader.SetText("Loading docker images"); + DockerImages = Images .First(x => x.Id == Server.Image.Id).DockerImages .ToList(); - } - return Task.CompletedTask; + await lazyLoader.SetText("Loading users"); + + Users = UserRepository.Get().ToArray(); + + Model = Mapper.Map(Server); + } } - private async Task Save() + private async Task OnValidSubmit() { + // Overwrite data using mapper + Server = Mapper.Map(Server, Model); + ServerRepository.Update(Server!); - //await ServerService.Sync(Server!); I dont know if we need this, because wings should resync the data while restarting anyway - await LazyLoader.Reload(); } } \ No newline at end of file