Skip to content

Fonctionnalité : Gestion des cahiers de texte #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions app/Http/Controllers/CahierTexteController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php

namespace App\Http\Controllers;

use App\Models\CahierTexte;
use App\Models\Classe;
use App\Models\Subject;
use App\Models\Teacher;
use Illuminate\Http\Request;

class CahierTexteController extends Controller
{
// Affiche la liste des cahiers de texte
public function index(Request $request)
{
// Récupération des classes pour les options du filtre
$classes = Classe::all();

// Récupération des cahiers de texte avec ou sans filtre
$query = CahierTexte::with('classe', 'subject', 'teacher');
if ($request->classe) {
$query->where('class_id', $request->classe);
}
$cahiers = $query->get();

// Passage des variables à la vue
return view('cahiertexte.index', compact('classes', 'cahiers'));
}


// Affiche les détails d'un cahier de texte spécifique
public function show($id)
{
$cahier = CahierTexte::with('classe', 'subjects', 'teachers')->findOrFail($id);
return view('cahiertexte.show', compact('cahier'));
}

// Affiche le formulaire pour ajouter un nouveau cahier de texte
public function create()
{
$classes = Classe::all();
$subjects = Subject::all();
$teachers = Teacher::all();
return view('cahiertexte.create', compact('classes', 'subjects', 'teachers'));
}

// Enregistre un nouveau cahier de texte dans la base de données
public function store(Request $request)
{
$request->validate([
'class_id' => 'required|exists:classe,id',
'subject_id' => 'required|exists:subjects,id',
'teacher_id' => 'required|exists:teachers,id',
'date' => 'required|date',
'contenu' => 'nullable|string',
'travail_a_faire' => 'nullable|string',
]);

CahierTexte::create($request->all());

return redirect()->route('cahiertexte.index')->with('success', 'Cahier de texte ajouté avec succès.');
}

// Affiche le formulaire pour modifier un cahier de texte
public function edit($id)
{
$cahier = CahierTexte::findOrFail($id);
$classes = Classe::all();
$subjects = Subject::all();
$teachers = Teacher::all();
return view('cahiertexte.edit', compact('cahier', 'classe', 'subjects', 'teachers'));
}

// Met à jour un cahier de texte existant
public function update(Request $request, $id)
{
$request->validate([
'class_id' => 'required|exists:classe,id',
'subject_id' => 'required|exists:subjects,id',
'teacher_id' => 'required|exists:teachers,id',
'date' => 'required|date',
'contenu' => 'nullable|string',
'travail_a_faire' => 'nullable|string',
]);

$cahier = CahierTexte::findOrFail($id);
$cahier->update($request->all());

return redirect()->route('cahiertexte.index')->with('success', 'Cahier de texte mis à jour avec succès.');
}

// Supprime un cahier de texte
public function destroy($id)
{
$cahier = CahierTexte::findOrFail($id);
$cahier->delete();

return redirect()->route('cahiertexte.index')->with('success', 'Cahier de texte supprimé avec succès.');
}
}
65 changes: 65 additions & 0 deletions app/Http/Controllers/ClasseController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php

namespace App\Http\Controllers;

use App\Models\Classe;
use Illuminate\Http\Request;

class ClasseController extends Controller
{
public function index()
{
$classes = Classe::all(); // Récupère toutes les classes
return view('classe.index', compact('classes'));
}

public function create()
{
return view('classe.create'); // Affiche le formulaire de création
}

public function store(Request $request)
{
// Validation des données
$request->validate([
'nom' => 'required|max:255',
'niveau' => 'required',
'annee_scolaire' => 'required',
]);

// Création d'une nouvelle classe
Classe::create($request->all());

return redirect()->route('classe.index')->with('success', 'Classe créée avec succès');
}

public function edit($id)
{
$classe = Classe::findOrFail($id); // Récupère la classe par son ID
return view('classe.edit', compact('classe'));
}

public function update(Request $request, $id)
{
// Validation des données
$request->validate([
'nom' => 'required|max:255',
'niveau' => 'required',
'annee_scolaire' => 'required',
]);

// Mise à jour de la classe
$classe = Classe::findOrFail($id);
$classe->update($request->all());

return redirect()->route('classe.index')->with('success', 'Classe mise à jour avec succès');
}

public function destroy($id)
{
$classe = Classe::findOrFail($id);
$classe->delete();

return redirect()->route('classe.index')->with('success', 'Classe supprimée avec succès');
}
}
72 changes: 72 additions & 0 deletions app/Http/Controllers/SubjectController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php

namespace App\Http\Controllers;

use App\Models\Subject;
use Illuminate\Http\Request;

