<?php
// Include database connection
include 'config/connexion.php';
session_start(); // Start the session to access user data
// Include log module
require_once 'includes/simple_log.php';
// Initialize variables for form submission
$errors = [
    'client_cin' => '',
    'immat_part1' => '',
    'immat_part2' => '',
    'immat_part3' => '',
    'n_policy' => '',
    'start_date' => '',
    'end_date' => '',
    'montant_to_paie' => '',
    'montant_paye' => '',
    'echeance_date' => '',
    'paiement_ref' => ''
];
$policy_id = null; // Store the ID of the inserted policy

// Récupérer toutes les lettres de la table lettre
$lettres = [];
$queryLettres = "SELECT lettre FROM lettres_table";
$resultLettres = $conn->query($queryLettres);
if ($resultLettres && $resultLettres->num_rows > 0) {
    while ($row = $resultLettres->fetch_assoc()) {
        $lettres[] = $row['lettre'];
    }
}

// Récupérer les modes de paiement depuis paiement_mode_table
$paiement_modes = [];
$queryModes = "SELECT paiement_mode FROM paiement_mode_table";
$resultModes = $conn->query($queryModes);
if ($resultModes && $resultModes->num_rows > 0) {
    while ($row = $resultModes->fetch_assoc()) {
        $paiement_modes[] = $row['paiement_mode'];
    }
}

// Récupérer toutes les marques depuis marques_transport
$marques = [];
$queryMarques = "SELECT marque FROM marques_transport ORDER BY marque ASC";
$resultMarques = $conn->query($queryMarques);
if ($resultMarques && $resultMarques->num_rows > 0) {
    while ($row = $resultMarques->fetch_assoc()) {
        $marques[] = $row['marque'];
    }
}

