<?php
/**
 * Admin Dashboard Template
 *
 * @package LivraisonAPI
 */

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

// Préfixer toutes les variables globales
$livraison_api = new LivraisonAPI\API();
$livraison_api_key = get_option( 'livraison_api_key', '' );
$livraison_api_configured = ! empty( $livraison_api_key );

// Get stats with cache
global $wpdb;

// Utiliser le cache pour les statistiques
$livraison_cache_key = 'livraison_dashboard_stats';
$livraison_stats = wp_cache_get( $livraison_cache_key, 'livraison_api' );

if ( false === $livraison_stats ) {
    // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
    // Justification: Requêtes simples de comptage sur une table personnalisée. Le cache est
    // déjà implémenté via wp_cache_set() juste en dessous. Aucune API WordPress de haut niveau
    // n'existe pour compter les lignes d'une table personnalisée.
    $livraison_stats = array(
        'total' => (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}livraison_api_logs" ),
        'sent' => (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}livraison_api_logs WHERE status = 'sent'" )
    );
    // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
    wp_cache_set( $livraison_cache_key, $livraison_stats, 'livraison_api', 300 );
}

$livraison_total_orders = isset( $livraison_stats['total'] ) ? $livraison_stats['total'] : 0;
$livraison_sent_orders = isset( $livraison_stats['sent'] ) ? $livraison_stats['sent'] : 0;

