@using LANCommander.SDK.Enums @inject DatabaseServiceFactory DatabaseServiceFactory @inject IMessageService MessageService @if (Keys != null) { @switch (context.AllocationMethod) { case KeyAllocationMethod.MacAddress: @context.ClaimedByMacAddress break; case KeyAllocationMethod.UserAccount: @context.ClaimedByUser?.UserName break; } @if (context.IsAllocated()) { }
} @code { [Parameter] public Guid GameId { get; set; } [Parameter] public ICollection Keys { get; set; } [Parameter] public EventCallback> KeysChanged { get; set; } int AllocatedKeys; bool EditModalVisible = false; private StandaloneCodeEditor? Editor; private StandaloneEditorConstructionOptions EditorConstructionOptions(StandaloneCodeEditor editor) { return new StandaloneEditorConstructionOptions { AutomaticLayout = true, Language = "text", Value = String.Join('\n', Keys.Select(k => k.Value)), Theme = "vs-dark", }; } protected override async Task OnInitializedAsync() { if (Keys == null) Keys = new List(); AllocatedKeys = Keys.Count(k => k.IsAllocated()); } public void Edit() { EditModalVisible = true; } private async Task Release(Key key) { using (var keyService = DatabaseServiceFactory.Create()) { key = await keyService.ReleaseAsync(key); } await MessageService.Success("Key was unallocated!"); } private async Task Save() { var value = await Editor.GetValue(); var keys = value.Split("\n").Select(k => k.Trim()).Where(k => !String.IsNullOrWhiteSpace(k)).ToList(); var keysDeleted = Keys.Where(k => !keys.Contains(k.Value)).ToList(); var keysAdded = keys.Where(k => !Keys.Any(gk => gk.Value == k)).ToList(); using (var keyService = DatabaseServiceFactory.Create()) { foreach (var key in keysDeleted) keyService.DeleteAsync(key); foreach (var key in keysAdded) await keyService.AddAsync(new Key() { GameId = GameId, Value = key }); } EditModalVisible = false; MessageService.Success("Keys updated!"); } }