class SubjectController extends Controller
{
// Affiche la liste des matières
public function index()
{
$subjects = Subject::all();
return view('subjects.index', compact('subjects'));
}

// Affiche le formulaire pour ajouter une nouvelle matière
public function create()
{
return view('subjects.create');
}

// Enregistre une nouvelle matière dans la base de données
public function store(Request $request)
{
$request->validate([
'nom' => 'required|max:255',
'code' => 'required|unique:subjects,code|max:100',
]);

Subject::create($request->all());

return redirect()->route('subjects.index')->with('success', 'Matière ajoutée avec succès.');
}

// Affiche les détails d'une matière
public function show($id)
{
$subject = Subject::findOrFail($id);
return view('subjects.show', compact('subject'));
}

// Affiche le formulaire pour modifier une matière existante
public function edit($id)
{
$subject = Subject::findOrFail($id);
return view('subjects.edit', compact('subject'));
}

// Met à jour une matière existante
public function update(Request $request, $id)
{
$request->validate([
'nom' => 'required|max:255',
'code' => 'required|unique:subjects,code,' . $id,
]);

$subject = Subject::findOrFail($id);
$subject->update($request->all());

return redirect()->route('subjects.index')->with('success', 'Matière mise à jour avec succès.');
}

// Supprime une matière
public function destroy($id)
{
$subject = Subject::findOrFail($id);
$subject->delete();

return redirect()->route('subjects.index')->with('success', 'Matière supprimée avec succès.');
}
}
78 changes: 78 additions & 0 deletions app/Http/Controllers/TeacherController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php

namespace App\Http\Controllers;

use App\Models\Teacher;
use Illuminate\Http\Request;

class TeacherController extends Controller
{
// Affiche la liste des enseignants
public function index()
{
$teachers = Teacher::all();
return view('teachers.index', compact('teachers'));
}

// Affiche le formulaire pour ajouter un nouvel enseignant
public function create()
{
return view('teachers.create');
}

// Enregistre un nouvel enseignant dans la base de données
public function store(Request $request)
{
$request->validate([
'nom' => 'required|max:255',
'email' => 'required|email|unique:teachers,email',
'telephone' => 'nullable|max:20',
'specialisation' => 'nullable|max:255',
'date_embauche' => 'nullable|date',
]);

Teacher::create($request->all());

return redirect()->route('teachers.index')->with('success', 'Enseignant ajouté avec succès.');
}

// Affiche les détails d'un enseignant
public function show($id)
{
$teacher = Teacher::findOrFail($id);
return view('teachers.show', compact('teacher'));
}

// Affiche le formulaire pour modifier un enseignant
public function edit($id)
{
$teacher = Teacher::findOrFail($id);
return view('teachers.edit', compact('teacher'));
}

// Met à jour un enseignant existant
public function update(Request $request, $id)
{
$request->validate([
'nom' => 'required|max:255',
'email' => 'required|email|unique:teachers,email,' . $id,
'telephone' => 'nullable|max:20',
'specialisation' => 'nullable|max:255',
'date_embauche' => 'nullable|date',
]);

$teacher = Teacher::findOrFail($id);
$teacher->update($request->all());

return redirect()->route('teachers.index')->with('success', 'Enseignant mis à jour avec succès.');
}

// Supprime un enseignant
public function destroy($id)
{
$teacher = Teacher::findOrFail($id);
$teacher->delete();

return redirect()->route('teachers.index')->with('success', 'Enseignant supprimé avec succès.');
}
}
Empty file.
32 changes: 32 additions & 0 deletions app/Models/CahierTexte.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class CahierTexte extends Model
{
use HasFactory;

protected $table = 'cahier_texte'; // Nom exact de la table
protected $fillable = ['class_id', 'subject_id', 'teacher_id', 'date', 'contenu', 'travail_a_faire'];

// Relation avec la table Classe
public function classe()
{
return $this->belongsTo(Classe::class, 'class_id');
}

// Relation avec la table Subject
public function subject()
{
return $this->belongsTo(Subject::class, 'subject_id');
}

// Relation avec la table Teacher
public function teacher()
{
return $this->belongsTo(Teacher::class, 'teacher_id');
}
}
27 changes: 27 additions & 0 deletions app/Models/Classe.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Classe extends Model
{
use HasFactory;

protected $table = 'classe'; // Nom de la table

protected $fillable = [
'class_id', // Identifiant unique
'nom', // Nom de la classe
'niveau', // Niveau scolaire (primaire, secondaire, etc.)
'annee_scolaire', // Année académique
'description', // Description de la classe
];

// Relation avec les enseignants
public function teachers()
{
return $this->hasMany(Teacher::class);
}
}
Loading