?>
<div class="wrap sendi-api-admin-wrap">
    <h1><?php esc_html_e( 'Sendi API Dashboard', 'sendi-api' ); ?></h1>
    
    <?php if ( ! $livraison_api_configured ) : ?>
        <div class="notice notice-warning">
            <p><strong><?php esc_html_e( 'API not configured.', 'sendi-api' ); ?></strong></p>
            <p><?php esc_html_e( 'Please configure your API key in the settings.', 'sendi-api' ); ?></p>
            <p>
                <a href="<?php echo esc_url( admin_url( 'admin.php?page=sendi-api-settings' ) ); ?>"
                    class="button button-primary">
                    <?php esc_html_e( 'Go to Settings', 'sendi-api' ); ?>
                </a>
            </p>
        </div>
    <?php else : ?>
        <div class="notice notice-success">
            <p><strong><?php esc_html_e( 'API configured successfully!', 'sendi-api' ); ?></strong></p>
        </div>
    <?php endif; ?>
    
    <!-- Stats -->
    <div class="sendi-api-stats">
        <div class="sendi-api-stat">
            <span class="sendi-api-stat-number"><?php echo esc_html( $livraison_total_orders ); ?></span>
            <span class="sendi-api-stat-label"><?php esc_html_e( 'Total Orders', 'sendi-api' ); ?></span>
        </div>
        <div class="sendi-api-stat">
            <span class="sendi-api-stat-number"><?php echo esc_html( $livraison_sent_orders ); ?></span>
            <span class="sendi-api-stat-label"><?php esc_html_e( 'Sent to API', 'sendi-api' ); ?></span>
        </div>
        <div class="sendi-api-stat">
            <span class="sendi-api-stat-number">
                <?php 
                $livraison_success_rate = ( $livraison_total_orders > 0 && $livraison_sent_orders > 0 ) 
                    ? round( ( $livraison_sent_orders / $livraison_total_orders ) * 100 ) 
                    : 0;
                echo esc_html( $livraison_success_rate . '%' );
                ?>
            </span>
            <span class="sendi-api-stat-label"><?php esc_html_e( 'Success Rate', 'sendi-api' ); ?></span>
        </div>
    </div>
    
    <!-- Quick Actions -->
    <div class="sendi-api-card">
        <h2><?php esc_html_e( 'Quick Actions', 'sendi-api' ); ?></h2>
        <p>
            <a href="<?php echo esc_url( admin_url( 'admin.php?page=sendi-api-settings' ) ); ?>"
                class="button button-primary">
                <?php esc_html_e( 'Settings', 'sendi-api' ); ?>
            </a>
            <a href="<?php echo esc_url( admin_url( 'admin.php?page=sendi-api-logs' ) ); ?>" class="button">
                <?php esc_html_e( 'View Logs', 'sendi-api' ); ?>
            </a>
            <a href="<?php echo esc_url( admin_url( 'admin.php?page=sendi-api-help' ) ); ?>" class="button">
                <?php esc_html_e( 'Help', 'sendi-api' ); ?>
            </a>
        </p>
    </div>
    
    <!-- Merchant Info Summary -->
    <div class="sendi-api-card">
        <h2><?php esc_html_e( 'Merchant Information', 'sendi-api' ); ?></h2>
        <?php
        $livraison_merchant_name = get_option( 'livraison_api_merchant_name', '' );
        $livraison_merchant_phone = get_option( 'livraison_api_merchant_phone', '' );
        $livraison_merchant_email = get_option( 'livraison_api_merchant_email', '' );
        $livraison_pickup_address = get_option( 'livraison_api_pickup_address', '' );
        $livraison_pickup_commune = get_option( 'livraison_api_pickup_commune', '' );
        ?>
        <table class="form-table" style="margin-top: 0;">
            <tr>
                <th><?php esc_html_e( 'Store Name', 'sendi-api' ); ?></th>
                <td>
                    <?php if ( ! empty( $livraison_merchant_name ) ) : ?>
                        <?php echo esc_html( $livraison_merchant_name ); ?>
                    <?php else : ?>
                        <span style="color: #dc3232;"><?php esc_html_e( 'Not configured', 'sendi-api' ); ?></span>
                    <?php endif; ?>
                </td>
            </tr>
            <tr>
                <th><?php esc_html_e( 'Phone', 'sendi-api' ); ?></th>
                <td>
                    <?php if ( ! empty( $livraison_merchant_phone ) ) : ?>
                        <?php echo esc_html( $livraison_merchant_phone ); ?>
                    <?php else : ?>
                        <span style="color: #dc3232;"><?php esc_html_e( 'Not configured', 'sendi-api' ); ?></span>
                    <?php endif; ?>
                </td>
            </tr>
            <tr>
                <th><?php esc_html_e( 'Email', 'sendi-api' ); ?></th>
                <td>
                    <?php if ( ! empty( $livraison_merchant_email ) ) : ?>
                        <?php echo esc_html( $livraison_merchant_email ); ?>
                    <?php else : ?>
                        <span style="color: #dc3232;"><?php esc_html_e( 'Not configured', 'sendi-api' ); ?></span>
                    <?php endif; ?>
                </td>
            </tr>
            <tr>
                <th><?php esc_html_e( 'Pickup Address', 'sendi-api' ); ?></th>
                <td>
                    <?php if ( ! empty( $livraison_pickup_address ) ) : ?>
                        <?php echo esc_html( $livraison_pickup_address ); ?>
                    <?php else : ?>
                        <span style="color: #dc3232;"><?php esc_html_e( 'Not configured', 'sendi-api' ); ?></span>
                    <?php endif; ?>
                </td>
            </tr>
            <tr>
                <th><?php esc_html_e( 'Pickup Commune', 'sendi-api' ); ?></th>
                <td>
                    <?php if ( ! empty( $livraison_pickup_commune ) ) : ?>
                        <?php echo esc_html( $livraison_pickup_commune ); ?>
                    <?php else : ?>
                        <span style="color: #dc3232;"><?php esc_html_e( 'Not configured', 'sendi-api' ); ?></span>
                    <?php endif; ?>
                </td>
            </tr>



<tr>
    <th><?php esc_html_e( 'Delivery Policy', 'sendi-api' ); ?></th>
    <td>
        <?php 
        $livraison_delivery_mode = get_option( 'livraison_api_delivery_mode', 'client_pays' );
		$livraison_free_threshold = floatval( get_option( 'livraison_api_free_threshold', 0 ) );
		$livraison_currency = get_option( 'livraison_api_currency', 'FCFA' );
        
        switch ( $livraison_delivery_mode ) {
            case 'client_pays':
                echo '<span style="color: #1e40af;">👤 ' . esc_html__( 'Customer pays', 'sendi-api' ) . '</span>';
                break;
            case 'merchant_pays':
                echo '<span style="color: #065f46;">🏪 ' . esc_html__( 'Merchant pays (always free)', 'sendi-api' ) . '</span>';
                break;
            case 'threshold':
            if ( $livraison_free_threshold > 0 ) {
                    echo '<span style="color: #92400e;"> ';
/* translators: 1: Formatted threshold amount (e.g., 50,000), 2: Currency code (e.g., FCFA) */
echo sprintf(
	/* translators: 1: Formatted threshold amount (e.g., 50,000), 2: Currency code (e.g., FCFA) */
    esc_html__( 'Free above %1$s %2$s', 'sendi-api' ),
    number_format( $livraison_free_threshold, 0, ',', ' ' ),
    esc_html( $livraison_currency )
);
echo '</span>';
                } else {
                    echo '<span style="color: #dc2626;">⚠️ ' . esc_html__( 'Threshold mode enabled but no threshold set', 'sendi-api' ) . '</span>';
                }
                break;
            default:
                echo '<span style="color: #6b7280;">' . esc_html__( 'Not configured', 'sendi-api' ) . '</span>';
                break;
        }
        ?>
    </td>
