public override IDictionary <string, ContentModifierForm> BuildModifierForm(ApplicationRole datum, DatumModifyOperation operation, Type datumType) { if (!operation.IsCreateOrUpdateOperation()) { return(null); } var f = new RoleDatumModifierForm { Id = datum.Id, Name = datum.Name, Description = datum.Description }; var perms = new List <string>(); var permIds = _permMgr.GetRolesPermissions(new[] { datum.Name }).ToArray(); foreach (var perm in _permMgr.AllPermissions) { foreach (var permId in permIds) { if (perm.Id != permId) { continue; } perms.Add(perm.Id); } } f.Permissions = perms.ToArray(); return(new Dictionary <string, ContentModifierForm> { [FORM_KEY] = f }); }
public override VueComponentDefinition[] GetTableRowVue(ApplicationRole datum, string fieldName) { switch (fieldName) { case nameof(ApplicationRole.Name): return(new VueComponentDefinition[] { new VueHtmlWidget(datum.Name) }); case nameof(ApplicationRole.Description): return(new VueComponentDefinition[] { new VueHtmlWidget(datum.Description) }); case "Permissions": var permHead = new[] { "Category", "Sub Category", "Name", "Description", "Id" }; var permBody = new List <string[]>(); var permIds = _permMgr.GetRolesPermissions(new[] { datum.Name }).ToArray(); foreach (var perm in _permMgr.AllPermissions) { foreach (var permId in permIds) { if (perm.Id != permId) { continue; } permBody.Add(new[] { perm.CategoryName, perm.SubCategoryName, perm.DisplayName, perm.Description, $"<code>{perm.Id}</code>" }); } } var permVue = permBody.Count > 0 ? (VueComponentDefinition) new VueTableWidget(permHead, permBody.OrderBy(x => x[0]).ThenBy(x => x[1])) : new VueHtmlWidget("-n/a-"); return(new [] { permVue }); case nameof(ApplicationRole.CreatedUtc): return(new VueComponentDefinition[] { new VueHtmlWidget(datum.CreatedUtc.ToString(ProtoContent.DATE_FORMAT_FOR_DISPLAY)) }); case nameof(ApplicationRole.UpdatedUtc): return(new VueComponentDefinition[] { new VueHtmlWidget(datum.UpdatedUtc.ToString(ProtoContent.DATE_FORMAT_FOR_DISPLAY)) }); case nameof(ApplicationRole.Id): return(new VueComponentDefinition[] { new VueHtmlWidget(datum.Id) }); } return(null); }