<?php
declare(strict_types=1);

namespace Itdatex\Ausgangsrechnung;

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

use Itdatex\EInvoiceCore\SchemaInstaller;

/**
 * Activation / Deactivation.
 *
 * Standalone-faehig: Tabellen und Upload-Dir werden hier angelegt — falls
 * das Schwester-Plugin "rechnungseingang" bereits installiert ist, ist
 * SchemaInstaller idempotent (dbDelta) und stoert nicht.
 */
final class Installer
{
    public static function activate(): void
    {
        // 1) Capability auf Administrator setzen (idempotent).
        $role = get_role( 'administrator' );
        if ( $role && ! $role->has_cap( Plugin::CAPABILITY ) ) {
            $role->add_cap( Plugin::CAPABILITY );
        }

        // 2) Schema sicherstellen (gemeinsame Tabellen wp_reing_*).
        SchemaInstaller::ensureSchema();

        // 3) Upload-Verzeichnis. Wir teilen uns die Option mit dem Eingangs-
        // Plugin (selber Pfad — die Hash-Kette in wp_reing_files ist
        // tabellengebunden, der Pfad gehoert dazu).
        $uploadDir = SchemaInstaller::ensureUploadDir( 'reing_upload_dir', 'itdatex-e-invoice-' );

        // 4) Markierungen fuer Plugin::maybe_schema_notice(). Wir setzen die
        // Activate-Flag bewusst nicht hart — der Nutzer soll das Plugin
        // selbst bei kaputten Voraussetzungen aktivieren koennen, damit die
        // Admin-Notice greift und Reparatur erklaeren kann.
        update_option(
            'ausrg_schema_ready',
            SchemaInstaller::schemaExists() ? 1 : 0,
            false
        );
        update_option(
            'ausrg_upload_dir_ready',
            ( $uploadDir !== '' && is_dir( $uploadDir ) ) ? 1 : 0,
            false
        );
    }

    public static function deactivate(): void
    {
        // Capability nur entfernen, wenn das Schwester-Plugin nicht aktiv ist —
        // sonst zoegen wir dem Eingangs-Nutzer die Berechtigung weg.
        if ( ! function_exists( 'is_plugin_active' ) ) {
            require_once ABSPATH . 'wp-admin/includes/plugin.php';
        }
        if ( ! is_plugin_active( 'rechnungseingang/itdatex-e-invoice-intake.php' ) ) {
            $role = get_role( 'administrator' );
            if ( $role && $role->has_cap( Plugin::CAPABILITY ) ) {
                $role->remove_cap( Plugin::CAPABILITY );
            }
        }
    }
}
