<?php

namespace {Module}\Providers;

use Botble\Base\Facades\DashboardMenu;
use Botble\Base\Supports\ServiceProvider;
use Botble\Base\Traits\LoadAndPublishDataTrait;
use {Module}\Models\{Name};
use Botble\LanguageAdvanced\Supports\LanguageAdvancedManager;

class {Name}ServiceProvider extends ServiceProvider
{
    use LoadAndPublishDataTrait;

    public function boot(): void
    {
        $this
            ->setNamespace('{types}/{-name}')
            ->loadHelpers()
            ->loadAndPublishConfigurations(['permissions'])
            ->loadMigrations()
            ->loadAndPublishTranslations()
            ->loadAndPublishViews()
            ->loadRoutes();

        if (defined('LANGUAGE_ADVANCED_MODULE_SCREEN_NAME')) {
            LanguageAdvancedManager::registerModule({Name}::class, [
                'name',
            ]);
        }

        DashboardMenu::default()->beforeRetrieving(function () {
            DashboardMenu::registerItem([
                'id' => 'cms-{types}-{-name}',
                'priority' => 5,
                'parent_id' => null,
                'name' => '{types}/{-name}::{-name}.name',
                'icon' => 'ti ti-box',
                'url' => route('{-name}.index'),
                'permissions' => ['{-name}.index'],
            ]);
        });
    }
}
