<?php
// app/model/api/type_avancement.php

// Chi2at l'entête bach y-fhem le navigateur bli hadchi rah JSON
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');

// Gestion dial la méthode OPTIONS (Pré-vérification AJAX)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Inclusion dial le Service li msa77a7
require_once __DIR__ . '/../service/TypeDemandeDocumentService.php';
$service = new TypeDemandeDocumentService();

// Détermination dial l'action (soit f $_GET soit par défaut search)
$action = $_GET['action'] ?? 'search';
$id = isset($_GET['id']) ? (int)$_GET['id'] : null;

switch ($action) {

    // 1. FILTRER / CHERCHER
    case 'search':
        $searchData = [
            'code' => $_GET['code'] ?? '',
            'libelle' => $_GET['libelle'] ?? ''
            // Hna 7iydna status hit makaynch f la table SQL dialek
        ];
        $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
        $perPage = isset($_GET['per_page']) ? (int)$_GET['per_page'] : 10;

        $result = $service->search($searchData, $page, $perPage);
        echo json_encode([
            'success' => true,
            'data' => $result
        ]);
        break;

    // 2. GET SINGLE TYPE (Détails ou Edition)
    case 'get':
        if (!$id) {
            throw new Exception("L'identifiant (ID) est requis.");
        }
        $type = $service->getTypeDocument($id);
        if (!$type) {
            throw new Exception("Type document introuvable.");
        }
        echo json_encode([
            'success' => true,
            'data' => $type
        ]);
        break;

    // 3. ENREGISTRER (AJOUTER)
    case 'create':
    case 'post': // Fallback au cas où le JavaScript envoie sans action f URL
        // Récupérer les données envoyées f le Body en JSON
        $input = json_decode(file_get_contents('php://input'), true);
        if (!$input) {
            throw new Exception("Données invalides ou vides.");
        }

        $newId = $service->createTypeDemandeDocument($input);
        echo json_encode([
            'success' => true,
            'message' => "Le type de document a été ajouté avec succès !",
            'id' => $newId
        ]);
        break;

    // 4. MODIFIER
    case 'update':
        if (!$id) {
            throw new Exception("L'identifiant (ID) est requis pour la modification.");
        }
        $input = json_decode(file_get_contents('php://input'), true);
        if (!$input) {
            throw new Exception("Données de modification invalides.");
        }

        $service->updateTypeDemandeDocument($id, $input);
        echo json_encode([
            'success' => true,
            'message' => "La configuration a été modifiée avec succès !"
        ]);
        break;

    // 5. SUPPRIMER
    case 'delete':
        if (!$id) {
            throw new Exception("L'identifiant (ID) est requis pour la suppression.");
        }
        $service->deleteTypeDemandeDocument($id);
        echo json_encode([
            'success' => true,
            'message' => "Le type de document a été supprimé avec succès !"
        ]);
        break;

    default:
        throw new Exception("Action '$action' non autorisée.");
}


?>
