<?php

declare(strict_types=1);

namespace Kylin\Report;

use Illuminate\Support\ServiceProvider;
use Kylin\Report\Services\ApprovalMaterialService;
use Kylin\Report\Services\TestAccountService;

/**
 * 软著申报报告服务提供者
 *
 * 提供软件著作权申报材料生成服务，包括：
 *  - 审批材料生成（ApprovalMaterialService）
 *  - 测试账号管理（TestAccountService）
 *
 * 法律合规：
 *  - 《关于防止未成年人沉迷网络游戏的通知》（国新出发〔2019〕34号）
 *  - 《网络游戏管理暂行办法》
 */
class ReportServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        $this->mergeConfigFrom(__DIR__ . '/../config/kylin-report.php', 'kylin-report');
        $this->app->singleton(ApprovalMaterialService::class);
        $this->app->singleton(TestAccountService::class);
    }

    public function boot(): void
    {
        if ($this->app->runningInConsole()) {
            $this->publishes([
                __DIR__ . '/../config/kylin-report.php' => config_path('kylin-report.php'),
            ], 'kylin-report-config');

            $this->publishes([
                __DIR__ . '/../database/migrations/' => database_path('migrations'),
            ], 'kylin-report-migrations');
        }

        $this->loadMigrationsFrom(__DIR__ . '/../database/migrations');
        $this->loadRoutesFrom(__DIR__ . '/../routes/api.php');
    }
}
