@inject IDbContextFactory dbFactory; @inject ITagService tagService @implements IDialog @code { [Parameter] public TagDefinition? TagDefinition { get; set; } [Parameter] public EventHandler OnTagUpdate { get; set; } public bool Visible { get => visible; set { if(value) Load(); visible = dialog.Visible = value; } } private string Title => TagDefinition is null ? "Create a new tag definition" : "Edit tag definition"; private Dialog dialog; private string? tagName; private string? tagNamespace; private string? tagAlias; private bool nameExists = false; private bool aliasExists = false; private bool visible = false; public void Show() => Visible = true; public void Hide() => Visible = false; public void Show(TagDefinition? toEdit) { TagDefinition = toEdit; Visible = true; } public void Show(string? @namespace) { TagDefinition = null; Visible = true; tagNamespace = @namespace; } private void Load() { tagName = TagDefinition?.Name; tagNamespace = TagDefinition?.Namespace; tagAlias = TagDefinition?.Alias; nameExists = false; aliasExists = false; } private void Submit() { try { if(TagDefinition is null) { tagService.CreateTagDefinition(tagName, tagNamespace, tagAlias); } else { tagService.UpdateTagDefinition(TagDefinition, tagName, tagNamespace, tagAlias); } } catch(ApiModels.TagDuplicateException e) { nameExists = e.NameExists; aliasExists = e.AliasExists; return; } OnTagUpdate.Invoke(this, new EventArgs()); Hide(); } }