// Initialiser les variables pour éviter les erreurs "Undefined array key"
$client_cin = '';
$policy_category = 'V'; // Par défaut Véhicule
$immat_part1 = '';
$immat_part2 = '';
$immat_part3 = '';
$immatriculation = '';
$n_policy = '';
$start_date = '';
$end_date = '';
$montant_to_paie = '';
$montant_paye = '';
$marque = '';
$client_name = '';
$paiement_mode = '';
$paiement_ref = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $client_cin = trim($_POST['client_cin'] ?? '');
    $policy_category = trim($_POST['policy_category'] ?? 'V'); // Par défaut Véhicule
    $immat_part1 = trim($_POST['immat_part1'] ?? '');
    $immat_part2 = trim($_POST['immat_part2'] ?? '');
    $immat_part3 = trim($_POST['immat_part3'] ?? '');
    $n_policy = trim($_POST['n_policy'] ?? '');
    $start_date = trim($_POST['start_date'] ?? '');
    $end_date = trim($_POST['end_date'] ?? '');
    $montant_to_paie = trim($_POST['montant_to_paie'] ?? '');
    $montant_paye = trim($_POST['montant_paye'] ?? '');
    $marque = trim($_POST['marque'] ?? '');
    $client_name = '';
    $paiement_mode = strtoupper(trim($_POST['paiement_mode'] ?? ''));
    $paiement_ref = trim($_POST['paiement_ref'] ?? '');
    $paiement_statut = 0;
    if ($paiement_mode === 'ESPECE') {
        $paiement_statut = 1;
    }

    // Déterminer l'immatriculation selon la catégorie
    if ($policy_category === 'V') {
        // Combine the three parts of the immatriculation (nouveau format: part3-part2-part1)
        $immatriculation = $immat_part3 . '-' . $immat_part2 . '-' . $immat_part1;
    } else if ($policy_category === 'RD') {
        // Pour RD, insérer le type de police dans l'immatriculation
        $immatriculation = trim($_POST['policy_type'] ?? '');
    } else {
        $immatriculation = '';
    }

    // Validate client CIN
    if (empty($client_cin)) {
        $errors['client_cin'] = "Le CIN du client est obligatoire.";
    } else {
        $query = "SELECT client_name FROM clients_table WHERE client_cin = ?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("s", $client_cin);
        $stmt->execute();
        $result = $stmt->get_result();
        if ($result->num_rows === 0) {
            $errors['client_cin'] = "Le CIN n'existe pas dans la table des clients.";
        } else {
            $row = $result->fetch_assoc();
            $client_name = $row['client_name']; // Retrieve client name
        }
        $stmt->close();
    }    // Validate immatriculation parts - uniquement pour les polices Véhicule
    if ($policy_category === 'V') {
        if (empty($immat_part1)) {
            $errors['immat_part1'] = "La première partie de l'immatriculation est obligatoire.";
        }
        if (empty($immat_part2)) {
            $errors['immat_part2'] = "La deuxième partie de l'immatriculation est obligatoire.";
        }
        if (empty($immat_part3)) {
            $errors['immat_part3'] = "La troisième partie de l'immatriculation est obligatoire.";
        }
    } else {
        // Pour RD, vider les parties d'immatriculation et la marque
        $immat_part1 = '';
        $immat_part2 = '';
        $immat_part3 = '';
        $marque = '';
        // L'immatriculation est déjà définie plus haut comme le type de police
    }

    // Validate policy number
    if (empty($n_policy)) {
        $errors['n_policy'] = "Le numéro de police est obligatoire.";
    } else {
        $query = "SELECT id FROM policy_table WHERE n_policy = ?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("s", $n_policy);
        $stmt->execute();
        $result = $stmt->get_result();
        if ($result->num_rows > 0) {
            $errors['n_policy'] = "Le numéro de police existe déjà.";
        }
        $stmt->close();
    }

    // Validate start date
    if (empty($start_date)) {
        $errors['start_date'] = "La date de début est obligatoire.";
    }

    // Validate end date
    if (empty($end_date)) {
        $errors['end_date'] = "La date de fin est obligatoire.";
    } elseif (!empty($start_date) && $end_date <= $start_date) {
        $errors['end_date'] = "La date de fin doit être supérieure à la date de début.";
    }

    // Validate montant to pay - doit être un nombre décimal
    if (empty($montant_to_paie)) {
        $errors['montant_to_paie'] = "Le montant à payer est obligatoire.";
    } elseif (!is_numeric($montant_to_paie)) {
        $errors['montant_to_paie'] = "Le montant doit être un nombre.";
    } else {
        // Formater avec 2 décimales
        $montant_to_paie = number_format((float)$montant_to_paie, 2, '.', '');
    }    // Validate montant payé - n'est pas obligatoire
    if (!empty($montant_paye)) {
        if (!is_numeric($montant_paye)) {
            $errors['montant_paye'] = "Le montant payé doit être un nombre.";
        } else {
            // Formater avec 2 décimales
            $montant_paye = number_format((float)$montant_paye, 2, '.', '');
        }
    } else {
        $montant_paye = 0; // Si vide, considérer comme 0
    }

    // Calculer le reste à payer
    $reste_a_payer = 0;
    if (is_numeric($montant_to_paie) && is_numeric($montant_paye)) {
        $reste_a_payer = max(0, $montant_to_paie - $montant_paye);
        $reste_a_payer = number_format($reste_a_payer, 2, '.', '');
    }    // Validation du mode de paiement - obligatoire seulement si un montant est payé
    if ($montant_paye > 0) {
        if (empty($paiement_mode)) {
            $errors['paiement_mode'] = "Le mode de paiement est obligatoire si un montant est payé.";
        }
        // Si le mode n'est pas ESPECE et n'est pas VIREMENT BANCAIRE, paiement_ref obligatoire
        if ($paiement_mode && !in_array(strtoupper($paiement_mode), ['ESPECE', 'VIREMENT BANCAIRE']) && empty($paiement_ref)) {
            $errors['paiement_ref'] = "Le numéro de référence est obligatoire pour ce mode de paiement.";
        }
        
        // Validation de la date d'échéance - obligatoire pour CHEQUE et EFFET
        if ($paiement_mode && in_array(strtoupper($paiement_mode), ['CHEQUE', 'EFFET'])) {
            $echeance_date = trim($_POST['echeance_date'] ?? '');
            if (empty($echeance_date)) {
                $errors['echeance_date'] = "La date d'échéance est obligatoire pour les paiements par chèque ou effet.";
            }
        }
    }

    // Insert the policy if no validation errors
    if (!array_filter($errors)) {
        // Récupérer le nom de l'utilisateur actuel depuis la session
        $agent = isset($_SESSION['user_name']) ? $_SESSION['user_name'] : 'Inconnu';        // Ne pas insérer paiement_mode et paiement_ref dans policy_table
        $insertQuery = "INSERT INTO policy_table (client_cin, client_name, immatriculation, n_policy, start_date, end_date, montant_to_paie, montant_paye, total_reste, agent, policy_type, marque, policy_category) 
                        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        $stmt = $conn->prepare($insertQuery);
        $stmt->bind_param(
            "sssssssddssss",
            $client_cin,
            $client_name,
            $immatriculation,
            $n_policy,
            $start_date,
            $end_date,
            $montant_to_paie,
            $montant_paye,
            $reste_a_payer,
            $agent,
            $_POST['policy_type'],
            $marque,
            $policy_category
        );        if ($stmt->execute()) {
            $policy_id = $conn->insert_id; // Get the ID of the inserted policy
            
            // Enregistrer la création de la police dans le log
            logPolicyCreation($n_policy, $client_cin);
            
            // Insérer le paiement dans receipts_table seulement si un montant a été payé
            $receipt_number = null;            if ($montant_paye > 0) {
                $receipt_number = 'R-' . date('Ymd') . '-' . sprintf('%04d', mt_rand(1, 9999));
                $now = date('Y-m-d H:i:s');
                $echeance_date = trim($_POST['echeance_date'] ?? null);
                
                // Si le paiement est en espèce ou virement bancaire, la date d'échéance est le même jour
                if (in_array(strtoupper($paiement_mode), ['ESPECE', 'VIREMENT BANCAIRE'])) {
                    $echeance_date = date('Y-m-d'); // Date du jour
                }

                $insertReceipt = $conn->prepare("INSERT INTO receipts_table (
                    receipt_number, policy_number, client_cin, client_name, immatriculation, montant_total, montant_paye, reste_a_payer, agent, date_creation, paiement_mode, paiement_ref, paiement_statut, echeance_date
                ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                $insertReceipt->bind_param(
                    "ssssssddssssis",
                    $receipt_number,
                    $n_policy,
                    $client_cin,
                    $client_name,
                    $immatriculation,
                    $montant_to_paie,
                    $montant_paye,
                    $reste_a_payer,
                    $agent,
                    $now,
                    $paiement_mode,
                    $paiement_ref,
                    $paiement_statut,
                    $echeance_date
                );                $insertReceipt->execute();
                $insertReceipt->close();                // Enregistrer le paiement dans le log global
                logPayment($n_policy, $montant_paye, $paiement_mode, $paiement_ref, $receipt_number);
            }            // Store these values in session for the receipt (ajouter receipt_number)
            $_SESSION['receipt_data'] = [
                'policy_id' => $policy_id,
                'client_cin' => $client_cin,
                'client_name' => $client_name,
                'immatriculation' => $immatriculation,
                'n_policy' => $n_policy,
                'start_date' => $start_date,
                'end_date' => $end_date,
                'montant_to_paie' => $montant_to_paie,
                'montant_paye' => $montant_paye,
                'reste_a_payer' => $reste_a_payer,
                'agent' => $agent,
                'date_creation' => date('Y-m-d H:i:s'),
                'receipt_number' => $receipt_number // <-- garder le numéro de reçu
            ];

            // Redirection différente selon si un paiement a été effectué
            if ($receipt_number) {
                // Redirection vers recu.php si un paiement a été fait
                header('Location: recu.php?receipt_number=' . urlencode($receipt_number));
            } else {
                // Redirection vers la liste des polices si aucun paiement
                $_SESSION['success_message'] = "Police créée avec succès (N° $n_policy). Aucun paiement effectué.";
                header('Location:policys_table.php');
            }
            exit;
        } else {
            $errors['client_cin'] = "Erreur lors de l'ajout de la police.";
        }
        $stmt->close();
    }
}

