<?php

if (!$kirby->user()) {
  return json_encode([
    'page' => $genericData,
    'user' => []
  ]);
}

function getProjectData($project, $user)
{
    // Utiliser getNotificationsLight() avec cache pour optimiser les performances
    $notifications = [];
    try {
        $notifications = $project->getNotificationsLight($user);
    } catch (\Throwable $e) {
        error_log("Error getting notifications for project {$project->uri()}: " . $e->getMessage());
        $notifications = [];
    }

    $data = [
        'title'                  => $project->title()->value(),
        'url'                    => $project->url(),
        'uri'                    => '/' . $project->uri(),
        'modified'               => $project->modified('Y-MM-d'),
        'currentStep'            => $project->currentStep()->value(),
        'status'                 => $project->status(),
        'logo'                   => $project->client()->toPage() ? $project->client()->toPage()->logo()->toFile()->url() : '',
        'steps'                  => $project->getSteps(),
        'notifications'          => $notifications,
        'uuid'                   => (string) $project->uuid(),
        'slug'                   => (string) $project->slug(),
        'isDTLEnabled'           => $project->isDTLEnabled()->isTrue(),
        'hasOptimizationRequest' => $project->hasOptimizationRequest()->isTrue(),
    ];

    if ($project->isDTLEnabled()) {
        $data['designToLight'] = processDTLProposals($project);
    }

    return $data;
}

$currentUser = $kirby->user();

try {
    $children = $currentUser->role() == 'admin'
        ? $page->childrenAndDrafts()->map(fn($project) => getProjectData($project, $currentUser))->values()
        : $currentUser->projects()->toPages()->map(fn($project) => getProjectData($project, $currentUser))->values();
} catch (\Throwable $th) {
    throw new Exception($th->getMessage() . ' line ' . $th->getLine() . ' in file ' . $th->getFile(), 1);
    $children = [];
}

$specificData = [
  'children' => $children,
];

$pageData = array_merge($genericData, $specificData);

echo json_encode([
  'page' => $pageData,
  'user' => $userData,
]);
