<?php

/**
 * Helpdesk module manifest.
 *
 * Internal employee lookup for BC debtors, contacts and tickets
 * via OData V4. Read-only V1 with Basic Auth (OAuth2 optional).
 */
return [
    'id' => 'helpdesk',
    'version' => '1.0.0',
    'enabled_by_default' => false,
    'load_order' => 50,
    'requires' => [],

    'routes' => [
        ['path' => 'helpdesk/dashboard', 'target' => 'helpdesk/dashboard'],
        ['path' => 'helpdesk/search-data', 'target' => 'helpdesk/search-data'],
        ['path' => 'helpdesk/domains', 'target' => 'helpdesk/domains'],
        ['path' => 'helpdesk/domains-data', 'target' => 'helpdesk/domains-data'],
        ['path' => 'helpdesk/domains/security-level-data', 'target' => 'helpdesk/domains/security-level-data'],
        ['path' => 'helpdesk/domains/export', 'target' => 'helpdesk/domains/export'],
        ['path' => 'helpdesk/domain/{id}', 'target' => 'helpdesk/domain'],
        ['path' => 'helpdesk/domain-detail-data', 'target' => 'helpdesk/domain-detail-data'],
        ['path' => 'helpdesk/debitor/{id}', 'target' => 'helpdesk/debitor'],
        ['path' => 'helpdesk/ticket/{id}', 'target' => 'helpdesk/ticket'],
        ['path' => 'helpdesk/ticket-fragment/{id}', 'target' => 'helpdesk/ticket-fragment'],
        ['path' => 'helpdesk/settings', 'target' => 'helpdesk/settings'],
        ['path' => 'helpdesk/settings/test-connection-data', 'target' => 'helpdesk/settings/test-connection-data'],
        ['path' => 'helpdesk/settings/diagnose-data', 'target' => 'helpdesk/settings/diagnose-data'],
        ['path' => 'helpdesk/debitor-support-dashboard-data', 'target' => 'helpdesk/debitor-support-dashboard-data'],
        ['path' => 'helpdesk/debitor-overview-data', 'target' => 'helpdesk/debitor-overview-data'],
        ['path' => 'helpdesk/debitor-summary-data', 'target' => 'helpdesk/debitor-summary-data'],
        ['path' => 'helpdesk/debitor-contacts-data', 'target' => 'helpdesk/debitor-contacts-data'],
        ['path' => 'helpdesk/debitor-tickets-data', 'target' => 'helpdesk/debitor-tickets-data'],
        ['path' => 'helpdesk/debitor-ticket-categories-data', 'target' => 'helpdesk/debitor-ticket-categories-data'],
        ['path' => 'helpdesk/ticket-log-data', 'target' => 'helpdesk/ticket-log-data'],
        ['path' => 'helpdesk/ticket-communication-data', 'target' => 'helpdesk/ticket-communication-data'],
        ['path' => 'helpdesk/ticket-file-data', 'target' => 'helpdesk/ticket-file-data'],
        ['path' => 'helpdesk/debitor-communication-data', 'target' => 'helpdesk/debitor-communication-data'],
        ['path' => 'helpdesk/debitor-sales-dashboard-data', 'target' => 'helpdesk/debitor-sales-dashboard-data'],
        ['path' => 'helpdesk/debitor-meetings-data', 'target' => 'helpdesk/debitor-meetings-data'],
        ['path' => 'helpdesk/debitor-controlling-dashboard-data', 'target' => 'helpdesk/debitor-controlling-dashboard-data'],
        ['path' => 'helpdesk/team', 'target' => 'helpdesk/team'],
        ['path' => 'helpdesk/team-workload-data', 'target' => 'helpdesk/team-workload-data'],
        ['path' => 'helpdesk/risk-radar', 'target' => 'helpdesk/risk-radar'],
        ['path' => 'helpdesk/risk-radar-data', 'target' => 'helpdesk/risk-radar-data'],
        ['path' => 'helpdesk/software-products', 'target' => 'helpdesk/software-products'],
        ['path' => 'helpdesk/software-products-data', 'target' => 'helpdesk/software-products-data'],
        ['path' => 'helpdesk/software-products/edit/{code}', 'target' => 'helpdesk/software-products/edit'],
        ['path' => 'helpdesk/handovers', 'target' => 'helpdesk/handovers'],
        ['path' => 'helpdesk/handovers-data', 'target' => 'helpdesk/handovers-data'],
        ['path' => 'helpdesk/handovers/create', 'target' => 'helpdesk/handovers/create'],
        ['path' => 'helpdesk/handovers/edit/{id}', 'target' => 'helpdesk/handovers/edit'],
        ['path' => 'helpdesk/handovers/bulk/{action}', 'target' => 'helpdesk/handovers/bulk'],
        ['path' => 'helpdesk/handovers/assign/{id}', 'target' => 'helpdesk/handovers/assign'],
        ['path' => 'helpdesk/debitor-lookup-data', 'target' => 'helpdesk/debitor-lookup-data'],
        ['path' => 'helpdesk/handover-domains-data', 'target' => 'helpdesk/handover-domains-data'],
        ['path' => 'helpdesk/updates', 'target' => 'helpdesk/updates'],
        ['path' => 'helpdesk/updates-data', 'target' => 'helpdesk/updates-data'],
        ['path' => 'helpdesk/updates/assign', 'target' => 'helpdesk/updates/assign'],
        ['path' => 'helpdesk/update-domains-data', 'target' => 'helpdesk/update-domains-data'],
    ],
    'public_paths' => [],

    'container_registrars' => [
        \MintyPHP\Module\Helpdesk\HelpdeskContainerRegistrar::class,
    ],

    'ui_slots' => [
        'aside.tab_panel' => [
            [
                'key' => 'helpdesk',
                'label' => 'Helpdesk',
                'icon' => 'bi-headset',
                'icon_fill' => 'bi-headset',
                'href' => '',
                'permission' => 'helpdesk.access',
                'panel_template' => 'templates/aside-helpdesk-panel.phtml',
                'details_storage' => 'aside-helpdesk-sections-v1',
                'details_open_active' => true,
                'order' => 800,
            ],
        ],
        'runtime.component' => [
            [
                'key' => 'helpdesk-detail',
                'script' => 'modules/helpdesk/js/helpdesk-detail.js',
                'export' => 'initHelpdeskDetail',
                'selector' => '[data-app-component="helpdesk-detail"]',
                'config_path' => 'components.helpdesk.detail',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.access',
                'order' => 801,
            ],
            [
                'key' => 'helpdesk-domain-detail',
                'script' => 'modules/helpdesk/js/helpdesk-domain-detail.js',
                'export' => 'initHelpdeskDomainDetail',
                'selector' => '[data-app-component="helpdesk-domain-detail"]',
                'config_path' => 'components.helpdesk.domainDetail',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.access',
                'order' => 802,
            ],
            [
                'key' => 'helpdesk-ticket',
                'script' => 'modules/helpdesk/js/helpdesk-ticket.js',
                'export' => 'initHelpdeskTicket',
                'selector' => '[data-app-component="helpdesk-ticket"]',
                'config_path' => 'components.helpdesk.ticket',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.access',
                'order' => 803,
            ],
            [
                'key' => 'helpdesk-team',
                'script' => 'modules/helpdesk/js/helpdesk-team.js',
                'export' => 'initHelpdeskTeam',
                'selector' => '[data-app-component="helpdesk-team"]',
                'config_path' => 'components.helpdesk.team',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.team-workload.view',
                'order' => 804,
            ],
            [
                'key' => 'helpdesk-risk-radar',
                'script' => 'modules/helpdesk/js/helpdesk-risk-radar.js',
                'export' => 'initHelpdeskRiskRadar',
                'selector' => '[data-app-component="helpdesk-risk-radar"]',
                'config_path' => 'components.helpdesk.riskRadar',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.risk-radar.view',
                'order' => 805,
            ],
            [
                'key' => 'helpdesk-settings',
                'script' => 'modules/helpdesk/js/helpdesk-settings.js',
                'export' => 'initHelpdeskSettings',
                'selector' => '[data-app-component="helpdesk-settings"]',
                'config_path' => 'components.helpdesk.settings',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.settings.manage',
                'order' => 806,
            ],
            [
                'key' => 'helpdesk-handover-domain-select',
                'script' => 'modules/helpdesk/js/handover-domain-select.js',
                'export' => 'initHandoverDomainSelect',
                'selector' => '#wizard-domain-group[data-app-component="helpdesk-handover-domain-select"]',
                'config_path' => 'components.helpdesk.handoverDomainSelect',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.handovers.create',
                'order' => 807,
            ],
            [
                'key' => 'helpdesk-handover-schema-editor',
                'script' => 'modules/helpdesk/js/handover-schema-editor.js',
                'export' => 'initHandoverSchemaEditor',
                'selector' => '#handover-schema-editor[data-app-component="helpdesk-handover-schema-editor"]',
                'config_path' => 'components.helpdesk.handoverSchemaEditor',
                'default_config' => [],
                'phase' => 'default',
                'permission' => 'helpdesk.software-products.manage',
                'order' => 808,
            ],
        ],
    ],

    'authorization_policies' => [
        \MintyPHP\Module\Helpdesk\HelpdeskAuthorizationPolicy::class,
    ],

    'permissions' => [
        [
            'key' => 'helpdesk.access',
            'description' => 'Access helpdesk debtor search and detail views',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.settings.manage',
            'description' => 'Manage helpdesk BC connection settings',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.team-workload.view',
            'description' => 'View helpdesk team workload dashboard',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.risk-radar.view',
            'description' => 'View helpdesk risk radar dashboard',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.software-products.manage',
            'description' => 'Manage helpdesk software products (view and edit product names)',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.handovers.view',
            'description' => 'View helpdesk handover protocols',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.handovers.create',
            'description' => 'Create and edit own helpdesk handover protocols',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.handovers.manage',
            'description' => 'Manage all helpdesk handover protocols (edit any, archive)',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.updates.view',
            'description' => 'View software updates list',
            'active' => true,
            'is_system' => true,
        ],
        [
            'key' => 'helpdesk.updates.manage',
            'description' => 'Assign and manage software updates',
            'active' => true,
            'is_system' => true,
        ],
    ],

    'search_resources' => [],
    'asset_groups' => [
        'helpdesk' => [
            'modules/helpdesk/css/helpdesk.css',
        ],
    ],
    'scheduler_jobs' => [
        [
            'job_key' => 'helpdesk_software_product_sync',
            'handler' => \MintyPHP\Module\Helpdesk\Handler\SoftwareProductSyncJobHandler::class,
            'label' => 'Software product sync',
            'description' => 'Syncs contract types with Create_SaaS_License from Business Central to local database',
            'default_enabled' => 1,
            'default_timezone' => 'Europe/Berlin',
            'default_schedule_type' => 'daily',
            'default_schedule_interval' => 1,
            'default_schedule_time' => '02:00',
            'default_schedule_weekdays_csv' => null,
            'default_catchup_once' => 1,
            'allowed_schedule_types' => ['daily', 'weekly'],
        ],
    ],
    'layout_context_providers' => [
        \MintyPHP\Module\Helpdesk\Providers\HelpdeskLayoutProvider::class,
    ],
    'session_providers' => [],
    'event_listeners' => [],
    'deactivation_handler' => null,
    'migrations_path' => 'migrations',
    'i18n_path' => 'i18n',
];