// Récupérer les parties de l'immatriculation s'ils existent (format: part3-part2-part1)
// mais seulement si elles n'ont pas déjà été définies via POST
if (empty($immat_part1) && empty($immat_part2) && empty($immat_part3) && !empty($immatriculation)) {
    $immat_parts = explode('-', $immatriculation);
    $immat_part3 = isset($immat_parts[0]) ? $immat_parts[0] : ''; // Premier élément = part3 (chiffres longs)
    $immat_part2 = isset($immat_parts[1]) ? $immat_parts[1] : ''; // Deuxième élément = part2 (lettre)
    $immat_part1 = isset($immat_parts[2]) ? $immat_parts[2] : ''; // Troisième élément = part1 (chiffres courts)
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
  <?php include 'includes/head.php'; ?>
  <!-- Select2 CSS -->
  <link href="vendor/select2/dist/css/select2.min.css" rel="stylesheet">  <!-- Styles pour l'immatriculation -->
  <style>
  .immat-group {
    display: flex;
    gap: 10px;
  }
  .immat-part {
    flex: 1;
    text-align: center;
  }
  
  /* Amélioration des boutons radio */
  .form-check-label {
    cursor: pointer;
    padding: 8px 15px;
    border-radius: 20px;
    transition: all 0.3s ease;
    border: 2px solid transparent;
  }
  
  .form-check-input:checked + .form-check-label {
    background-color: #e3f2fd;
    border-color: #2196f3;
    font-weight: 600;
  }
  
  .form-check-label:hover {
    background-color: #f5f5f5;
  }
  </style>
</head>

<body id="page-top">
  <div id="wrapper">
    <!-- Sidebar -->
 <?php include 'includes/sidebar.php'; ?>
    <!-- Sidebar -->

    <div id="content-wrapper" class="d-flex flex-column">
      <div id="content">
        <!-- TopBar -->
        <?php include 'includes/topbar.php'; ?>
        <!-- Topbar -->

        <!-- Container Fluid-->
        <div class="container-fluid" id="container-wrapper">
          <div class="d-sm-flex align-items-center justify-content-between mb-4">
            <h1 class="h3 mb-0 text-gray-800">Ajouter une nouvelle police</h1>
            <ol class="breadcrumb">
              <li class="breadcrumb-item"><a href="./">Accueil</a></li>
              <li class="breadcrumb-item">Polices</li>
              <li class="breadcrumb-item active" aria-current="page">Ajouter une police</li>
            </ol>
          </div>

          <div class="row">
            <div class="col-lg-6">
              <!-- Form -->
              <div class="card mb-4">
                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                  <h6 class="m-0 font-weight-bold text-primary">Formulaire de nouvelle police</h6>
                </div>                <div class="card-body">
                  <form method="POST" action="new_policy.php">                    <!-- Choix du type de police V/RD -->
                    <div class="form-group">
                      <label>Type de police</label>
                      <div class="form-check-inline">
                        <input class="form-check-input" type="radio" name="policy_category" id="policy_v" value="V" <?php echo (!empty($_POST['policy_category']) && $_POST['policy_category'] === 'V') || empty($_POST['policy_category']) ? 'checked' : ''; ?>>
                        <label class="form-check-label" for="policy_v">
                          <i class="fas fa-car text-info mr-1"></i>Véhicule (V)
                        </label>
                      </div>
                      <div class="form-check-inline ml-3">
                        <input class="form-check-input" type="radio" name="policy_category" id="policy_rd" value="RD" <?php echo (!empty($_POST['policy_category']) && $_POST['policy_category'] === 'RD') ? 'checked' : ''; ?>>
                        <label class="form-check-label" for="policy_rd">
                          <i class="fas fa-shield-alt text-warning mr-1"></i>Risque Divers (RD)
                        </label>
                      </div>
                    </div><div class="form-group">
                          <label for="client_cin">CIN du client</label>
                          <select class="form-control select2-client" id="client_cin" name="client_cin" required>
                              <option value="">-- Sélectionner un client --</option>
                              <?php
                              // Récupérer tous les clients depuis la table clients_table
                              $sql_clients = "SELECT client_cin, client_name FROM clients_table ORDER BY client_name ASC";
                              $res_clients = $conn->query($sql_clients);
                              if ($res_clients) {
                                  while ($row_client = $res_clients->fetch_assoc()) {
                                      $selected = (!empty($_POST['client_cin']) && $_POST['client_cin'] === $row_client['client_cin']) ? 'selected' : '';
                                      echo '<option value="' . htmlspecialchars($row_client['client_cin']) . '" ' . $selected . '>' . 
                                           htmlspecialchars($row_client['client_name']) . ' (' . htmlspecialchars($row_client['client_cin']) . ')</option>';
                                  }
                              }
                              ?>
                          </select>
                          <?php if ($errors['client_cin']): ?>
                              <small class="text-danger"><?php echo $errors['client_cin']; ?></small>
                          <?php endif; ?>
                          <div id="client-policies-count" class="mt-2 text-info" style="font-weight:600;"></div>
                      </div>                      <div class="form-group">
                          <label for="n_policy">Numéro de police</label>
                          <input type="text" class="form-control" id="n_policy" name="n_policy" required 
                                 value="<?php if(!empty($n_policy)){ echo htmlspecialchars($n_policy);} ?>">
                          <?php if ($errors['n_policy']): ?>
                              <small class="text-danger"><?php echo $errors['n_policy']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group">
                          <label for="policy_type">Type de police</label>
                          <select class="form-control" id="policy_type" name="policy_type" required>
                              <option value="">-- Sélectionner --</option>
                              <?php
                              // Récupérer les types de police avec leur risque depuis la table policy_type
                              $sql_types = "SELECT type, risque FROM policy_type ORDER BY type ASC";
                              $res_types = $conn->query($sql_types);
                              if ($res_types) {
                                  while ($row_type = $res_types->fetch_assoc()) {
                                      $selected = (!empty($_POST['policy_type']) && $_POST['policy_type'] === $row_type['type']) ? 'selected' : '';
                                      echo '<option value="' . htmlspecialchars($row_type['type']) . '" data-risque="' . htmlspecialchars($row_type['risque']) . '" ' . $selected . '>' . htmlspecialchars($row_type['type']) . '</option>';
                                  }
                              }
                              ?>
                          </select>
                      </div><!-- Champs spécifiques aux véhicules (masqués pour RD) -->
                      <div id="vehicle_fields" class="vehicle-only">                        <div class="form-group">
                            <label for="marque">Marque du véhicule</label>
                            <select class="form-control select2-marque" id="marque" name="marque">
                                <option value="">-- Sélectionner une marque --</option>
                                <?php foreach($marques as $marque_item): ?>
                                    <option value="<?php echo htmlspecialchars($marque_item); ?>" <?php if(!empty($marque) && $marque === $marque_item) echo 'selected'; ?>>
                                        <?php echo htmlspecialchars($marque_item); ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                        </div>                        <div class="form-group">
                            <label>Immatriculation</label>
                            <div class="immat-group">
                                <div class="immat-part">
                                <input type="text" class="form-control" id="immat_part3" name="immat_part3" placeholder="123456" maxlength="15" value="<?php echo htmlspecialchars($immat_part3); ?>">
                                  <?php if ($errors['immat_part3']): ?>
                                      <small class="text-danger"><?php echo $errors['immat_part3']; ?></small>
                                  <?php endif; ?>
                                </div>
                                <div class="immat-part">
                                  <select class="form-control" id="immat_part2" name="immat_part2">
                                      <option value="" disabled <?php if(empty($immat_part2)) echo 'selected'; ?>>Lettre</option>
                                      <?php foreach($lettres as $lettre): ?>
                                          <option value="<?php echo htmlspecialchars($lettre); ?>" <?php if($immat_part2 === $lettre) echo 'selected'; ?>
                                              ><?php echo htmlspecialchars($lettre); ?>
                                          </option>
                                      <?php endforeach; ?>
                                  </select>
                                  <?php if ($errors['immat_part2']): ?>
                                      <small class="text-danger"><?php echo $errors['immat_part2']; ?></small>
                                  <?php endif; ?>
                                </div>
                                <div class="immat-part">
                                  <input type="text" class="form-control" id="immat_part1" name="immat_part1" placeholder="1" maxlength="5" value="<?php echo htmlspecialchars($immat_part1); ?>">
                                  <?php if ($errors['immat_part1']): ?>
                                      <small class="text-danger"><?php echo $errors['immat_part1']; ?></small>
                                  <?php endif; ?>
                                </div>
                            </div>
                        </div>                      </div>                      <div class="form-group">
                          <label for="start_date">Date de début</label>
                          <input type="date" class="form-control" id="start_date" name="start_date" required 
                                 value="<?php if(!empty($start_date)){ echo htmlspecialchars($start_date);} ?>">
                          <?php if ($errors['start_date']): ?>
                              <small class="text-danger"><?php echo $errors['start_date']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group">
                          <label for="end_date">Date de fin</label>
                          <input type="date" class="form-control" id="end_date" name="end_date" required 
                                 value="<?php if(!empty($end_date)){ echo htmlspecialchars($end_date);} ?>">
                          <?php if ($errors['end_date']): ?>
                              <small class="text-danger"><?php echo $errors['end_date']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group">
                          <label for="montant_to_paie">Montant à payer</label>
                          <input type="number" step="0.01" min="0" class="form-control" id="montant_to_paie" name="montant_to_paie" required 
                                 value="<?php if(!empty($montant_to_paie)){ echo htmlspecialchars($montant_to_paie);} ?>">
                          <?php if ($errors['montant_to_paie']): ?>
                              <small class="text-danger"><?php echo $errors['montant_to_paie']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group">
                          <label for="montant_paye">Montant payé <small class="text-muted">(optionnel)</small></label>
                          <input type="number" step="0.01" min="0" class="form-control" id="montant_paye" name="montant_paye" 
                                 value="<?php if(!empty($montant_paye)){ echo htmlspecialchars($montant_paye);} ?>">
                          <?php if ($errors['montant_paye']): ?>
                              <small class="text-danger"><?php echo $errors['montant_paye']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group">
                          <label>Reste à payer</label>
                          <span id="reste_a_payer" class="form-control-plaintext text-primary">0.00</span>
                      </div>                      <div class="form-group">
                          <label for="paiement_mode">Mode de paiement <small class="text-muted">(obligatoire si montant payé > 0)</small></label>
                          <select class="form-control" id="paiement_mode" name="paiement_mode">
                              <option value="" disabled selected>Choisir le mode de paiement</option>
                              <?php foreach ($paiement_modes as $mode): ?>
                                  <option value="<?php echo htmlspecialchars($mode); ?>" <?php if (!empty($paiement_mode) && $paiement_mode === $mode) echo 'selected'; ?>>
                                      <?php echo htmlspecialchars($mode); ?>
                                  </option>
                              <?php endforeach; ?>
                          </select>
                          <?php if (!empty($errors['paiement_mode'])): ?>
                              <small class="text-danger"><?php echo $errors['paiement_mode']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group" id="paiement_ref_group" style="display:none;">
                          <label for="paiement_ref">Numéro de référence (chèque/effet...)</label>
                          <input type="text" class="form-control" id="paiement_ref" name="paiement_ref" value="<?php echo htmlspecialchars($paiement_ref ?? ''); ?>">
                          <?php if (!empty($errors['paiement_ref'])): ?>
                              <small class="text-danger"><?php echo $errors['paiement_ref']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="form-group" id="echeance_date_group" style="display:none;">
                          <label for="echeance_date">Date d'échéance</label>
                          <input type="date" class="form-control" id="echeance_date" name="echeance_date" value="<?php echo htmlspecialchars($_POST['echeance_date'] ?? ''); ?>">
                          <?php if (!empty($errors['echeance_date'])): ?>
                              <small class="text-danger"><?php echo $errors['echeance_date']; ?></small>
                          <?php endif; ?>
                      </div>                      <div class="d-flex justify-content-between">
                          <button type="submit" class="btn btn-primary">Ajouter</button>
                          <a href="index.php" class="btn btn-secondary">Annuler</a>
                      </div>
                  </form>
                  <?php /* Connection is managed globally; do not close it here. */ ?>
                </div>
              </div>
            </div>
          </div>
          <!--Row-->
        </div>
        <!---Container Fluid-->
      </div>
      <!-- Footer -->
     <?php include ('includes/footer.php'); ?>
      <!-- Footer -->
    </div>
  </div>

  <!-- Include required scripts -->
  <script src="vendor/jquery/jquery.min.js"></script>
  <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
  <script src="vendor/jquery-easing/jquery.easing.min.js"></script>
  <script src="vendor/select2/dist/js/select2.min.js"></script>
  <script src="js/ruang-admin.min.js"></script>  <script>
    $(document).ready(function () {
      // Afficher le nombre de polices en cours pour le client sélectionné
      $('#client_cin').on('change', function() {
        var clientCin = $(this).val();
        if (clientCin) {
          $.ajax({
            url: 'get_client_policies_count.php',
            method: 'POST',
            data: { client_cin: clientCin },
            success: function(response) {
              $('#client-policies-count').html('Nombre de Polices En cours : ' + response);
            },
            error: function() {
              $('#client-policies-count').html('Impossible de récupérer le nombre de polices.');
            }
          });
        } else {
          $('#client-policies-count').html('');
        }
      });
      // Si un client est déjà sélectionné au chargement, afficher le nombre
      if ($('#client_cin').val()) {
        $('#client_cin').trigger('change');
      }
      $('.select2').select2({
        placeholder: "Choisir un client",
        allowClear: true
      });

      // Initialiser Select2 pour le champ marque avec recherche
      $('.select2-marque').select2({
        placeholder: "Rechercher une marque...",
        allowClear: true,
        width: '100%'
      });

      // Auto-format immatriculation inputs
$('#immat_part1').on('input', function() {
  this.value = this.value.replace(/[^0-9]/g, '');
});

$('#immat_part3').on('input', function() {
  this.value = this.value.replace(/[^0-9]/g, '');
});

$('#montant_to_paie, #montant_paye').on('input', function() {
  calculateRemaining();
});

function calculateRemaining() {
  const montantTotal = parseFloat($('#montant_to_paie').val()) || 0;
  const montantPaye = parseFloat($('#montant_paye').val()) || 0;
  const reste = montantTotal - montantPaye;
  $('#reste_a_payer').text(reste > 0 ? reste.toFixed(2) : '0.00');
}

      // Auto-jump to next field when max length is reached
      $('#immat_part1').on('keyup', function() {
        if (this.value.length === 3) {
          $('#immat_part2').focus();
        }
      });
      
      $('#immat_part2').on('change', function() {
        $('#immat_part3').focus();
      });      // Initialiser Select2 pour le champ client avec recherche
      $('.select2-client').select2({
        placeholder: "-- Sélectionner un client --",
        allowClear: true,
        width: '100%'
      });      // Afficher/cacher le champ paiement_ref selon le mode de paiement      // Gestion dynamique de l'obligation du mode de paiement
      function togglePaiementModeRequired() {
        var montantPaye = parseFloat($('#montant_paye').val()) || 0;
        var paiementModeField = $('#paiement_mode');
        
        if (montantPaye > 0) {
          paiementModeField.attr('required', 'required');
          paiementModeField.closest('.form-group').find('label').html('Mode de paiement <span class="text-danger">*</span>');
        } else {
          paiementModeField.removeAttr('required');
          paiementModeField.closest('.form-group').find('label').html('Mode de paiement <small class="text-muted">(obligatoire si montant payé > 0)</small>');
          // Vider aussi les champs de paiement si montant = 0
          paiementModeField.val('');
          $('#paiement_ref').val('');
          $('#echeance_date').val('');
          $('#paiement_ref_group').hide();
          $('#echeance_date_group').hide();
        }
      }
      
      $('#montant_paye').on('input change', function() {
        calculateRemaining();
        togglePaiementModeRequired();
      });
      
      // Appel initial
      togglePaiementModeRequired();      // Logique pour masquer/afficher les champs véhicule selon le type de police V/RD
      function toggleVehicleFields() {
        var policyCategory = $('input[name="policy_category"]:checked').val();
        var vehicleFields = $('#vehicle_fields');
        var marqueField = $('#marque');
        var immatFields = ['#immat_part1', '#immat_part2', '#immat_part3'];
        var policyTypeSelect = $('#policy_type');
        
        // Filtrer les options de type de police selon la catégorie
        filterPolicyTypes(policyCategory);
        
        if (policyCategory === 'RD') {
          // Masquer les champs véhicule pour Risque Divers
          vehicleFields.hide();
          // Supprimer l'attribut required des champs masqués
          marqueField.removeAttr('required');
          $.each(immatFields, function(index, fieldId) {
            $(fieldId).removeAttr('required');
          });
        } else {
          // Afficher les champs véhicule pour les polices Véhicule
          vehicleFields.show();
          // Remettre l'attribut required pour les champs véhicule
          // Note: La marque n'est pas obligatoire mais l'immatriculation oui pour les véhicules
          $.each(immatFields, function(index, fieldId) {
            $(fieldId).attr('required', 'required');
          });
        }
      }
      
      // Fonction pour filtrer les types de police selon la catégorie V/RD
      function filterPolicyTypes(selectedCategory) {
        var policyTypeSelect = $('#policy_type');
        var currentValue = policyTypeSelect.val();
        
        // Sauvegarder toutes les options si ce n'est pas déjà fait
        if (!policyTypeSelect.data('all-options')) {
          policyTypeSelect.data('all-options', policyTypeSelect.html());
        }
        
        // Restaurer toutes les options
        policyTypeSelect.html(policyTypeSelect.data('all-options'));
        
        // Filtrer selon la catégorie sélectionnée
        policyTypeSelect.find('option').each(function() {
          var option = $(this);
          var risque = option.data('risque');
          
          // Garder l'option par défaut
          if (option.val() === '') {
            return;
          }
          
          // Filtrer selon la catégorie
          if (selectedCategory === 'V' && risque !== 'V') {
            option.remove();
          } else if (selectedCategory === 'RD' && risque !== 'RD') {
            option.remove();
          }
        });
        
        // Réinitialiser la sélection si l'option précédente n'est plus disponible
        if (currentValue && !policyTypeSelect.find('option[value="' + currentValue + '"]').length) {
          policyTypeSelect.val('');
        }
      }
      
      // Écouter les changements de type de police
      $('input[name="policy_category"]').on('change', toggleVehicleFields);
      
      // Appel initial pour l'état par défaut
      toggleVehicleFields();      function togglePaiementRef() {
        var mode = $('#paiement_mode').val();
        var paiementRefField = $('#paiement_ref');
        
        if (mode && !['ESPECE', 'VIREMENT BANCAIRE'].includes(mode.toUpperCase())) {
          $('#paiement_ref_group').show();
          // Rendre obligatoire pour les modes autres qu'espèce et virement bancaire
          paiementRefField.attr('required', 'required');
          paiementRefField.closest('.form-group').find('label').html('Numéro de référence (chèque/effet...) <span class="text-danger">*</span>');
        } else {
          $('#paiement_ref_group').hide();
          $('#paiement_ref').val('');
          // Supprimer l'obligation pour espèce et virement bancaire
          paiementRefField.removeAttr('required');
          paiementRefField.closest('.form-group').find('label').html('Numéro de référence (chèque/effet...)');
        }
      }
      $('#paiement_mode').on('change', togglePaiementRef);
      // Appel initial pour afficher si besoin lors du rechargement (ex: validation échouée)
      togglePaiementRef();      // JavaScript to toggle the visibility of the date of echeance field
      function toggleEcheanceDate() {
        var mode = $('#paiement_mode').val();
        var echeanceDateField = $('#echeance_date');
        
        if (mode && (mode.toUpperCase() === 'CHEQUE' || mode.toUpperCase() === 'EFFET')) {
            $('#echeance_date_group').show();
            // Rendre obligatoire pour chèque et effet
            echeanceDateField.attr('required', 'required');
            echeanceDateField.closest('.form-group').find('label').html('Date d\'échéance <span class="text-danger">*</span>');
        } else {
            $('#echeance_date_group').hide();
            $('#echeance_date').val('');
            // Supprimer l'obligation pour les autres modes
            echeanceDateField.removeAttr('required');
            echeanceDateField.closest('.form-group').find('label').html('Date d\'échéance');
            
            // Si c'est en espèce ou virement bancaire, définir la date d'échéance à aujourd'hui automatiquement
            if (mode && ['ESPECE', 'VIREMENT BANCAIRE'].includes(mode.toUpperCase())) {
                var today = new Date().toISOString().split('T')[0];
                $('#echeance_date').val(today);
            }
        }
      }
      $('#paiement_mode').on('change', toggleEcheanceDate);
      toggleEcheanceDate(); // Initial call on page load
    });
  </script>
</body>

</html>