<?php

namespace App\Http\Controllers;
use App\Models\Project;

use Illuminate\Http\Request;

class ProjectController extends Controller
{
    public function index()
    {
        // On récupère tous les utilisateurs
        $projects = Project::all();

        // On retourne les informations des utilisateurs en JSON
        return response()->json($projects);
    }

    public function show(Project $project)
    {
        return response()->json($project);
    }

    public function store(Request $request)
    {
        // Validation des données du formulaire

        $project = Project::create($request->all());

        return response()->json($project, 201);
    }

    public function update(Request $request, Project $project)
    {
        // Validation des données du formulaire

        $project->update($request->all());

        return response()->json($project, 200);
    }

    public function destroy(Project $project)
    {
        $project->delete();

        return response()->json(null, 204);
    }

    public function getProjectsJson()
    {
        // Nouvelle fonction pour retourner les projets au format JSON
        $projects = Project::with('categories')->get();
        return response()->json(['projects' => $projects]);
    }

    public function getProjectJson($id)
    {
        // Nouvelle fonction pour retourner un projet spécifique au format JSON
        // Nouvelle fonction pour retourner un projet spécifique avec ses catégories et catégories enfants au format JSON
        //$project = Project::with(['categories', 'categories.categories'])->find($id);

        $project = Project::with([
            'categories',
            'questions',
            'questions.answers',
            'categories.document',
            'categories.document.questions',
            'categories.document.questions.answers',
            'categories.document.chapters',
            'categories.document.chapters.questions',
            'categories.document.chapters.questions.answers',
            'categories.document.chapters.exercises',
            'categories.categories',
            'categories.categories.document', // Ajoutez la relation pour charger le document de chaque catégorie
            'categories.categories.document.questions', 
            'categories.categories.document.questions.answers', 
            'categories.categories.document.chapters',
            'categories.categories.document.chapters.questions',
            'categories.categories.document.chapters.questions.answers',
            'categories.categories.document.chapters.exercises',
            'categories.categories.categories', // Ajoutez les relations nécessaires pour chaque niveau
            'categories.categories.categories.document', // Ajoutez les relations nécessaires pour chaque niveau
            'categories.categories.categories.document.questions',
            'categories.categories.categories.document.questions.answers',
            'categories.categories.categories.document.chapters',
            'categories.categories.categories.document.chapters.questions',
            'categories.categories.categories.document.chapters.questions.answers',
            'categories.categories.categories.document.chapters.exercises',
            'categories.categories.categories.categories', // Ajoutez autant de niveaux que nécessaire
            'categories.categories.categories.categories.document', // Ajoutez autant de niveaux que nécessaire
            'categories.categories.categories.categories.document.questions', // Ajoutez autant de niveaux que nécessaire
            'categories.categories.categories.categories.document.questions.answers', // Ajoutez autant de niveaux que nécessaire
            'categories.categories.categories.categories.document.chapters', // Ajoutez autant de niveaux que nécessaire
            'categories.categories.categories.categories.document.chapters.questions',
            'categories.categories.categories.categories.document.chapters.questions.answers',
            'categories.categories.categories.categories.document.chapters.exercises',

        ])->find($id);

        if (!$project) {
            return response()->json(['message' => 'Projet non trouvé.'], 404);
        }

        return response()->json(['project' => $project]);
    }
}
