<?php
namespace PayCal\Admin;

defined('ABSPATH') || exit;

use PayCal\Permissions\Access;
use PayCal\Licensing\Gate;
use PayCal\Licensing\LicenseStore;

class Page_Dashboard {
  public static function render(): void {
    Access::enforce('dashboard');

    $data = LicenseStore::get();
    $mods = array_values(array_filter((array) ($data['modules'] ?? [])));
    $license_label = Gate::status_label();
    $license_active = !empty($data['valid']);
    $license_in_grace = $license_label === 'Grace period';
    if (!$license_active) {
      $license_in_grace = false;
    }
    $license_display = $license_active || $license_in_grace ? $license_label : 'לא מחובר';

    $bit_enabled = Gate::has('bit');
    $invoice_settings = get_option('paycal_invoice_settings', []);
    $invoices_enabled = !is_array($invoice_settings) || !isset($invoice_settings['enabled']) || (string) $invoice_settings['enabled'] === 'yes';

    $bit_pending_count = 0;
    if (class_exists('\\WooCommerce') && $bit_enabled && function_exists('wc_get_orders')) {
      $ids = wc_get_orders([
        'status' => ['paycal-bit-pending'],
        'limit' => -1,
        'return' => 'ids',
      ]);
      $bit_pending_count = is_array($ids) ? count($ids) : 0;
    }

    $orders_link = class_exists('\Automattic\WooCommerce\Utilities\OrderUtil') && \Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled()
      ? admin_url('admin.php?page=wc-orders&status=wc-paycal-bit-pending')
      : admin_url('edit.php?post_type=shop_order&post_status=wc-paycal-bit-pending');
    $setup_link = Access::can('setup') ? admin_url('admin.php?page=paycal-setup') : '';
    $market_link = Access::can('bundles') ? admin_url('admin.php?page=paycal-bundles') : '';
    $license_link = Access::can('license') ? admin_url('admin.php?page=paycal-license') : '';
    $bit_link = Access::can('bit') ? admin_url('admin.php?page=paycal-bit') : '';
    $invoice_link = Access::can('invoices') ? admin_url('admin.php?page=paycal-invoices') : '';

    echo '<div class="wrap paycal-wrap">';

    echo '<section class="paycal-header paycal-dashboard-hero">';
    echo '  <div class="paycal-hero-panel">';
    echo '    <div class="paycal-hero-stat">';
    echo '      <span class="paycal-hero-label">רישוי</span>';
    echo '      <strong>' . esc_html($license_in_grace ? 'License status: Grace period' : $license_display) . '</strong>';
    if (!empty($data['expires_at'])) {
      echo '  <small>תוקף עד ' . esc_html($data['expires_at']) . '</small>';
    } elseif ($license_in_grace) {
      echo '  <small>Optional commercial modules are not fully licensed. Core connector and admin access remain available.</small>';
    } else {
      echo '  <small>' . ($license_active ? 'רישיון פעיל במערכת' : 'רישיון מסחרי לא חובר. מודולים שאינם דורשים רישיון ימשיכו לעבוד.') . '</small>';
    }
    echo '    </div>';
    echo '    <div class="paycal-hero-stat">';
    echo '      <span class="paycal-hero-label">מודולים פעילים</span>';
    echo '      <strong>' . esc_html((string) count($mods)) . '</strong>';
    echo '      <small>' . esc_html($mods ? implode(' • ', $mods) : 'עדיין לא הופעלו מודולים') . '</small>';
    echo '    </div>';
    echo '    <div class="paycal-hero-stat">';
    echo '      <span class="paycal-hero-label">Bit Pending</span>';
    echo '      <strong>' . esc_html((string) $bit_pending_count) . '</strong>';
    echo '      <small>הזמנות שממתינות לאישור תשלום</small>';
    echo '    </div>';
    echo '  </div>';
    echo '  <div class="paycal-hero-copy">';
    echo '    <span class="paycal-eyebrow">PAYCAL PLATFORM</span>';
    echo '    <div class="paycal-hero-body">';
    echo '      <div class="paycal-hero-text">';
    echo '        <h1>מרכז הבקרה של PayCal</h1>';
    echo '        <p>סקירה מהירה של רישוי, מודולים פעילים, סטטוס תשלומים ופעולות מהירות לניהול המערכת.</p>';
    echo '        <div class="paycal-hero-actions">';
    if ($setup_link) echo '          <a class="paycal-btn-primary" href="' . esc_url($setup_link) . '">הרץ אשף התקנה</a>';
    if ($market_link) echo '          <a class="paycal-btn-secondary" href="' . esc_url($market_link) . '">Marketplace</a>';
    if ($license_link) echo '          <a class="paycal-btn-secondary" href="' . esc_url($license_link) . '">ניהול רישיון</a>';
    echo '        </div>';
    echo '      </div>';
    echo '      <div class="paycal-hero-dragon" aria-hidden="true">';
    echo '        <img src="' . esc_url(PAYCAL_URL . 'assets/images/paycal-dragon-shield-clean-117.png') . '" alt="">';
    echo '      </div>';
    echo '    </div>';
    echo '  </div>';
    echo '</section>';

    echo '<section class="paycal-stats-grid">';
    echo '  <article class="paycal-stat-card">';
    echo '    <span class="paycal-stat-label">רישוי</span>';
    echo '    <strong class="paycal-stat-value">' . esc_html($license_display) . '</strong>';
    echo '    <p class="paycal-stat-meta">' . ($license_in_grace ? 'Optional commercial modules are not fully licensed. Core connector and admin access remain available.' : (!empty($data['expires_at']) ? 'תוקף עד ' . esc_html($data['expires_at']) : 'רישיון מסחרי לא חובר. מודולים שאינם דורשים רישיון ימשיכו לעבוד.')) . '</p>';
    echo '  </article>';
    echo '  <article class="paycal-stat-card">';
    echo '    <span class="paycal-stat-label">Bit</span>';
    echo '    <strong class="paycal-stat-value">' . ($bit_enabled ? 'פעיל' : 'לא פעיל') . '</strong>';
    echo '    <p class="paycal-stat-meta">ממתינות: ' . esc_html((string) $bit_pending_count) . '</p>';
    echo '  </article>';
    echo '  <article class="paycal-stat-card">';
    echo '    <span class="paycal-stat-label">Invoices</span>';
    echo '    <strong class="paycal-stat-value">' . ($invoices_enabled ? 'פעיל' : 'לא פעיל') . '</strong>';
    echo '    <p class="paycal-stat-meta">' . ($invoices_enabled ? 'מודול חשבוניות זמין' : 'כבוי בהגדרות PayCal') . '</p>';
    echo '  </article>';
    echo '  <article class="paycal-stat-card">';
    echo '    <span class="paycal-stat-label">מערכת</span>';
    echo '    <strong class="paycal-stat-value">' . esc_html($mods ? 'מוכנה לעבודה' : 'דורשת הגדרה') . '</strong>';
    echo '    <p class="paycal-stat-meta">אשף התקנה, רישוי ומודולים במקום אחד</p>';
    echo '  </article>';
    echo '</section>';

    echo '<section class="paycal-dashboard-grid">';
    echo '  <div class="paycal-card paycal-card-main">';
    echo '    <div class="paycal-kpi">';
    echo '      <span class="paycal-pill ' . ($license_active ? 'is-active' : '') . '" data-status="' . ($license_active ? 'active' : 'inactive') . '"><span class="paycal-dot"></span>רישוי: ' . esc_html($license_display) . '</span>';
    echo '      <span class="paycal-pill ' . ($invoices_enabled ? 'is-active' : '') . '" data-status="' . ($invoices_enabled ? 'active' : 'inactive') . '"><span class="paycal-dot"></span>חשבוניות: ' . ($invoices_enabled ? 'פעיל' : 'לא פעיל') . '</span>';
    echo '      <span class="paycal-pill ' . ($bit_enabled ? 'is-active' : '') . '" data-status="' . ($bit_enabled ? 'active' : 'inactive') . '"><span class="paycal-dot"></span>Bit: ' . ($bit_enabled ? 'פעיל' : 'לא פעיל') . '</span>';
    echo '      <span class="paycal-pill"><span class="paycal-dot"></span>מודולים: <strong>' . esc_html((string) count($mods)) . '</strong></span>';
    echo '    </div>';

    echo '    <div class="paycal-module-list">';
    if ($license_link) {
      echo '      <div class="paycal-module-row">';
      echo '        <div><strong>רישוי</strong><span>רישיון מסחרי לא חובר. מודולים שאינם דורשים רישיון ימשיכו לעבוד.</span></div>';
      echo '        <div class="paycal-module-actions"><span class="paycal-badge ' . ($license_active ? 'is-success' : 'is-warning') . '">' . esc_html($license_display) . '</span><a class="paycal-step" href="' . esc_url($license_link) . '">פתח</a></div>';
      echo '      </div>';
    }
    if ($bit_link) {
      echo '      <div class="paycal-module-row">';
      echo '        <div><strong>Bit</strong><span>ניהול הגדרות ותשלומים ממתינים</span></div>';
      echo '        <div class="paycal-module-actions"><span class="paycal-badge ' . ($bit_enabled ? 'is-success' : 'is-muted') . '">' . ($bit_enabled ? 'פעיל' : 'כבוי') . '</span><a class="paycal-step" href="' . esc_url($bit_link) . '">הגדרות Bit</a></div>';
      echo '      </div>';
    }
    if ($invoice_link) {
      echo '      <div class="paycal-module-row">';
      echo '        <div><strong>Invoices</strong><span>הפקת מסמכים וחיבור מודול חשבוניות</span></div>';
      echo '        <div class="paycal-module-actions"><span class="paycal-badge ' . ($invoices_enabled ? 'is-success' : 'is-muted') . '">' . ($invoices_enabled ? 'פעיל' : 'כבוי') . '</span><a class="paycal-step" href="' . esc_url($invoice_link) . '">לחשבוניות</a></div>';
      echo '      </div>';
    }
    echo '    </div>';
    echo '  </div>';

    echo '  <aside class="paycal-side-stack">';
    echo '    <div class="paycal-card">';
    echo '      <div class="paycal-section-head"><div><h2>פעולות מהירות</h2><p class="paycal-muted">הקיצורים השימושיים ביותר להגדרה וניהול.</p></div></div>';
    echo '      <div class="paycal-action-list">';
    if ($setup_link) echo '        <a class="paycal-action-item" href="' . esc_url($setup_link) . '"><strong>אשף התקנה</strong><span>הגדרות ראשונות והכנת המערכת</span></a>';
    if ($market_link) echo '        <a class="paycal-action-item" href="' . esc_url($market_link) . '"><strong>Marketplace</strong><span>ניהול הרחבות ומודולים זמינים</span></a>';
    if ($license_link) echo '        <a class="paycal-action-item" href="' . esc_url($license_link) . '"><strong>License</strong><span>חיבור, עדכון ובדיקת רישיון</span></a>';
    if ($bit_enabled && $bit_link) {
      echo '        <a class="paycal-action-item" href="' . esc_url($orders_link) . '"><strong>Bit Pending</strong><span>מעבר מהיר להזמנות ממתינות</span></a>';
    }
    echo '      </div>';
    echo '    </div>';

    echo '    <div class="paycal-card">';
    echo '      <ul class="paycal-checklist">';
    echo '        <li>' . ($license_active ? 'הרישיון מחובר והמערכת יכולה לטעון מודולים בהתאם.' : 'רישיון נדרש רק להפעלת מודולים מסחריים אופציונליים.') . '</li>';
    echo '        <li>' . ($bit_enabled ? 'מודול Bit זמין. מומלץ לעבור על הזמנות ממתינות.' : 'להפעיל את Bit אם רוצים זרימת תשלומים מהירה בווקומרס.') . '</li>';
    echo '        <li>' . ($invoices_enabled ? 'מודול החשבוניות פעיל וזמין להגדרות.' : 'להפעיל Invoices אם צריך מסמכים וניהול פיננסי מתוך המערכת.') . '</li>';
    echo '      </ul>';
    echo '    </div>';
    echo '  </aside>';
    echo '</section>';

    echo '</div>';
  }
}