</tr>
        </table>
        <p>
            <a href="<?php echo esc_url( admin_url( 'admin.php?page=sendi-api-settings' ) ); ?>"
                class="button">
                <?php esc_html_e( 'Update Information', 'sendi-api' ); ?>
            </a>
        </p>
    </div>
    
    <!-- Recent Logs -->
    <?php
    // Requête SQL préparée pour les logs récents
    $livraison_logs_cache_key = 'livraison_recent_logs';
    $livraison_recent_logs = wp_cache_get( $livraison_logs_cache_key, 'livraison_api' );
    
    if ( false === $livraison_recent_logs ) {
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        // Justification: Requête avec LIMIT sur une table personnalisée. Le cache est déjà
        // implémenté via wp_cache_set() juste en dessous. Aucune API WordPress de haut niveau
        // n'existe pour cette requête spécifique.
        $livraison_recent_logs = $wpdb->get_results(
            $wpdb->prepare(
                "SELECT * FROM {$wpdb->prefix}livraison_api_logs ORDER BY created_at DESC LIMIT %d",
                5
            )
        );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        wp_cache_set( $livraison_logs_cache_key, $livraison_recent_logs, 'livraison_api', 300 );
    }
    
    if ( ! empty( $livraison_recent_logs ) ) :
    ?>
    <div class="sendi-api-card">
        <h2><?php esc_html_e( 'Recent Activity', 'sendi-api' ); ?></h2>
        <table class="wp-list-table widefat fixed striped" style="border: none;">
            <thead>
                <tr>
                    <th><?php esc_html_e( 'Order', 'sendi-api' ); ?></th>
                    <th><?php esc_html_e( 'Course ID', 'sendi-api' ); ?></th>
                    <th><?php esc_html_e( 'Status', 'sendi-api' ); ?></th>
                    <th><?php esc_html_e( 'Date', 'sendi-api' ); ?></th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ( $livraison_recent_logs as $livraison_log ) : ?>
                    <tr>
                        <td>
                            <a href="<?php echo esc_url( admin_url( 'post.php?post=' . (int) $livraison_log->order_id . '&action=edit' ) ); ?>">
                                #<?php echo esc_html( $livraison_log->order_id ); ?>
                            </a>
                        </td>
                        <td>
                            <code><?php echo esc_html( $livraison_log->course_id ); ?></code>
                        </td>
                        <td>
                            <span class="sendi-api-status sendi-api-status-<?php echo esc_attr( $livraison_log->status ); ?>">
                                <?php 
                                // Labels de statut plus lisibles
                                $livraison_status_labels = array(
                                    'sent' => __( 'Sent', 'sendi-api' ),
                                    'assigned' => __( 'Assigned', 'sendi-api' ),
                                    'in_progress' => __( 'In Progress', 'sendi-api' ),
                                    'delivered' => __( 'Delivered', 'sendi-api' ),
                                    'failed' => __( 'Failed', 'sendi-api' ),
                                    'cancelled' => __( 'Cancelled', 'sendi-api' ),
                                    'created' => __( 'Created', 'sendi-api' )
                                );
                                echo esc_html( isset( $livraison_status_labels[ $livraison_log->status ] ) ? $livraison_status_labels[ $livraison_log->status ] : ucfirst( $livraison_log->status ) );
                                ?>
                            </span>
                        </td>
                        <td>
                            <?php 
                            // Formatage de la date avec timezone
                            $livraison_timestamp = strtotime( $livraison_log->created_at );
                            if ( $livraison_timestamp ) {
                                echo esc_html( date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $livraison_timestamp ) );
                            } else {
                                echo esc_html( $livraison_log->created_at );
                            }
                            ?>
                        </td>
                    </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
        <p>
            <a href="<?php echo esc_url( admin_url( 'admin.php?page=sendi-api-logs' ) ); ?>" class="button">
                <?php esc_html_e( 'View All Logs', 'sendi-api' ); ?>
            </a>
        </p>
    </div>
    <?php endif; ?>
</div>