<?php
/**
 * OVP-Sponsorizare
 *
 * @package   OVPSPO_Sponsorizare
 * @author    Ovidiu Pantiru - OVP-Digital
 * @copyright 2024 Ovidiu Pantiru
 * @license   GPL-2.0+
 * @link      https://ovidiupantiru.ro
 */

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

if ( ! class_exists('OVPSPO_Form_Contract') ) {
class OVPSPO_Form_Contract {

    public static function init() {
        add_shortcode( 'ovpspo_contract_sponsorizare', array( __CLASS__, 'render' ) );
        add_action( 'wp_enqueue_scripts', array( __CLASS__, 'assets' ) );
    }

    public static function assets() {
        // CSS incarcat intotdeauna - has_shortcode() nu functioneaza cu page buildere
        wp_enqueue_style( 'dashicons' );
        wp_enqueue_style( 'ovpspo-contract', OVPSPO_URL . 'assets/css/contract.css', array(), OVPSPO_VERSION );

        $culoare  = OVPSPO_Settings::get( 'culoare_header', '#0F408A' );
        $accent   = OVPSPO_Settings::get( 'culoare_accent', '#c8a84b' );
        $sectiuni = OVPSPO_Settings::get( 'culoare_sectiuni', '#0F408A' );
        $buton    = OVPSPO_Settings::get( 'culoare_buton', '#0F408A' );
        $text     = OVPSPO_Settings::get( 'culoare_text', '#1c2333' );
        wp_add_inline_style( 'ovpspo-contract', sprintf(
            '.ovp-contract-wrap { --culoare:%s; --culoare-accent:%s; --culoare-sectiuni:%s; --culoare-buton:%s; --culoare-text:%s; }',
            esc_attr($culoare), esc_attr($accent), esc_attr($sectiuni), esc_attr($buton), esc_attr($text)
        ) );
        wp_enqueue_script( 'ovpspo-contract', OVPSPO_URL . 'assets/js/contract.js', array( 'jquery' ), OVPSPO_VERSION, true );
        wp_localize_script( 'ovpspo-contract', 'ovpspo_contract', array(
            'ajax_url' => admin_url( 'admin-ajax.php' ),
            'nonce'    => wp_create_nonce( 'ovpspo_contract_submit' ),
        ) );
    }

    public static function render() {
        $culoare  = OVPSPO_Settings::get('culoare_header','#0F408A');
        $accent   = OVPSPO_Settings::get('culoare_accent','#c8a84b');
        $sectiuni = OVPSPO_Settings::get('culoare_sectiuni','#0F408A');
        $buton    = OVPSPO_Settings::get('culoare_buton','#0F408A');
        $text     = OVPSPO_Settings::get('culoare_text','#1c2333');
        $org_nume = OVPSPO_Settings::get('org_nume','');
        $an       = gmdate('Y');

        $judete = array('Alba','Arad','Argeș','Bacău','Bihor','Bistrița-Năsăud','Botoșani',
            'Brașov','Brăila','Buzău','Caraș-Severin','Călărași','Cluj','Constanța',
            'Covasna','Dâmbovița','Dolj','Galați','Giurgiu','Gorj','Harghita','Hunedoara',
            'Ialomița','Iași','Ilfov','Maramureș','Mehedinți','Mureș','Neamț','Olt',
            'Prahova','Satu Mare','Sălaj','Sibiu','Suceava','Teleorman','Timiș','Tulcea',
            'Vaslui','Vâlcea','Vrancea','București');

        ob_start(); ?>
        <div class="ovp-contract-wrap" id="ovp-contract-wrap"
             style="--culoare:<?php echo esc_attr($culoare);?>;--culoare-accent:<?php echo esc_attr($accent);?>;--culoare-sectiuni:<?php echo esc_attr($sectiuni);?>;--culoare-buton:<?php echo esc_attr($buton);?>;--culoare-text:<?php echo esc_attr($text);?>;">

        <!-- HERO -->
        <div class="ovp-c-hero">
            <div class="ovp-c-hero-inner">
                <div class="ovp-c-badge">Contract de Sponsorizare</div>
                <h2>Sponsorizează <span><?php echo esc_html($org_nume ?: 'organizația noastră'); ?></span></h2>
                <p>Completează formularul de mai jos. Contractul PDF se generează instant, se descarcă și se trimite pe email pentru semnare.</p>
                <div class="ovp-c-hero-info">
                    <span class="ovp-c-info-item"><span class="dashicons dashicons-yes"></span> Gratuit</span>
                    <span class="ovp-c-info-item"><span class="dashicons dashicons-yes"></span> PDF generat instant</span>
                    <span class="ovp-c-info-item"><span class="dashicons dashicons-yes"></span> Trimis pe email</span>
                    <span class="ovp-c-info-item"><span class="dashicons dashicons-yes"></span> Conform legislației</span>
                </div>
            </div>
        </div>

        <form id="ovp-contract-form" class="ovp-c-form" novalidate>
            <?php wp_nonce_field('ovpspo_contract_submit','ovpspo_contract_nonce'); ?>

            <!-- NR CONTRACT + DATA -->
            <div class="ovp-c-section">
                <h3>Identificare contract</h3>
                <div class="ovp-c-row ovp-c-col2">
                    <div class="ovp-c-field">
                        <label>Număr contract <span class="req">*</span></label>
                        <input type="text" name="nr_contract" required placeholder="ex. 1">
                        <span class="ovp-c-hint">Numărul contractului (ex. 1, 2, 10...)</span>
                    </div>
                    <div class="ovp-c-field">
                        <label>Data contractului <span class="req">*</span></label>
                        <input type="date" name="data_contract" required value="<?php echo esc_attr( gmdate('Y-m-d') ); ?>">
                    </div>
                </div>
            </div>

            <!-- TIP SPONSOR -->
            <div class="ovp-c-section">
                <h3>I. Date Sponsor</h3>
                <div class="ovp-c-row" style="margin-bottom:16px">
                    <label><strong>Tipul sponsorului *</strong></label>
                    <div class="ovp-c-tip-wrap">
                        <label class="ovp-c-tip-btn active" data-tip="juridica">
                            <input type="radio" name="tip_sponsor" value="juridica" checked>
                            <span class="dashicons dashicons-building"></span> Persoană juridică
                        </label>
                        <label class="ovp-c-tip-btn" data-tip="fizica">
                            <input type="radio" name="tip_sponsor" value="fizica">
                            <span class="dashicons dashicons-admin-users"></span> Persoană fizică
                        </label>
                    </div>
                </div>

                <!-- PERSOANA JURIDICA -->
                <div id="ovp-sponsor-juridica">
                    <div class="ovp-c-row ovp-c-col2">
                        <div class="ovp-c-field">
                            <label>Denumire firmă <span class="req">*</span></label>
                            <input type="text" name="sp_denumire" placeholder="ex. ABC SRL" maxlength="200">
                        </div>
                        <div class="ovp-c-field">
                            <label>Forma juridică <span class="req">*</span></label>
                            <select name="sp_forma_juridica">
                                <option value="SRL">SRL</option>
                                <option value="SA">SA</option>
                                <option value="RA">RA</option>
                                <option value="SNC">SNC</option>
                                <option value="SCS">SCS</option>
                                <option value="Alta">Altă formă</option>
                            </select>
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col3">
                        <div class="ovp-c-field">
                            <label>Sediul social (localitate) <span class="req">*</span></label>
                            <input type="text" name="sp_localitate" placeholder="ex. Cluj-Napoca" maxlength="100">
                        </div>
                        <div class="ovp-c-field">
                            <label>Strada <span class="req">*</span></label>
                            <input type="text" name="sp_strada" placeholder="ex. Str. Exemplu nr. 1" maxlength="200">
                        </div>
                        <div class="ovp-c-field">
                            <label>Județ <span class="req">*</span></label>
                            <select name="sp_judet">
                                <option value="">— Selectează —</option>
                                <?php foreach ($judete as $j) echo '<option value="' . esc_attr($j) . '">' . esc_html($j) . '</option>'; ?>
                            </select>
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col3">
                        <div class="ovp-c-field">
                            <label>Nr. Registrul Comerțului <span class="req">*</span></label>
                            <input type="text" name="sp_reg_com" placeholder="ex. J12/123/2020" maxlength="50">
                        </div>
                        <div class="ovp-c-field">
                            <label>CUI <span class="req">*</span></label>
                            <input type="text" name="sp_cui" placeholder="ex. RO12345678" maxlength="20">
                        </div>
                        <div class="ovp-c-field">
                            <label>Reprezentant legal <span class="req">*</span></label>
                            <input type="text" name="sp_reprezentant" placeholder="ex. Ion Popescu" maxlength="100">
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col2">
                        <div class="ovp-c-field">
                            <label>Funcția reprezentantului <span class="req">*</span></label>
                            <input type="text" name="sp_functie" placeholder="ex. Administrator" maxlength="100">
                        </div>
                        <div class="ovp-c-field">
                            <label>Email sponsor <span class="req">*</span></label>
                            <input type="email" name="sp_email" required placeholder="sponsor@firma.ro" maxlength="200">
                            <span class="ovp-c-hint">Pe această adresă se trimite contractul</span>
                        </div>
                    </div>
                </div>

                <!-- PERSOANA FIZICA -->
                <div id="ovp-sponsor-fizica" style="display:none">
                    <div class="ovp-c-row ovp-c-col3">
                        <div class="ovp-c-field">
                            <label>Nume <span class="req">*</span></label>
                            <input type="text" name="sp_pf_nume" placeholder="ex. Popescu" maxlength="100">
                        </div>
                        <div class="ovp-c-field">
                            <label>Prenume <span class="req">*</span></label>
                            <input type="text" name="sp_pf_prenume" placeholder="ex. Ion" maxlength="100">
                        </div>
                        <div class="ovp-c-field">
                            <label>CNP <span class="req">*</span></label>
                            <input type="text" name="sp_pf_cnp" placeholder="13 cifre" maxlength="13">
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col3">
                        <div class="ovp-c-field">
                            <label>Localitate domiciliu <span class="req">*</span></label>
                            <input type="text" name="sp_pf_localitate" placeholder="ex. Cluj-Napoca" maxlength="100">
                        </div>
                        <div class="ovp-c-field">
                            <label>Adresă <span class="req">*</span></label>
                            <input type="text" name="sp_pf_strada" placeholder="ex. Str. Exemplu nr. 1" maxlength="200">
                        </div>
                        <div class="ovp-c-field">
                            <label>Județ <span class="req">*</span></label>
                            <select name="sp_pf_judet">
                                <option value="">— Selectează —</option>
                                <?php foreach ($judete as $j) echo '<option value="' . esc_attr($j) . '">' . esc_html($j) . '</option>'; ?>
                            </select>
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col2">
                        <div class="ovp-c-field">
                            <label>Serie și număr CI</label>
                            <input type="text" name="sp_pf_ci" placeholder="ex. CJ 123456" maxlength="20">
                        </div>
                        <div class="ovp-c-field">
                            <label>Email sponsor <span class="req">*</span></label>
                            <input type="email" name="sp_pf_email" placeholder="sponsor@email.ro" maxlength="200">
                            <span class="ovp-c-hint">Pe această adresă se trimite contractul</span>
                        </div>
                    </div>
                </div>
            </div>

            <!-- OBIECTUL CONTRACTULUI -->
            <div class="ovp-c-section">
                <h3>II. Obiectul Contractului</h3>
                <div class="ovp-c-row" style="margin-bottom:16px">
                    <label><strong>Tipul sponsorizării <span class="req">*</span></strong></label>
                    <div class="ovp-c-tip-wrap">
                        <label class="ovp-c-tip-btn active" data-tip="baneasca">
                            <input type="radio" name="tip_sponsorizare" value="baneasca" checked>
                            <span class="dashicons dashicons-money-alt"></span> Bănească
                        </label>
                        <label class="ovp-c-tip-btn" data-tip="bunuri">
                            <input type="radio" name="tip_sponsorizare" value="bunuri">
                            <span class="dashicons dashicons-archive"></span> Bunuri
                        </label>
                        <label class="ovp-c-tip-btn" data-tip="servicii">
                            <input type="radio" name="tip_sponsorizare" value="servicii">
                            <span class="dashicons dashicons-admin-tools"></span> Servicii
                        </label>
                    </div>
                </div>

                <!-- BANEASCA -->
                <div id="ovp-sp-baneasca">
                    <div class="ovp-c-row ovp-c-col2">
                        <div class="ovp-c-field">
                            <label>Suma sponsorizată (lei) <span class="req">*</span></label>
                            <input type="number" name="sp_suma" min="1" step="0.01" placeholder="ex. 1000">
                        </div>
                        <div class="ovp-c-field">
                            <label>Data limită virament <span class="req">*</span></label>
                            <input type="date" name="sp_data_limita">
                        </div>
                    </div>
                </div>

                <!-- BUNURI -->
                <div id="ovp-sp-bunuri" style="display:none">
                    <div class="ovp-c-row">
                        <div class="ovp-c-field">
                            <label>Descrierea bunurilor sponsorizate <span class="req">*</span></label>
                            <textarea name="sp_bunuri_desc" rows="3" placeholder="ex. 10 calculatoare model XYZ, evaluate la 5000 lei" maxlength="500"></textarea>
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col2">
                        <div class="ovp-c-field">
                            <label>Valoare estimată (lei)</label>
                            <input type="number" name="sp_bunuri_valoare" min="0" step="0.01" placeholder="ex. 5000">
                        </div>
                        <div class="ovp-c-field">
                            <label>Data predare bunuri <span class="req">*</span></label>
                            <input type="date" name="sp_bunuri_data">
                        </div>
                    </div>
                </div>

                <!-- SERVICII -->
                <div id="ovp-sp-servicii" style="display:none">
                    <div class="ovp-c-row">
                        <div class="ovp-c-field">
                            <label>Descrierea serviciilor sponsorizate <span class="req">*</span></label>
                            <textarea name="sp_servicii_desc" rows="3" placeholder="ex. Servicii de design grafic pentru evenimentul X" maxlength="500"></textarea>
                        </div>
                    </div>
                    <div class="ovp-c-row ovp-c-col2">
                        <div class="ovp-c-field">
                            <label>Valoare estimată (lei)</label>
                            <input type="number" name="sp_servicii_valoare" min="0" step="0.01" placeholder="ex. 2000">
                        </div>
                        <div class="ovp-c-field">
                            <label>Termen prestare servicii <span class="req">*</span></label>
                            <input type="date" name="sp_servicii_data">
                        </div>
                    </div>
                </div>

                <div class="ovp-c-row">
                    <div class="ovp-c-field">
                        <label>Scopul sponsorizării <span class="opt">(opțional)</span></label>
                        <textarea name="sp_scop" rows="2" placeholder="ex. Susținerea programului educațional al asociației pentru anul 2025" maxlength="300"></textarea>
                    </div>
                </div>
            </div>

            <!-- GDPR -->
            <div class="ovp-c-section">
                <h3>Confirmare și GDPR</h3>
                <div class="ovp-c-row">
                    <label class="ovp-c-check-label ovp-c-check-req">
                        <input type="checkbox" name="gdpr" value="1" required>
                        Sunt de acord cu prelucrarea datelor cu caracter personal conform Regulamentului GDPR (UE) 2016/679, în scopul încheierii și executării contractului de sponsorizare. *
                    </label>
                </div>
                <div class="ovp-c-row">
                    <label class="ovp-c-check-label ovp-c-check-req">
                        <input type="checkbox" name="confirmare" value="1" required>
                        Confirm că datele introduse sunt corecte și că am autoritatea de a încheia acest contract în numele sponsorului. *
                    </label>
                </div>

                <div class="ovp-c-atentie">
                    <strong><span class="dashicons dashicons-info"></span> Flux de semnare:</strong> După generare, contractul PDF este trimis pe email-ul tău pentru semnare manuală.
                    După ce îl semnezi, îl trimiți spre semnare și beneficiarului (<?php echo esc_html($org_nume); ?>).
                    Contractul devine valabil doar după semnarea ambelor părți.
                </div>
            </div>

            <div id="ovp-contract-msg" class="ovp-c-msg" style="display:none"></div>

            <div class="ovp-c-submit-row">
                <button type="submit" id="ovp-contract-submit" class="ovp-c-btn-primary">
                    <span class="btn-text">Generează Contractul de Sponsorizare</span>
                    <span class="btn-loading" style="display:none">⏳ Se generează...</span>
                </button>
            </div>
        </form>
        </div>
        <?php
        return ob_get_clean();
    }
}
} // end class_exists
