@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!");
}
}