<?php
/*
Plugin Name: Paiement Wave Senegal
Description: Plugin de paiement Wave Mobile Money Sénégal pour WooCommerce
Version: 1.0.3
Author: Saliou Gueye
Author URI: https://unitech.sn
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Text Domain: paiement-wave-senegal
*/

/*
 * Développé par Unitech Group
 * https://unitech.sn
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

// Définition des constantes du plugin
define( 'PW_WAVE_VERSION', '1.0.3' );
define( 'PW_WAVE_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'PW_WAVE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'PW_WAVE_DEVELOPER_URL', 'https://unitech.sn' );
define( 'PW_WAVE_LICENSE_SERVER', 'https://unitech.sn/licence/active-key.php' );
define( 'PW_WAVE_TRIAL_DURATION', 7 * DAY_IN_SECONDS ); // 7 jours en secondes

// Classe de gestion des licences avec période d'essai
class PW_Wave_License_Manager {
    
    private static $instance = null;
    private $license_key = '';
    private $license_status = '';
    private $last_check = 0;
    private $trial_started = 0;
    private $trial_end = 0;
    private $is_trial_active = false;
    
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new PW_Wave_License_Manager();
        }
        return self::$instance;
    }
    
    private function __construct() {
        $this->license_key = get_option('pw_wave_license_key', '');
        $this->license_status = get_option('pw_wave_license_status', 'invalid');
        $this->last_check = get_option('pw_wave_license_last_check', 0);
        $this->trial_started = get_option('pw_wave_trial_started', 0);
        $this->trial_end = get_option('pw_wave_trial_end', 0);
        
        // Initialiser la période d'essai si c'est la première utilisation
        $this->init_trial_period();
        
        add_action('wp_ajax_pw_wave_activate_license', array($this, 'activate_license'));
        add_action('wp_ajax_pw_wave_deactivate_license', array($this, 'deactivate_license'));
        add_action('pw_wave_license_check_event', array($this, 'check_license_status'));
        
        // Vérification périodique de la licence (toutes les 12 heures)
        if (!wp_next_scheduled('pw_wave_license_check_event')) {
            wp_schedule_event(time(), 'twicedaily', 'pw_wave_license_check_event');
        }
        
        // Notification de la période d'essai
        add_action('admin_notices', array($this, 'trial_notice'));
    }
    
    private function init_trial_period() {
        // Si aucune période d'essai n'a été démarrée et aucune licence n'est active
        if ($this->trial_started == 0 && empty($this->license_key)) {
            $now = time();
            update_option('pw_wave_trial_started', $now);
            update_option('pw_wave_trial_end', $now + PW_WAVE_TRIAL_DURATION);
            update_option('pw_wave_license_status', 'trial');
            
            $this->trial_started = $now;
            $this->trial_end = $now + PW_WAVE_TRIAL_DURATION;
            $this->license_status = 'trial';
        }
        
        // Vérifier si la période d'essai est encore active
        if ($this->trial_started > 0 && $this->trial_end > 0) {
            $this->is_trial_active = (time() < $this->trial_end);
        }
    }
    
    public function is_license_valid() {
        // Si une licence payante est active
        if (!empty($this->license_key) && $this->license_status === 'valid') {
            // Vérifier si la licence doit être re-validée (toutes les 24 heures minimum)
            if ((time() - $this->last_check) > DAY_IN_SECONDS) {
                $this->check_license_status();
            }
            return ($this->license_status === 'valid');
        }
        
        // Sinon, vérifier la période d'essai
        return $this->is_trial_valid();
    }
    
    public function is_trial_valid() {
        if ($this->trial_started == 0) {
            return false;
        }
        
        $current_time = time();
        $is_valid = ($current_time < $this->trial_end);
        
        // Si la période d'essai vient d'expirer, mettre à jour le statut
        if (!$is_valid && $this->license_status === 'trial') {
            update_option('pw_wave_license_status', 'trial_expired');
            $this->license_status = 'trial_expired';
        }
        
        return $is_valid;
    }
    
    public function get_trial_days_remaining() {
        if ($this->trial_started == 0 || time() >= $this->trial_end) {
            return 0;
        }
        
        $remaining_seconds = $this->trial_end - time();
        return ceil($remaining_seconds / DAY_IN_SECONDS);
    }
    
    public function trial_notice() {
        $screen = get_current_screen();
        
        // Afficher uniquement sur les pages d'administration
        if (!$screen || !is_admin()) {
            return;
        }
        
        // Si une licence payante est active, ne pas afficher la notification d'essai
        if (!empty($this->license_key) && $this->license_status === 'valid') {
            return;
        }
        
        $days_remaining = $this->get_trial_days_remaining();
        
        if ($days_remaining > 0) {
            // Période d'essai active
            $message = sprintf(
                'Paiement Wave Sénégal : Période d\'essai gratuite active - %d jour(s) restant(s). <a href="%s">Achetez une licence</a> pour continuer après la période d\'essai.',
                $days_remaining,
                'https://unitech.sn/plugins'
            );
            
            $notice_class = $days_remaining <= 2 ? 'notice-warning' : 'notice-info';
            
            echo '<div class="notice ' . $notice_class . ' is-dismissible">';
            echo '<p><strong>' . $message . '</strong></p>';
            echo '</div>';
            
        } elseif ($this->license_status === 'trial_expired') {
            // Période d'essai expirée
            echo '<div class="notice notice-error is-dismissible">';
            echo '<p><strong>Paiement Wave Sénégal:</strong> Votre période d\'essai gratuite de 7 jours a expiré. ';
            echo '<a href="' . admin_url('admin.php?page=pw-wave-license') . '">Activez votre licence</a> ';
            echo 'ou <a href="https://unitech.sn/plugins" target="_blank">achetez une licence</a> pour continuer à utiliser ce plugin.</p>';
            echo '</div>';
        }
    }
    
    public function activate_license() {
        check_ajax_referer('pw_wave_license_nonce', 'nonce');
        
        if (!current_user_can('manage_options')) {
            wp_die('Accès refusé');
        }
        
        $license_key = sanitize_text_field($_POST['license_key']);
        
        if (empty($license_key)) {
            wp_send_json_error('Clé de licence requise');
        }
        
        $response = $this->validate_license($license_key, 'activate');
        
        if ($response && isset($response['status']) && $response['status'] === 'valid') {
            update_option('pw_wave_license_key', $license_key);
            update_option('pw_wave_license_status', 'valid');
            update_option('pw_wave_license_last_check', time());
            update_option('pw_wave_license_data', $response);
            
            wp_send_json_success('Licence activée avec succès');
        } else {
            $error_message = isset($response['message']) ? $response['message'] : 'Licence invalide';
            wp_send_json_error($error_message);
        }
    }
    
    public function deactivate_license() {
        check_ajax_referer('pw_wave_license_nonce', 'nonce');
        
        if (!current_user_can('manage_options')) {
            wp_die('Accès refusé');
        }
        
        if (!empty($this->license_key)) {
            $this->validate_license($this->license_key, 'deactivate');
        }
        
        delete_option('pw_wave_license_key');
        delete_option('pw_wave_license_status');
        delete_option('pw_wave_license_last_check');
        delete_option('pw_wave_license_data');
        
        // Réactiver la période d'essai si elle n'a pas encore expiré
        if ($this->trial_started > 0 && time() < $this->trial_end) {
            update_option('pw_wave_license_status', 'trial');
        } else {
            update_option('pw_wave_license_status', 'trial_expired');
        }
        
        wp_send_json_success('Licence désactivée');
    }
    
    public function check_license_status() {
        if (empty($this->license_key)) {
            return false;
        }
        
        $response = $this->validate_license($this->license_key, 'check');
        
        if ($response && isset($response['status'])) {
            update_option('pw_wave_license_status', $response['status']);
            update_option('pw_wave_license_last_check', time());
            
            if ($response['status'] !== 'valid') {
                // Licence expirée ou invalide - désactiver le plugin
                $this->deactivate_plugin_features();
            }
        }
    }
    
    private function validate_license($license_key, $action = 'check') {
        $api_params = array(
            'action' => $action,
            'license_key' => $license_key,
            'domain' => home_url(),
            'plugin' => 'paiement-wave-senegal',
            'version' => PW_WAVE_VERSION,
            'php_version' => phpversion(),
            'wp_version' => get_bloginfo('version')
        );
        
        // Créer une signature pour sécuriser la requête
        $signature = hash_hmac('sha256', serialize($api_params), $license_key);
        $api_params['signature'] = $signature;
        
        $request = wp_remote_post(PW_WAVE_LICENSE_SERVER, array(
            'method' => 'POST',
            'timeout' => 15,
            'redirection' => 5,
            'httpversion' => '1.1',
            'blocking' => true,
            'headers' => array(
                'Content-Type' => 'application/json',
                'User-Agent' => 'PW-Wave-Plugin/' . PW_WAVE_VERSION . '; ' . home_url()
            ),
            'body' => json_encode($api_params),
            'cookies' => array()
        ));
        
        if (!is_wp_error($request)) {
            $body = wp_remote_retrieve_body($request);
            $response = json_decode($body, true);
            
            // Vérifier si la réponse est valide
            if (isset($response['success']) && $response['success'] === true) {
                // Vérifier l'intégrité de la réponse si une signature est présente
                if (isset($response['signature']) && isset($response['data'])) {
                    // Le serveur utilise LICENSE_SECRET_KEY, pas la license_key pour signer
                    // Donc on ne peut pas vérifier la signature côté client
                    // On fait confiance à la réponse HTTPS du serveur
                    return $response['data'];
                } else if (isset($response['data'])) {
                    // Pas de signature mais réponse valide
                    return $response['data'];
                }
            } else if (isset($response['success']) && $response['success'] === false) {
                // Erreur du serveur
                return array('status' => 'invalid', 'message' => $response['message'] ?? 'Erreur serveur');
            }
        }
        
        return array('status' => 'invalid', 'message' => 'Erreur de communication avec le serveur');
    }
    
    private function deactivate_plugin_features() {
        // Désactiver les fonctionnalités du plugin
        update_option('pw_wave_license_status', 'invalid');
        
        // Vous pouvez ajouter d'autres actions ici
        // comme désactiver complètement le plugin ou afficher des notifications
    }
    
    public function get_license_info() {
        return array(
            'key' => $this->license_key,
            'status' => $this->license_status,
            'last_check' => $this->last_check,
            'trial_started' => $this->trial_started,
            'trial_end' => $this->trial_end,
            'trial_days_remaining' => $this->get_trial_days_remaining(),
            'is_trial_active' => $this->is_trial_valid()
        );
    }
}

// Initialiser le gestionnaire de licence
$pw_wave_license = PW_Wave_License_Manager::getInstance();

// Vérifier la licence avant d'initialiser le plugin
add_action('plugins_loaded', 'pw_wave_check_license_before_init', 5);
function pw_wave_check_license_before_init() {
    global $pw_wave_license;
    
    if (!$pw_wave_license->is_license_valid()) {
        // Afficher une notification d'erreur si ni la licence ni l'essai ne sont valides
        add_action('admin_notices', 'pw_wave_license_error_notice');
        return; // Ne pas initialiser le plugin
    }
    
    // Si la licence ou l'essai est valide, initialiser le plugin normalement
    pw_wave_init_gateway_class();
}

// Notification d'erreur de licence
function pw_wave_license_error_notice() {
    ?>
    <div class="notice notice-error is-dismissible">
        <p><strong>Paiement Wave Sénégal:</strong> Votre période d'essai a expiré et aucune licence valide n'est configurée. 
        <a href="<?php echo admin_url('admin.php?page=pw-wave-license'); ?>">Activez votre licence</a> 
        ou <a href="https://unitech.sn/plugins" target="_blank">achetez une licence</a> pour utiliser ce plugin.</p>
    </div>
    <?php
}

// Page d'administration des licences
add_action('admin_menu', 'pw_wave_license_menu');
function pw_wave_license_menu() {
    add_options_page(
        'Licence Wave Plugin',
        'Licence Wave',
        'manage_options',
        'pw-wave-license',
        'pw_wave_license_page'
    );
}

function pw_wave_license_page() {
    global $pw_wave_license;
    $license_info = $pw_wave_license->get_license_info();
    ?>
    <div class="wrap">
        <h1>Gestion de la Licence - Paiement Wave Sénégal</h1>
        
        <div class="card" style="max-width: 600px;">
            <h2>État de la Licence</h2>
            <table class="form-table">
                <tr>
                    <th>Statut:</th>
                    <td>
                        <span class="pw-license-status <?php echo $license_info['status']; ?>">
                            <?php 
                            switch($license_info['status']) {
                                case 'trial':
                                    echo 'Période d\'essai (' . $license_info['trial_days_remaining'] . ' jour(s) restant(s))';
                                    break;
                                case 'trial_expired':
                                    echo 'Période d\'essai expirée';
                                    break;
                                case 'valid':
                                    echo 'Licence valide';
                                    break;
                                case 'expired':
                                    echo 'Licence expirée';
                                    break;
                                default:
                                    echo 'Invalide';
                            }
                            ?>
                        </span>
                    </td>
                </tr>
                <?php if (!empty($license_info['key'])): ?>
                <tr>
                    <th>Clé de Licence:</th>
                    <td><?php echo substr($license_info['key'], 0, 8) . '****'; ?></td>
                </tr>
                <?php endif; ?>
                
                <?php if ($license_info['trial_started'] > 0): ?>
                <tr>
                    <th>Période d'essai démarrée:</th>
                    <td><?php echo date('d/m/Y H:i:s', $license_info['trial_started']); ?></td>
                </tr>
                <tr>
                    <th>Fin de la période d'essai:</th>
                    <td><?php echo date('d/m/Y H:i:s', $license_info['trial_end']); ?></td>
                </tr>
                <?php endif; ?>
                
                <tr>
                    <th>Dernière Vérification:</th>
                    <td>
                        <?php if ($license_info['last_check']): ?>
                            <?php echo date('d/m/Y H:i:s', $license_info['last_check']); ?>
                        <?php else: ?>
                            Jamais
                        <?php endif; ?>
                    </td>
                </tr>
            </table>
        </div>
        
        <div class="card" style="max-width: 600px; margin-top: 20px;">
            <h2>Activer/Désactiver la Licence</h2>
            <form id="pw-wave-license-form">
                <?php wp_nonce_field('pw_wave_license_nonce', 'nonce'); ?>
                
                <table class="form-table">
                    <tr>
                        <th><label for="license_key">Clé de Licence:</label></th>
                        <td>
                            <input type="text" id="license_key" name="license_key" 
                                   value="<?php echo esc_attr($license_info['key']); ?>" 
                                   style="width: 100%;" placeholder="Entrez votre clé de licence" />
                        </td>
                    </tr>
                </table>
                
                <p class="submit">
                    <button type="button" id="activate-license" class="button-primary">Activer la Licence</button>
                    <button type="button" id="deactivate-license" class="button-secondary" style="margin-left: 10px;">Désactiver la Licence</button>
                </p>
            </form>
            
            <div id="license-message" style="margin-top: 15px;"></div>
        </div>
        
        <div class="card" style="max-width: 600px; margin-top: 20px;">
            <h3>Besoin d'une Licence ?</h3>
            <p>Achetez votre licence sur <a href="https://unitech.sn/plugins" target="_blank"><strong>unitech.sn</strong></a></p>
            <p>Pour toute assistance, contactez-nous à <strong>+221 78 197 23 71</strong></p>
            
            <?php if ($license_info['status'] === 'trial' && $license_info['trial_days_remaining'] > 0): ?>
            <div style="background: #e7f3ff; padding: 15px; border-left: 4px solid #1e8cbe; margin-top: 15px;">
                <h4 style="margin-top: 0;">🎉 Période d'essai gratuite active !</h4>
                <p>Vous avez encore <strong><?php echo $license_info['trial_days_remaining']; ?> jour(s)</strong> pour tester toutes les fonctionnalités du plugin gratuitement.</p>
                <p>Achetez votre licence maintenant pour continuer à utiliser le plugin après la période d'essai.</p>
            </div>
            <?php endif; ?>
        </div>
    </div>
    
    <style>
        .pw-license-status {
            padding: 4px 8px;
            border-radius: 3px;
            font-weight: bold;
            text-transform: uppercase;
            font-size: 12px;
        }
        .pw-license-status.valid {
            background: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        .pw-license-status.trial {
            background: #e7f3ff;
            color: #0c5aa6;
            border: 1px solid #bee5eb;
            text-transform: none;
        }
        .pw-license-status.trial_expired {
            background: #fff3cd;
            color: #856404;
            border: 1px solid #ffeaa7;
        }
        .pw-license-status.invalid {
            background: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        .pw-license-status.expired {
            background: #fff3cd;
            color: #856404;
            border: 1px solid #ffeaa7;
        }
    </style>
    
    <script>
    jQuery(document).ready(function($) {
        $('#activate-license').click(function() {
            var licenseKey = $('#license_key').val();
            if (!licenseKey) {
                alert('Veuillez entrer une clé de licence');
                return;
            }
            
            $.ajax({
                url: ajaxurl,
                type: 'POST',
                data: {
                    action: 'pw_wave_activate_license',
                    license_key: licenseKey,
                    nonce: $('#nonce').val()
                },
                success: function(response) {
                    if (response.success) {
                        $('#license-message').html('<div class="notice notice-success"><p>' + response.data + '</p></div>');
                        setTimeout(function() {
                            location.reload();
                        }, 2000);
                    } else {
                        $('#license-message').html('<div class="notice notice-error"><p>' + response.data + '</p></div>');
                    }
                }
            });
        });
        
        $('#deactivate-license').click(function() {
            if (confirm('Êtes-vous sûr de vouloir désactiver cette licence ?')) {
                $.ajax({
                    url: ajaxurl,
                    type: 'POST',
                    data: {
                        action: 'pw_wave_deactivate_license',
                        nonce: $('#nonce').val()
                    },
                    success: function(response) {
                        if (response.success) {
                            $('#license-message').html('<div class="notice notice-success"><p>' + response.data + '</p></div>');
                            setTimeout(function() {
                                location.reload();
                            }, 2000);
                        }
                    }
                });
            }
        });
    });
    </script>
    <?php
}

// Ajouter la passerelle de paiement à WooCommerce (seulement si licence ou essai valide)
add_filter( 'woocommerce_payment_gateways', 'pw_wave_add_gateway_class' );
function pw_wave_add_gateway_class( $gateways ) {
    global $pw_wave_license;
    
    if ($pw_wave_license->is_license_valid()) {
        $gateways[] = 'PW_Wave_Gateway';
    }
    
    return $gateways;
}

// Initialiser la passerelle de paiement
function pw_wave_init_gateway_class() {
    if ( ! class_exists( 'WC_Payment_Gateway' ) ) {
        return; // WooCommerce n'est pas actif
    }
    
    class PW_Wave_Gateway extends WC_Payment_Gateway {

        public function __construct() {
            $this->id                 = 'pw_wave_gateway';
            $this->icon               = plugins_url( 'assets/wave-logo.png', __FILE__ );
            $this->has_fields         = false;
            $this->method_title       = 'Paiement Wave';
            $this->method_description = 'Accepter les paiements via Wave sur WooCommerce. <a href="' . PW_WAVE_DEVELOPER_URL . '" target="_blank" class="unitech-dev-link">Développé par Unitech Group</a>';

            $this->init_form_fields();
            $this->init_settings();

            $this->title       = $this->get_option( 'title' );
            $this->description = $this->get_option( 'description' );
            $this->api_key     = $this->get_option( 'api_key' );
            $this->fee_percent = $this->get_option( 'fee_percent' );
            $this->error_url   = $this->get_option( 'error_url' );
            $this->success_url = $this->get_option( 'success_url' );

            add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
        }

        public function init_form_fields() {
            $this->form_fields = array(
                'enabled' => array(
                    'title'       => 'Activer/Désactiver',
                    'label'       => 'Activer le paiement Wave',
                    'type'        => 'checkbox',
                    'default'     => 'no',
                ),
                'title' => array(
                    'title'       => 'Titre',
                    'type'        => 'text',
                    'default'     => 'Paiement avec Wave',
                    'desc_tip'    => true,
                ),
                'description' => array(
                    'title'       => 'Description',
                    'type'        => 'textarea',
                    'default'     => 'Paiement sécurisé avec Wave Mobile Money.',
                ),
                'api_key' => array(
                    'title'       => 'Clé API Wave',
                    'type'        => 'text',
                    'description' => 'Entrez votre clé API Wave ici.',
                ),
                'fee_percent' => array(
                    'title'       => 'Pourcentage des frais',
                    'type'        => 'number',
                    'description' => 'Laissez ce champ vide pour ne pas appliquer de frais supplémentaires.',
                    'default'     => '1',
                ),
                'error_url' => array(
                    'title'       => 'URL de redirection en cas d\'échec',
                    'type'        => 'url',
                    'default'     => home_url('/panier/'),
                ),
                'success_url' => array(
                    'title'       => 'URL de redirection en cas de succès',
                    'type'        => 'url',
                    'default'     => home_url('/commande-recue/'),
                ),
                'webhook_secret' => array(
                    'title'       => 'Clé secrète du Webhook',
                    'type'        => 'text',
                    'description' => '<span style="color:#d63638;">Disponible uniquement dans la <a href="https://unitech.sn/product/plugin-woocommerce-wave-premium/" target="_blank">version premium</a></span>',
                    'placeholder' => 'Fonctionnalité Premium',
                    'custom_attributes' => array(
                        'disabled' => 'disabled',
                    ),
                ),
            );
        }

        public function process_payment( $order_id ) {
            global $pw_wave_license;
            
            // Vérifier à nouveau la licence avant traitement
            if (!$pw_wave_license->is_license_valid()) {
                wc_add_notice( 'Plugin expiré ou licence invalide. Contactez l\'administrateur.', 'error' );
                return array(
                    'result'   => 'failure',
                    'messages' => 'Licence expirée'
                );
            }
            
            $order = wc_get_order( $order_id );
            
            if ( !$order ) {
                wc_add_notice( 'Erreur lors de la récupération de la commande.', 'error' );
                return;
            }
            
            $fee_percent = !empty($this->fee_percent) ? floatval($this->fee_percent) / 100 : 0;
            $amount = ceil($order->get_total() * (1 + $fee_percent));

            $response = $this->create_wave_payment_session( $amount, $order_id );

            if ( is_array($response) && isset( $response['wave_launch_url'] ) ) {
                return array(
                    'result'   => 'success',
                    'redirect' => $response['wave_launch_url']
                );
            } else {
                wc_add_notice( 'Erreur de paiement avec Wave. Veuillez réessayer ou contacter l\'administrateur.', 'error' );
                return array(
                    'result'   => 'failure',
                    'messages' => 'Erreur de communication avec Wave'
                );
            }
        }

        private function create_wave_payment_session( $amount, $order_id ) {
            $api_key = $this->api_key;
            
            if ( empty($api_key) ) {
                wc_add_notice( 'La clé API Wave n\'est pas configurée.', 'error' );
                return false;
            }

            $data = array(
                'amount' => $amount,
                'currency' => 'XOF',
                'error_url' => !empty($this->error_url) ? $this->error_url : home_url('/panier/'),
                'success_url' => !empty($this->success_url) ? $this->success_url : home_url('/commande-recue/'),
            );

            $args = array(
                'method'  => 'POST',
                'headers' => array(
                    'Authorization' => 'Bearer ' . $api_key,
                    'Content-Type'  => 'application/json',
                ),
                'body'    => json_encode( $data ),
                'timeout' => 30,
            );

            $response = wp_remote_post( 'https://api.wave.com/v1/checkout/sessions', $args );

            if ( is_wp_error( $response ) ) {
                wc_add_notice( 'Erreur de connexion avec le serveur Wave: ' . $response->get_error_message(), 'error' );
                return false;
            }

            $body = wp_remote_retrieve_body( $response );
            $response_code = wp_remote_retrieve_response_code( $response );
            
            if ( $response_code !== 200 && $response_code !== 201 ) {
                wc_add_notice( 'Erreur de réponse Wave (code ' . $response_code . ')', 'error' );
                return false;
            }

            return json_decode( $body, true );
        }
    }
}

// Nettoyer les tâches programmées lors de la désactivation
register_deactivation_hook(__FILE__, 'pw_wave_deactivation');
function pw_wave_deactivation() {
    wp_clear_scheduled_hook('pw_wave_license_check_event');
}

// Ajouter les styles via wp_enqueue_style
add_action( 'wp_enqueue_scripts', 'pw_wave_enqueue_styles' );
function pw_wave_enqueue_styles() {
    wp_enqueue_style(
        'pw-wave-styles',
        plugins_url( 'assets/wave-payment.css', __FILE__ )
    );
}

// Ajouter des styles admin pour les notifications de version premium
add_action( 'admin_enqueue_scripts', 'pw_wave_admin_styles' );
function pw_wave_admin_styles() {
    $screen = get_current_screen();
    if ( isset( $screen->id ) && $screen->id === 'woocommerce_page_wc-settings' && isset( $_GET['section'] ) && $_GET['section'] === 'pw_wave_gateway' ) {
        wp_add_inline_style( 'wp-admin', '
            .unitech-dev-link {
                font-weight: bold;
                color: #1e8cbe;
                text-decoration: none;
            }
            .unitech-dev-link:hover {
                text-decoration: underline;
            }
            .wave-title-link {
                color: #23282d;
                text-decoration: none;
                font-weight: bold;
                display: inline-flex;
                align-items: center;
            }
            .wave-title-link:hover {
                color: #0073aa;
            }
            .wave-title-link:after {
                content: "⤴︎";
                font-size: 14px;
                margin-left: 5px;
                opacity: 0.7;
            }
            .pw-premium-badge {
                background-color: #ff9800;
                color: white;
                padding: 2px 8px;
                border-radius: 4px;
                font-size: 12px;
                margin-left: 5px;
                font-weight: bold;
            }
            .pw-premium-feature {
                opacity: 0.7;
                position: relative;
            }
            .pw-premium-feature:after {
                content: "Premium";
                position: absolute;
                top: 50%;
                transform: translateY(-50%);
                right: 10px;
                background: #ff9800;
                color: white;
                padding: 2px 6px;
                border-radius: 3px;
                font-size: 11px;
            }
        ' );
    }
}

// Créer le dossier assets s'il n'existe pas
register_activation_hook(__FILE__, 'pw_wave_create_assets_folder');
function pw_wave_create_assets_folder() {
    $assets_dir = plugin_dir_path(__FILE__) . 'assets';
    if (!file_exists($assets_dir)) {
        wp_mkdir_p($assets_dir);
    }
}

// Ajouter deux notifications permanentes en haut des pages WooCommerce dans l'admin
add_action('admin_notices', 'pw_wave_permanent_admin_notices');
function pw_wave_permanent_admin_notices() {
    $screen = get_current_screen();

    // Afficher uniquement sur les pages WooCommerce
    if ($screen && strpos($screen->id, 'woocommerce') !== false) {

        // Notification pour le plugin SANS API
        $basic_url = 'https://unitech.sn/product/wave-paiement-marchand-pour-woocommerce-sans-integration-api/';
        echo '<div class="notice notice-success" style="border-left-color: #46b450; padding: 8px 12px; margin: 15px 0;">
            <p style="margin: 0;">
                🎉 <strong><a href="' . esc_url($basic_url) . '" target="_blank" style="text-decoration: none; color:#23282d;">Plugin Wave Paiement Marchand SANS API</a></strong> 
                est maintenant disponible ! Intégrez rapidement le paiement mobile sans API complexe, Sans Licence.
                <a href="' . esc_url($basic_url) . '" target="_blank" style="margin-left: 10px; background: #28a745; color: white; padding: 3px 10px; border-radius: 3px; text-decoration: none; font-size: 12px; font-weight: bold;">DÉCOUVRIR</a>
            </p>
        </div>';

        // Notification pour la version Premium
        $premium_url = 'https://unitech.sn/product/plugin-woocommerce-wave-premium/';
        echo '<div class="notice notice-info" style="border-left-color: #1e8cbe; padding: 8px 12px; margin: 15px 0;">
            <p style="margin: 0;">
                ⭐ <strong><a href="' . esc_url($premium_url) . '" target="_blank" style="text-decoration: none; color:#23282d;">Paiement Wave Premium</a></strong> 
                – Passez à la <a href="' . esc_url($premium_url) . '" target="_blank" style="font-weight:bold;">version Premium</a> pour débloquer les webhooks, notifications automatiques, page de succès personnalisée, et plus encore - Sans Licence!
                <a href="' . esc_url($premium_url) . '" target="_blank" style="margin-left: 10px; background: #ff9800; color: white; padding: 3px 10px; border-radius: 3px; text-decoration: none; font-size: 12px; font-weight: bold;">DÉCOUVRIR</a>
            </p>
        </div>';
    }
}

?>