<?php
declare(strict_types=1);

namespace Itdatex\Ausgangsrechnung;

if ( ! defined( 'ABSPATH' ) ) { exit; }

use Itdatex\Ausgangsrechnung\Admin\Menu;
use Itdatex\Ausgangsrechnung\Cli\IssueCommand;

final class Plugin
{
    public const CAPABILITY  = 'reing_manage_invoices';
    public const TEXT_DOMAIN = 'itdatex-e-invoice-output';

    private static ?self $instance = null;

    public static function instance(): self
    {
        return self::$instance ??= new self();
    }

    private function __construct() {}

    public function boot(): void
    {
        // WP-CLI: Befehl registrieren, sobald CLI verfuegbar.
        if ( defined( 'WP_CLI' ) && \WP_CLI ) {
            \WP_CLI::add_command( 'ausrg', IssueCommand::class );
        }

        if ( is_admin() ) {
            ( new Menu() )->register();
            ( new \Itdatex\Ausgangsrechnung\Admin\Pages\CreatePage() )->register();
            ( new \Itdatex\Ausgangsrechnung\Admin\Pages\InvoiceDetail() )->register();
            add_action( 'admin_notices', [ $this, 'maybe_schema_notice' ] );
        }

        ( new DownloadHandler() )->register();
        ( new PaymentHandler() )->register();
        ( new StornoHandler() )->register();
    }

    public function maybe_schema_notice(): void
    {
        $schemaReady    = (int) get_option( 'ausrg_schema_ready',     1 );
        $uploadDirReady = (int) get_option( 'ausrg_upload_dir_ready', 1 );

        if ( $schemaReady === 0 ) {
            echo '<div class="notice notice-error"><p><strong>'
                . esc_html__( 'Ausgangsrechnung:', 'itdatex-e-invoice-output' )
                . '</strong> '
                . esc_html__(
                    'Das Datenbank-Schema (Tabellen wp_reing_*) konnte nicht angelegt werden. Bitte das Plugin im Dashboard deaktivieren und erneut aktivieren — bleibt der Fehler bestehen, fehlen vermutlich CREATE-TABLE-Rechte auf der Datenbank.',
                    'itdatex-e-invoice-output'
                )
                . '</p></div>';
        }

        if ( $uploadDirReady === 0 ) {
            echo '<div class="notice notice-error"><p><strong>'
                . esc_html__( 'Ausgangsrechnung:', 'itdatex-e-invoice-output' )
                . '</strong> '
                . esc_html__(
                    'Das Upload-Verzeichnis fuer Rechnungsdateien konnte nicht angelegt werden. Bitte pruefen, dass wp-content/uploads/ schreibbar ist, und das Plugin erneut aktivieren.',
                    'itdatex-e-invoice-output'
                )
                . '</p></div>';
        }
    }
}
