<?php
set_time_limit(0);

return [
  'pattern' => '/refresh-cache.json',
  'method' => 'POST',
  'action' => function() {
    $json = file_get_contents('php://input');
    $data = json_decode($json);

    if ($data->pageUri === 'projects') {
      $projects = page('projects')->children();
      foreach ($projects as $project) {
        $project->rebuildStepsCache();
      }
      return [
        'satus' => 'success',
        'message' => 'Données des pages projets rafraîchies avec succès.'
      ];
    } else {
      try {
        $page = page($data->pageUri);
      } catch (\Throwable $th) {
        return [
          'status' => 'error',
          'message' => 'Impossible de rafraîchir le cache de la page : ' . $data->pageUri . '.',
          'details' => $th->getMessage(),
          'file' => $th->getFile(),
          'line' > $th->getLine()
        ];
      }

      $project = $page->template() == 'project' ? 
        $page 
        : $page->parents()->findBy('template', 'project');

      if (!$project) {
        return [
          'satus' => 'error',
          'message' => 'Impossible de rafraîchir les données de la page ' . $data->pageUri . '. Aucun projet correspondant.'
        ];
      }

      $project->rebuildStepsCache();
      
      return [
        'satus' => 'success',
        'message' => 'Données de la page ' . $data->pageUri . ' rafraîchie avec succès.'
      ];
    }
  }
];