diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs index 02fb1a5..6bf1ed7 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs @@ -143,4 +143,24 @@ public class NodeAllocationsController : Controller return Task.CompletedTask; } + + [HttpGet("{nodeId:int}/allocations/free")] + [RequirePermission("admin.servers.nodes.get")] + public async Task> GetFree([FromRoute] int nodeId, [FromQuery] int page, [FromQuery] int pageSize) + { + var node = NodeRepository + .Get() + .FirstOrDefault(x => x.Id == nodeId); + + if (node == null) + throw new HttpApiException("A node with this id could not be found", 404); + + Node = node; + + CrudHelper.QueryModifier = variables => variables + .Where(x => x.Node.Id == node.Id) + .Where(x => x.Server == null); + + return await CrudHelper.Get(page, pageSize); + } } \ No newline at end of file diff --git a/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AdvancedServerCreate.razor b/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AdvancedServerCreate.razor index 7e76db5..a6ba016 100644 --- a/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AdvancedServerCreate.razor +++ b/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AdvancedServerCreate.razor @@ -1,11 +1,28 @@ @using MoonlightServers.Shared.Http.Requests.Admin.Servers -@using MoonlightServers.Frontend.UI.Components.Forms +@using MoonCore.Blazor.Tailwind.Inputs
- +
- + + + + + + + +
diff --git a/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AllocationsServerCrete.razor b/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AllocationsServerCrete.razor new file mode 100644 index 0000000..a0a5889 --- /dev/null +++ b/MoonlightServers.Frontend/UI/Components/Servers/CreateServerPartials/AllocationsServerCrete.razor @@ -0,0 +1,40 @@ +@using MoonlightServers.Shared.Http.Requests.Admin.Servers +@using MoonCore.Blazor.Tailwind.Inputs +@using MoonCore.Helpers +@using MoonCore.Models +@using MoonlightServers.Shared.Http.Responses.Admin.NodeAllocations + +@inject HttpApiClient ApiClient + +
+
+ +
+ +
+
+
+ +@code +{ + [Parameter] public CreateServerRequest Request { get; set; } + + private async Task Loader() + { + // Handle unselected node + if (Request.NodeId <= 0) + return []; + + var data = await ApiClient.GetJson>( + $"api/admin/servers/nodes/{Request.NodeId}/allocations/free?page=0&pageSize=50" + ); + + return data.Items; + } +} \ No newline at end of file diff --git a/MoonlightServers.Frontend/UI/Views/Admin/All/Create.razor b/MoonlightServers.Frontend/UI/Views/Admin/All/Create.razor index 6a51c91..d597594 100644 --- a/MoonlightServers.Frontend/UI/Views/Admin/All/Create.razor +++ b/MoonlightServers.Frontend/UI/Views/Admin/All/Create.razor @@ -28,6 +28,9 @@ + + + diff --git a/MoonlightServers.Shared/Http/Responses/Admin/Nodes/NodeDetailResponse.cs b/MoonlightServers.Shared/Http/Responses/Admin/Nodes/NodeDetailResponse.cs index 3ca8790..c5de901 100644 --- a/MoonlightServers.Shared/Http/Responses/Admin/Nodes/NodeDetailResponse.cs +++ b/MoonlightServers.Shared/Http/Responses/Admin/Nodes/NodeDetailResponse.cs @@ -1,5 +1,3 @@ -using MoonlightServers.Shared.Http.Responses.Admin.NodeAllocations; - namespace MoonlightServers.Shared.Http.Responses.Admin.Nodes; public class NodeDetailResponse