using System; using System.Threading.Tasks; using Kurs.Platform.Entities; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; using Volo.Abp.TenantManagement; using static Kurs.Platform.Data.Seeds.SeedConsts; using static Volo.Abp.Identity.IdentityPermissions; namespace Kurs.Platform.Data.Seeds; public class MenuSeeder : IDataSeedContributor, ITransientDependency { private readonly IRepository _repository; public MenuSeeder( IRepository repository) { _repository = repository; } public async Task SeedAsync(DataSeedContext context) { if (await _repository.GetCountAsync() > 0) { return; } #region Home var menuHome = await _repository.InsertAsync(new Menu { Code = AppCodes.Home, DisplayName = AppCodes.Home, Order = 0, IsDisabled = false, ParentCode = null, Icon = "FcHome", Target = null, ElementId = null, CssClass = null, Url = "/" }); #endregion #region Settings await _repository.InsertAsync(new Menu { Code = AppCodes.Setting, DisplayName = AppCodes.Setting, Order = 2, IsDisabled = false, Icon = "FcList", Url = "/settings", RequiredPermissionName = AppCodes.Setting }); #endregion #region Platform await _repository.InsertAsync(new Menu { Code = SeedConsts.Platform, DisplayName = SeedConsts.Platform, Order = 9, IsDisabled = false, Icon = "FcTabletAndroid" }); #endregion //Administrator #region Administration var menuAdministration = await _repository.InsertAsync(new Menu { Code = AppCodes.Administration, DisplayName = AppCodes.Administration, Order = 3, IsDisabled = false, ParentCode = null, Icon = "FcOrganization", Target = null, ElementId = null, CssClass = null }); //Tenant Management await _repository.InsertAsync(new Menu { Code = TenantManagementPermissions.Tenants.Default, DisplayName = TenantManagementPermissions.Tenants.Default, Order = -1, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcDepartment", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Tenants}", RequiredPermissionName = TenantManagementPermissions.Tenants.Default }); //Setting Management var menuSettings = await _repository.InsertAsync(new Menu { Code = AppCodes.Settings.Default, DisplayName = AppCodes.Settings.Default, Order = 0, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcCircuit", Target = null, ElementId = null, CssClass = null }); await _repository.InsertManyAsync([ new Menu //SettingDefinitions Management { Code = AppCodes.Settings.SettingDefinitions, DisplayName = AppCodes.Settings.SettingDefinitions, Order = 1, IsDisabled = false, ParentCode = menuSettings.Code, Icon = "FcSupport", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.SettingDefinition}", RequiredPermissionName = AppCodes.Settings.SettingDefinitions }, new Menu //Global Search Ayarları { Code = AppCodes.Settings.GlobalSearch, DisplayName = AppCodes.Settings.GlobalSearch, Order = 2, IsDisabled = false, ParentCode = menuSettings.Code, Icon = "FcSearch", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.GlobalSearch}", RequiredPermissionName = AppCodes.Settings.GlobalSearch }, ]); //Languages Management var menuLanguages = await _repository.InsertAsync(new Menu { Code = AppCodes.Languages.Default, DisplayName = AppCodes.Languages.Default, Order = 1, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcGlobe", Target = null, ElementId = null, CssClass = null }); await _repository.InsertManyAsync([ new Menu { Code = AppCodes.Languages.Language, DisplayName= AppCodes.Languages.Language, Order = 1, IsDisabled = false, ParentCode = menuLanguages.Code, Icon = "FcGraduationCap", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Language}", RequiredPermissionName= AppCodes.Languages.Language }, new Menu { Code = AppCodes.Languages.LanguageText, DisplayName= AppCodes.Languages.LanguageText, Order = 2, IsDisabled = false, ParentCode = menuLanguages.Code, Icon = "FcMindMap", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.LanguageText}", RequiredPermissionName = AppCodes.Languages.LanguageText }, ]); //Identity Management var menuIdentity = await _repository.InsertAsync(new Menu { Code = AbpIdentity.GroupName, DisplayName = AbpIdentity.GroupName, Order = 2, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcConferenceCall", Target = null, ElementId = null, CssClass = null }); await _repository.InsertManyAsync([ new Menu { Code = AbpIdentity.PermissionGroups.Default, DisplayName= AbpIdentity.PermissionGroups.Default, Order = 0, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcEngineering", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.PermissionGroup}", RequiredPermissionName = AbpIdentity.PermissionGroups.Default }, new Menu { Code = AbpIdentity.Permissions.Default, DisplayName= AbpIdentity.Permissions.Default, Order = 1, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcSupport", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Permission}", RequiredPermissionName = AbpIdentity.Permissions.Default }, new Menu { Code = Roles.Default, DisplayName = Roles.Default, Order = 2, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcFlowChart", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Roles}", RequiredPermissionName = Roles.Default }, new Menu { Code = Users.Default, DisplayName= Users.Default, Order = 3, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcBusinessman", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Users}", RequiredPermissionName = Users.Default }, new Menu { Code = AbpIdentity.OrganizationUnits.Default, DisplayName= AbpIdentity.OrganizationUnits.Default, Order = 4, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcOrganization", Target = null, ElementId = null, CssClass = null, Url = $"/admin/ous", RequiredPermissionName = AbpIdentity.OrganizationUnits.Default }, new Menu { Code = AppCodes.IpRestrictions, DisplayName = AppCodes.IpRestrictions, Order = 5, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcNfcSign", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.IpRestriction}", RequiredPermissionName = AppCodes.IpRestrictions }, new Menu { Code = AppCodes.IdentityPermissions.Users.SecurityLogs, DisplayName = AppCodes.IdentityPermissions.Users.SecurityLogs, Order = 6, IsDisabled = false, ParentCode = menuIdentity.Code, Icon = "FcPrivacy", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.SecurityLog}", RequiredPermissionName = AppCodes.IdentityPermissions.Users.SecurityLogs }, ]); //Menu Management await _repository.InsertAsync(new Menu { Code = AppCodes.Menus, DisplayName = AppCodes.Menus, Order = 3, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcMenu", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Menu}", RequiredPermissionName = AppCodes.Menus }); //Listform Management var menuListFormManagement = await _repository.InsertAsync(new Menu { Code = AppCodes.Listforms.Default, DisplayName = AppCodes.Listforms.Default, Order = 4, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcList", Target = null, ElementId = null, CssClass = null }); await _repository.InsertManyAsync([ new Menu { Code = AppCodes.Listforms.DataSource, DisplayName= AppCodes.Listforms.DataSource, Order = 0, IsDisabled = false, ParentCode = menuListFormManagement.Code, Icon = "FcAcceptDatabase", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.DataSource}", RequiredPermissionName = AppCodes.Listforms.DataSource }, new Menu { Code = AppCodes.Listforms.Wizard, DisplayName= AppCodes.Listforms.Wizard, Order = 1, IsDisabled = false, ParentCode = menuListFormManagement.Code, Icon = "FcFlashAuto", Target = null, ElementId = null, CssClass = null, Url = $"/admin/listform/wizard", RequiredPermissionName = AppCodes.Listforms.Wizard }, new Menu { Code = AppCodes.Listforms.Listform, DisplayName = AppCodes.Listforms.Listform, Order = 2, IsDisabled = false, ParentCode = menuListFormManagement.Code, Icon = "FcDataSheet", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Listform}", RequiredPermissionName = AppCodes.Listforms.Listform }, new Menu { Code = AppCodes.Listforms.Chart, DisplayName= AppCodes.Listforms.Chart, Order = 3, IsDisabled = false, ParentCode = menuListFormManagement.Code, Icon = "FcTodoList", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Chart}", RequiredPermissionName= AppCodes.Listforms.Chart }, ]); //Notification Management var menuNotifications = await _repository.InsertAsync(new Menu { Code = AppCodes.Notifications.Default, DisplayName = AppCodes.Notifications.Default, Order = 5, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcWorkflow", Target = null, ElementId = null, CssClass = null }); await _repository.InsertManyAsync([ new Menu { Code = AppCodes.Notifications.NotificationRules, DisplayName = AppCodes.Notifications.NotificationRules, Order = 1, IsDisabled = false, ParentCode = menuNotifications.Code, Icon = "FcLibrary", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.NotificationRule}", RequiredPermissionName = AppCodes.Notifications.NotificationRules }, new Menu { Code = AppCodes.Notifications.Notification, DisplayName = AppCodes.Notifications.Notification, Order = 2, IsDisabled = false, ParentCode = menuNotifications.Code, Icon = "FcBrokenLink", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.Notification}", RequiredPermissionName = AppCodes.Notifications.Notification }, ]); //BackgroundWorkers Management await _repository.InsertAsync(new Menu { Code = AppCodes.BackgroundWorkers, DisplayName = AppCodes.BackgroundWorkers, Order = 6, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcSettings", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.BackgroundWorker}", RequiredPermissionName = AppCodes.BackgroundWorkers }); //Public Apis Management await _repository.InsertAsync(new Menu { Code = AppCodes.PublicApis, DisplayName = AppCodes.PublicApis, Order = 7, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcMindMap", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.PublicApi}", RequiredPermissionName = AppCodes.PublicApis }); //Audit Logs await _repository.InsertAsync(new Menu { Code = AppCodes.AuditLogs, DisplayName = AppCodes.AuditLogs, Order = 8, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcMultipleInputs", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.AuditLog}", RequiredPermissionName = AppCodes.AuditLogs }); //Entity Changes await _repository.InsertAsync(new Menu { Code = AppCodes.EntityChanges, DisplayName = AppCodes.EntityChanges, Order = 9, IsDisabled = false, ParentCode = menuAdministration.Code, Icon = "FcSurvey", Target = null, ElementId = null, CssClass = null, Url = $"/list/{PlatformConsts.ListFormCodes.EntityChange}", RequiredPermissionName = AppCodes.EntityChanges }); #endregion } }