import { PermissionCheckerService } from '@abp/auth/permission-checker.service'; import { AppSessionService } from '@shared/common/session/app-session.service'; import { FeatureCheckerService } from '@abp/features/feature-checker.service'; import { Injectable } from '@angular/core'; import { AppMenu } from './app-menu'; import { AppMenuItem } from './app-menu-item'; @Injectable() export class AppNavigationService { constructor( private _permissionCheckerService: PermissionCheckerService, private _appSessionService: AppSessionService, private _featureCheckerService: FeatureCheckerService, ) { } getMenu(): AppMenu { return new AppMenu('MainMenu', 'MainMenu', [ // Controller new AppMenuItem('Dispatch', 'Pages.Shipping.Controller', 'fas fa-desktop', '/app/sprintship/dispatch', undefined, undefined, undefined, () => { return !this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); }), new AppMenuItem('Dispatch', 'Pages.Shipping.Controller', 'fas fa-desktop', '', [ new AppMenuItem('Regular', 'Pages.Shipping.Controller', 'fas fa-desktop', '/app/sprintship/dispatch'), new AppMenuItem('Line Haul', 'Pages.Shipping.Controller', 'fas fa-truck-moving', '/app/sprintship/dispatch-linehaul', undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.Linehaul'); }), // new AppMenuItem('Line Haul', 'Pages.Shipping.Controller', 'fas fa-truck-moving', '/app/sprintship/dispatch', undefined, undefined, { // isLinehaul: true // }, ()=> { // return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); // }), ], undefined, undefined, ()=> { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); }), new AppMenuItem('WillCall', 'Pages.Shipping.WillCall', 'fa fa-phone', '/app/sprintship/will-call', undefined, undefined, undefined, ()=> { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.WillCall'); }), //new AppMenuItem('Dashboard', 'Pages.Tenant.Dashboard', 'fas fa-chart-line', '/app/main/dashboard'), new AppMenuItem('Dashboard', 'Pages.Tenant.Dashboard', 'fas fa-chart-line', '/app/main/dashboard', undefined, undefined, undefined, ()=> { return this._featureCheckerService.isEnabled('App.LabDashboard'); }), new AppMenuItem('Statistics', '', 'fas fa-chart-bar', '/app/sprintship/statistics', undefined, undefined, undefined, ()=> { return this._featureCheckerService.isEnabled('App.Statistics'); }), // Controller new AppMenuItem('Locator', 'Pages.Shipping.Locator', 'fa fa-location-arrow', '/app/sprintship/locator'), new AppMenuItem('Clinics', '', 'fa fa-clinic-medical', '', [ new AppMenuItem('Clinics', 'Pages.Clinics', 'flaticon-business', '/app/main/laboratory/clinics', undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); }), //new AppMenuItem('Schedules', 'Pages.RouteSchedules', 'flaticon-globe', '/app/main/laboratory/routeSchedules', undefined, undefined, undefined, () => { //return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicScheduleManagement'); //}), //new AppMenuItem('Schedule Details', 'Pages.RouteScheduleDetails', 'flaticon-time-2', '/app/main/laboratory/routeScheduleDetails', undefined, undefined, undefined, () => { //return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicScheduleManagement'); //}), //new AppMenuItem('Line Haul Routes', 'Pages.RouteHandOffDefinitions', 'flaticon-presentation', '/app/main/laboratory/line-haul-route'), // new AppMenuItem('Route Types', 'Pages.RouteTypes', 'flaticon-location', '/app/main/laboratory/routeTypes'), // new AppMenuItem('Pickup Route Analyzer', 'Pages.Shipping.RoutesTemplate', 'fas fa-calendar', '/app/sprintship/route-analyzer-pickup'), // new AppMenuItem('Delivery Route Analyzer', 'Pages.Shipping.RoutesTemplate', 'far fa-calendar', '/app/sprintship/route-analyzer-delivery'), ], undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture'); }), //Locations new AppMenuItem('Locations', 'Pages.Administration.Locations', 'fa fa-map-marked', '', [ new AppMenuItem('Location', 'Pages.Administration.Locations', 'fas fa-map-marker-alt', '/app/sprintship/locations'), new AppMenuItem('Timezones', 'Pages.Administration.TimeZones', 'fas fa-globe', '/app/sprintship/timezones'), // new AppMenuItem('Proximities', 'Pages.Administration.Proximities', 'fas fa-street-view', '/app/sprintship/proximity'), new AppMenuItem('UserLocations', 'Pages.Administration.UserLocations', 'fas fa-user-check', '/app/sprintship/user-location'), new AppMenuItem('VehicleLocations', 'Pages.Administration.VehicleLocations', 'fas fa-layer-group', '/app/sprintship/locationvehicle'), new AppMenuItem('Location Calendar', 'Pages.Holidays', 'fas fa-calendar', '/app/sprintship/locations/holidays'), ]), //Routes new AppMenuItem('Routes', 'Pages.Shipping.PagesRoutes', 'fa fa-route', '', [ new AppMenuItem('Routes', 'Pages.Shipping.PagesRoutes', 'fa fa-map-signs', '/app/sprintship/routes'), new AppMenuItem('Route Definitions', 'Pages.RouteDefinitions', 'flaticon-presentation', '/app/sprintship/route-definition'), new AppMenuItem('Stops', 'Pages.RouteStops', 'flaticon-home-2', '/app/sprintship/routeStops'), new AppMenuItem('Route Types', 'Pages.RouteTypes', 'flaticon-location', '/app/main/laboratory/routeTypes'), //route analyzer sub menu new AppMenuItem('Route Analyzer', 'Pages.Shipping.RoutesTemplate', 'fas fa-calendar-plus', '', [ new AppMenuItem('Pickup', 'Pages.Shipping.RoutesTemplate', 'fas fa-calendar', '/app/sprintship/route-analyzer-pickup'), new AppMenuItem('Delivery', 'Pages.Shipping.RoutesTemplate', 'far fa-calendar', '/app/sprintship/route-analyzer-delivery'), ],undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); }), new AppMenuItem('Line Haul', 'Pages.RouteHandOffDefinitions', 'flaticon-presentation', '/app/main/laboratory/line-haul-route', undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); }), // new AppMenuItem('Templates', 'Pages.Shipping.RoutesTemplate', 'fas fa-clone', '/app/sprintship/routes-template'), new AppMenuItem('Template Types', 'Pages.Shipping.RoutesTemplate', 'fas fa-newspaper', '/app/sprintship/routes-template-types'), new AppMenuItem('Route Optimizer', '', 'fas fa-random', '/app/sprintship/route-optimizer',undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.GoogleDirectionApi.GoogleDirectionApi'); }), ]), //Fleets new AppMenuItem('Fleets', 'Pages.Shipping.Fleets', 'fa fa-truck-moving', '', [ new AppMenuItem('Fleets', 'Pages.Shipping.Fleets', 'fas fa-shipping-fast', '/app/sprintship/fleets'), new AppMenuItem('Vehicles', 'Pages.Shipping.Fleets', 'fas fa-truck', '', [ new AppMenuItem('Vehicles', 'Pages.Shipping.Vehicles', 'fas fa-truck', '/app/sprintship/vehicles'), new AppMenuItem('VehicleChecklists', 'Pages.VehicleChecklists', 'fas fa-check-double', '/app/sprintship/vehicleChecklists/vehicleChecklists'), ]), new AppMenuItem('Drivers', 'Pages.Administration.Drivers', 'fas fa-user-friends', '', [ new AppMenuItem('Drivers', 'Pages.Administration.Drivers', 'fas fa-user-friends', '/app/sprintship/drivers'), new AppMenuItem('Proximities', 'Pages.Administration.Proximities', 'fas fa-street-view', '/app/sprintship/driver-proximity'), new AppMenuItem('Incidents', 'Pages.Administration.Employees.DriverIncidents', 'fas fa-exclamation-circle', '/app/sprintship/driver-incidents'), new AppMenuItem('Rates', 'Pages.Administration.Rates', 'fas fa-file-invoice-dollar', '/app/sprintship/rates',undefined, undefined, undefined, () => { return !this._featureCheckerService.isEnabled('App.RouteManagementFeauture.ClinicManagement'); }), ]), new AppMenuItem('Vendors', 'Pages.Administration.Vendors', 'fas fa-users', '/app/sprintship/vendors'), ]), //Employees new AppMenuItem('Employees', 'Pages.Administration.Employees', 'fas fa-user-friends', '', [ new AppMenuItem('Employees', 'Pages.Administration.Employees', 'fas fa-user-friends', '/app/sprintship/employees'), new AppMenuItem('Timesheets', 'Pages.Administration.Employees.TimeSheet', 'fas fa-user-clock', '/app/sprintship/employees/timesheets'), new AppMenuItem('Reviews', 'Pages.Administration.Employees.EmployeeReview', 'fas fa-star', '/app/sprintship/employees/reviews'), new AppMenuItem('Incidents', 'Pages.Administration.Employees', 'fas fa-exclamation-circle', '/app/sprintship/employee-incidents'), // new AppMenuItem('Incidents', 'Pages.Administration.Employees.Incidents', 'fas fa-exclamation-circle', '/app/sprintship/incidents') ]), //Orders new AppMenuItem('Orders', 'Pages.Shipping.PagesOrders', 'fas fa-boxes', '', [ new AppMenuItem('Orders', 'Pages.Orders', 'fas fa-box', '/app/sprintship/order'), new AppMenuItem('Tracking', 'Pages.Tracking', 'fas fa-truck-pickup', '/app/sprintship/tracking-page'), new AppMenuItem('Tags', 'Pages.Orders.Tags', 'fas fa-tags', '/app/sprintship/tags'), new AppMenuItem('Packages', 'Pages.Orders.Package', 'fas fa-th-large', '/app/sprintship/package-order'), new AppMenuItem('Statuses', 'Pages.OrderStatuses', 'fas fa-tasks', '/app/sprintship/status-order'), new AppMenuItem('Incidents', 'Pages.OrderIncidents', 'fas fa-exclamation-circle', '/app/sprintship/incidents'), new AppMenuItem('Order Sources', 'Pages.OrderSources', 'fas fa-network-wired', '/app/sprintship/order-sources') ]), new AppMenuItem('Dashboard', 'Pages.Customer.Dashboard', 'fas fa-desktop', '/app/sprintship/customer-dashboard'), new AppMenuItem('Orders', 'Pages.Customer.Order', 'fas fa-boxes', '/app/sprintship/customer-order'), new AppMenuItem('Track', 'Pages.Customer.Track', 'fas fa-map-marker-alt', '/app/sprintship/customer-track'), new AppMenuItem('Profile', 'Pages.Customer.Profile', 'fas fa-user-circle', '/app/sprintship/customer-profile'), //Reports // new AppMenuItem('Reports', 'Pages.Shipping.PagesReports', 'fas fa-boxes', '', [ new AppMenuItem('Reports', 'Pages.Shipping.PagesReports', 'fas fa-chart-pie', '/app/main/report'), // new AppMenuItem('Report Schedules', '', 'fas fa-calendar-week', '/app/main/reportSchedule'), // Pages_Reports_ReportSchedules // ]), //Dashboards //new AppMenuItem('Dashboards', 'Pages.Tenant.Dashboard', 'fas fa-chart-line', '/app/main/grid-dashboard'), //new AppMenuItem('Dashboards', 'Pages.Tenant.Dashboard', 'fas fa-chart-line', '/app/main/dashboard'), /*new AppMenuItem('Reports', 'Pages.Shipping.PagesReports', 'fas fa-chart-pie', '', [ new AppMenuItem('Packages', 'Pages.Report.Packages.By.ZipCode', 'fas fa-th-large', '/app/sprintship/report-packages-per-postal-code', undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.Report.ReportPackagesByZipCode'); }), new AppMenuItem('Mileage Reimbursement', 'Pages.Report.Mileage.Reimbursement', 'fas fa-cash-register', '/app/sprintship/mileage-reimbursement', undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.Report.ReportMileageReimbursement'); }), //new AppMenuItem('SLA', 'Pages.Orders.Package', 'fas fa-th-large', '/app/sprintship/sla'), new AppMenuItem('Report Designer', 'Pages.Report.Designer', 'fas fa-chart-pie', '/app/main/report-designer'), ]),*/ //Notifications // new AppMenuItem('Notifications', '', 'flaticon-alert', '', // [ // ]), //Schedules // new AppMenuItem('Schedules', '', 'flaticon-clock-2', '', // [ // ]), //Incidents // new AppMenuItem('Incidents', 'Pages.Administration.Employees.Incidents', 'flaticon-info', '/app/sprintship/incidents'), //Notifications new AppMenuItem('Notifications', 'Pages.Orders.OrderNotifications', 'fas fa-bell', '', [ new AppMenuItem('Notifications', 'Pages.Orders.OrderNotifications', 'fas fa-bell', '/app/sprintship/order-notifications'), new AppMenuItem('SMS Accounts', 'Pages.Administration.SmsAccounts', 'fas fa-users-cog', '/app/sprintship/sms'), new AppMenuItem('Templates', 'Pages.Orders.OrderNotificationTemplates', 'fas fa-mail-bulk', '', [ new AppMenuItem('SMS Templates', 'Pages.Administration.SmsTemplates', 'fas fa-sms', '/app/sprintship/sms-templates'), new AppMenuItem('Email Templates', 'Pages.Orders.OrderNotificationTemplates', 'fas fa-mail-bulk', '/app/sprintship/order-notification-templates'), ]), ]), //System new AppMenuItem('System', 'Pages.Administration.System.Nav', 'fas fa-cog', '', [ new AppMenuItem('OrderTypes', 'Pages.OrderTypes', 'fas fa-list', '/app/sprintship/type-order'), new AppMenuItem('Containers', '', 'fas fa-box', '/app/sprintship/containers',undefined, undefined, undefined, () => { return this._featureCheckerService.isEnabled('App.RouteManagementFeauture'); }), new AppMenuItem('OrderStatusType', 'Pages.Orders.OrderStatusTypes', 'fas fa-tasks', '/app/sprintship/status-type'), new AppMenuItem('Order Status Type Workflow', 'Pages.Orders.OrderStatusTypes', 'fas fa-code-branch', '/app/sprintship/status-workflow'), new AppMenuItem('Package Types', 'Pages.Shipping.Package.PackageType', 'fas fa-shapes', '/app/sprintship/package-types/'), new AppMenuItem('Package Options', 'Pages.Orders.PackageOptions', 'fas fa-dice-d6', '/app/sprintship/package-options'), new AppMenuItem('TagType', 'Pages.Orders.TagTypes', 'fas fa-tags', '/app/sprintship/tag-type'), new AppMenuItem('VehicleTypes', 'Pages.VehicleTypes', 'fa fa-truck-moving', '/app/sprintship/vehicle-types'), new AppMenuItem('UserOrderTypes', 'Pages.Administration.UserOrderTypes', 'fa fa-chalkboard-teacher', '/app/sprintship/user-order-types'), new AppMenuItem('Contacts', 'Pages.Shipping.Contacts', 'fas fa-address-book', '', [ new AppMenuItem('Contacts', 'Pages.Shipping.Contacts', 'fas fa-id-card', '/app/sprintship/contacts'), new AppMenuItem('AddressTypes', 'Pages.Shipping.Contacts.AddressTypes', 'fas fa-address-card', '/app/sprintship/address-types'), //new AppMenuItem('Addresses', 'Pages.Shipping.Contacts.Address', 'fas fa-book', '/app/sprintship/addresses'), //new AppMenuItem('Postal Codes', 'Pages.Shipping.Contacts.PostalCodes', 'fas fa-sign', '/app/sprintship/postal-codes'), ]), new AppMenuItem('IncidentSources', 'Pages.Administration.IncidentSources', 'flaticon-more', '/app/sprintship/incident/incident-sources'), new AppMenuItem('IncidentType', 'Pages.IncidentTypes', 'fa fa-exclamation-circle', '/app/sprintship/incident-types'), new AppMenuItem('IncidentStatus', 'Pages.IncidentStatus', 'fa fa-exclamation-circle', '/app/sprintship/incident-status'), new AppMenuItem('EmployeeIncidentTypes', 'Pages.EmployeeIncidentTypes', 'fa fa-exclamation-circle', '/app/sprintship/employee-incident-types'), new AppMenuItem('DriverIncidentTypes', 'Pages.DriverIncidentTypes', 'fa fa-exclamation-circle', '/app/sprintship/drivers/driver-incident-types'), new AppMenuItem('Mappings', 'Pages.ImportMappings', 'fas fa-map-signs', '', [ new AppMenuItem('ImportMappings', 'Pages.ImportMappings', 'fas fa-map-signs', '/app/main/import-mapping'), new AppMenuItem('ExportMappings', 'Pages.ExportMappings', 'fas fa-map-signs', '/app/main/export-mapping'), ]), new AppMenuItem('Import Logs', 'Pages.Administration.ImportLogs', 'fas fa-list-ul', '/app/main/importLogs'), new AppMenuItem('Route Generation', 'Pages.RouteGeneration', 'flaticon-more', '', [ //new AppMenuItem('Dashboard', 'Pages.RouteGeneratorDashboard', 'flaticon-more', '/app/sprintship/route-generator-dashboard'), new AppMenuItem('Logs', 'Pages.RouteGeneratorLogs', 'flaticon-more', '/app/sprintship/routeGeneratorLogs'), new AppMenuItem('Settings', 'Pages.RouteGenerationSettings', 'fas fa-cog', '/app/sprintship/route-generation-settings') ]), new AppMenuItem('Preferences', 'Pages.Preferences', 'fas fa-list-ul', '/app/main/preferences/preferences'), ]), new AppMenuItem('Tenants', 'Pages.Tenants', 'fas fa-list', '/app/admin/tenants'), new AppMenuItem('Editions', 'Pages.Editions', 'fas fa-user-shield', '/app/admin/editions'), // new AppMenuItem('Versions', 'Pages.Versions', 'flaticon-more', '/app/main/versions/versions'), new AppMenuItem('Administration', '', 'fa fa-sliders-h', '', [ new AppMenuItem('Background Processes', 'Pages.BackgroundProcesses', 'fas fa-cog', '/app/sprintship/backgroundProcesses/backgroundProcesses'), new AppMenuItem('RouteGeneratorDashboard', 'Pages.Administration.RouteGeneratorDashboard', 'flaticon-more', '/app/sprintship/route-generator-dashboard'), new AppMenuItem('DataRetentions', 'Pages.Administration.DataRetentions', 'fas fa-database', '/app/sprintship/data-retention'), new AppMenuItem('OrganizationUnits', 'Pages.Administration.OrganizationUnits', 'fas fa-sitemap', '/app/admin/organization-units'), new AppMenuItem('Roles', 'Pages.Administration.Roles', 'fas fa-suitcase', '/app/admin/roles'), new AppMenuItem('Users', 'Pages.Administration.Users', 'fas fa-user-cog', '/app/admin/users'), //new AppMenuItem('OrderStatusMappings', 'Pages.Administration.OrderStatusMappings', 'flaticon-more', '/app/admin/orderStatusMappings'), new AppMenuItem('WebhookSubscriptions', 'Pages.Administration.WebhookSubscription', 'flaticon2-shelter', '/app/admin/webhook-subscriptions'), new AppMenuItem('Languages', 'Pages.Administration.Languages', 'fas fa-book-open', '/app/admin/languages'), new AppMenuItem('AuditLogs', 'Pages.Administration.AuditLogs', 'fas fa-list-ul', '/app/admin/auditLogs'), new AppMenuItem('Maintenance', 'Pages.Administration.Host.Maintenance', 'fas fa-hockey-puck', '/app/admin/maintenance'), new AppMenuItem('Subscription', 'Pages.Administration.Tenant.SubscriptionManagement', 'fa fa-file-contract', '/app/admin/subscription-management'), new AppMenuItem('VisualSettings', 'Pages.Administration.UiCustomization', 'fas fa-palette', '/app/admin/ui-customization'), new AppMenuItem('Settings', 'Pages.Administration.Host.Settings', 'fas fa-cogs', '/app/admin/hostSettings'), new AppMenuItem('Settings', 'Pages.Administration.Tenant.Settings', 'fas fa-cogs', '/app/admin/tenantSettings'), new AppMenuItem('SecondaryConnections', 'Pages.Administration.Host.SecondaryConnections', 'fas fa-network-wired', '/app/admin/secondaryConnections'), ]), // new AppMenuItem('Help Desk', 'HelpDesk', 'fas fa-headset', '/app/sprintship/support-ticket'), new AppMenuItem('Help Desk', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-headset', '',[ new AppMenuItem('Tickets', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-ticket-alt', '/app/sprintship/support-ticket'), new AppMenuItem('Category Types', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-clone', '/app/sprintship/supportCategoryTypes'), new AppMenuItem('Documentation', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-file', '/app/sprintship/support-documentation'), new AppMenuItem('On-Boarding Guide', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-file', '/app/sprintship/support-onBoardingGuide'), new AppMenuItem('Training Video', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-file', '/app/sprintship/support-trainingVideo'), new AppMenuItem('FAQ', 'Pages.SupportTicket.Nav.Tenant', 'fas fa-file', '/app/sprintship/support-FAQUrl') ]), new AppMenuItem('DemoUiComponents', 'Pages.DemoUiComponents', 'fas fa-draw-polygon', '/app/admin/demo-ui-components'), new AppMenuItem('Help Desk', 'Pages.SupportTicket.Nav.Host', 'fas fa-headset', '', [ new AppMenuItem('Tickets', '', 'fas fa-ticket-alt', '/app/sprintship/support-ticket'), new AppMenuItem('Types', '', 'fas fa-book', '/app/sprintship/support-ticket-types'), new AppMenuItem('Status', '', 'far fa-sticky-note', '/app/sprintship/support-ticket-status'), new AppMenuItem('Category Types', '', 'fas fa-clone', '/app/sprintship/supportCategoryTypes'), // Pages.SupportCategoryTypes new AppMenuItem('Settings', '', 'fas fa-cog', '/app/sprintship/support-ticket-setting'), new AppMenuItem('Notifications', '', 'fas fa-bell', '/app/sprintship/support-ticket-notification'), new AppMenuItem('Versions', 'Pages.Versions', 'fas fa-cogs', '/app/sprintship/versions'), ]), ]); } checkChildMenuItemPermission(menuItem): boolean { for (let i = 0; i < menuItem.items.length; i++) { let subMenuItem = menuItem.items[i]; if (subMenuItem.permissionName === '' || subMenuItem.permissionName === null || subMenuItem.permissionName && this._permissionCheckerService.isGranted(subMenuItem.permissionName)) { return true; } else if (subMenuItem.items && subMenuItem.items.length) { return this.checkChildMenuItemPermission(subMenuItem); } } return false; } showMenuItem(menuItem: AppMenuItem): boolean { if (menuItem.permissionName === 'Pages.Administration.Tenant.SubscriptionManagement' && this._appSessionService.tenant && !this._appSessionService.tenant.edition) { return false; } if (menuItem.permissionName === 'HelpDesk' && this._appSessionService.tenant != undefined) { return true; } let hideMenuItem = false; if (menuItem.requiresAuthentication && !this._appSessionService.user) { hideMenuItem = true; } if (menuItem.permissionName && !this._permissionCheckerService.isGranted(menuItem.permissionName)) { hideMenuItem = true; } if (this._appSessionService.tenant || !abp.multiTenancy.ignoreFeatureCheckForHostUsers) { if (menuItem.hasFeatureDependency() && !menuItem.featureDependencySatisfied()) { hideMenuItem = true; } } if (!hideMenuItem && menuItem.items && menuItem.items.length) { return this.checkChildMenuItemPermission(menuItem); } return !hideMenuItem; } /** * Returns all menu items recursively */ getAllMenuItems(): AppMenuItem[] { let menu = this.getMenu(); let allMenuItems: AppMenuItem[] = []; menu.items.forEach(menuItem => { allMenuItems = allMenuItems.concat(this.getAllMenuItemsRecursive(menuItem)); }); return allMenuItems; } private getAllMenuItemsRecursive(menuItem: AppMenuItem): AppMenuItem[] { if (!menuItem.items) { return [menuItem]; } let menuItems = [menuItem]; menuItem.items.forEach(subMenu => { menuItems = menuItems.concat(this.getAllMenuItemsRecursive(subMenu)); }); return menuItems; } }