Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
12 changes: 6 additions & 6 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

SESSION_DRIVER=database
SESSION_LIFETIME=120
Expand Down
24 changes: 23 additions & 1 deletion app/Http/Controllers/CompositionController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,31 @@

namespace App\Http\Controllers;

use App\Models\Composition;
use App\Models\Inscription;
use App\Models\result;
use Illuminate\Http\Request;

class CompositionController extends Controller
{
//
public function fillComposition()
{

// Récupérer tous les résultats
$results = result::all();

foreach ($results as $result) {
// Vérifier si le user_id dans result correspond à un enregistrement dans la table inscriptions
$inscription = Inscription::where('user_id', $result->user_id)->first();

if ($inscription) {
// Si une inscription correspondante est trouvée, créer une composition
$composition = new Composition();
$composition->numIns = $inscription->numIns;
$composition->numEp = $result->numEp;
$composition->note = $result->total_points;
$composition->save();
}
}
}
}
28 changes: 28 additions & 0 deletions app/Http/Controllers/DashboardController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
public function prof()
{
return view('professeur.dashboard');
}

public function administration()
{
return view('');
}

public function parent()
{
return view('');
}

public function etudiant()
{
return view('');
}
}
70 changes: 69 additions & 1 deletion app/Http/Controllers/EpreuveController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,77 @@

namespace App\Http\Controllers;

use App\Http\Requests\EpreuveRequest;
use Illuminate\Http\RedirectResponse;
use App\Models\Epreuve;
use App\Models\Filiere;
use App\Models\Matiere;
use App\Models\Professeur;
use Illuminate\Http\Request;

class EpreuveController extends Controller
{
//
public function index()
{
$epreuves = Epreuve::all();

return view('professeur.epreuves.index', compact('epreuves',));
}

public function create()
{


$prof=Professeur::all();
$filiere=Filiere::all();
$matiere=Matiere::all();
return view('professeur.epreuves.create', compact('filiere','prof','matiere',));
}

public function store( EpreuveRequest $request)
{
Epreuve::create($request->validated());

return redirect()->route('epreuve.index')->with([
'message' => 'successfully created !',
'alert-type' => 'success'
]);
}

public function show(Epreuve $epreuve)
{
return view('professeur.epreuves.index', compact('Epreuve'));
}

public function edit(Epreuve $epreuve)
{


$prof=Professeur::all();
$filiere=Filiere::all();
$matiere=Matiere::all();
return view('professeur.epreuves.edit', compact('epreuve','prof','matiere','filiere'));
}

public function update(EpreuveRequest $request, Epreuve $epreuve)
{
$epreuve->update($request->validated());

return redirect()->route('epreuve.index')->with([
'message' => 'successfully updated !',
'alert-type' => 'info'
]);
}

public function destroy(Epreuve $epreuve)
{
$epreuve->delete();

return back()->with([
'message' => 'successfully deleted !',
'alert-type' => 'danger'
]);
}


}
42 changes: 42 additions & 0 deletions app/Http/Controllers/Etudiant/ResultController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

namespace App\Http\Controllers\Etudiant;

use App\Http\Controllers\Controller;
use App\Models\Epreuve;
use App\Models\Result;
use App\Models\User;
use Illuminate\Support\Facades\Auth;

class ResultController extends Controller
{
public function show($result_id)
{
$result = Result::whereHas('user', function ($query) {
$query->whereId(Auth::id());
})->findOrFail($result_id);

$score= $result->total_points ; // Calculer le score sur 20

return view('etudiant.results', compact('result', 'score'));
}

public function showResult()
{

$users = User::with('results.epreuve')->get();

return view('etudiant.index', compact('users'));
}

public function showResult_prof()
{
$epreuves = Epreuve::with('results.user')->get();

return view('professeur.results', compact('epreuves'));
}


}


78 changes: 78 additions & 0 deletions app/Http/Controllers/Etudiant/TestController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php

namespace App\Http\Controllers\Etudiant;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreTestRequest;
use App\Models\Epreuve;
use App\Models\Option;
use App\Models\Question;
use App\Models\Result;
use Illuminate\Http\Request;
use App\Models\User;


class TestController extends Controller
{
public function index()
{

$epreuves = Epreuve::with(['questions' => function ($query) {
$query->inRandomOrder()
->with(['options' => function ($query) {
$query->inRandomOrder();
}]);
}])
->whereHas('questions')
->get();

return view('etudiant.test', compact('epreuves'));
}


public function store(StoreTestRequest $request)
{
$answers = $request->input('answers');

$totalPoints = 0;
$numEp = null; // Variable pour stocker le numéro d'épreuve

foreach ($answers as $questionId => $optionId) {
// Récupérer la question correspondante
$question = Question::findOrFail($questionId);

// Récupérer l'option choisie par l'utilisateur
$option = Option::findOrFail($optionId);

// Récupérer l'épreuve associée à la question
$numEp = $question->epreuve_numEp;

// Vérifier si l'option choisie est correcte en la comparant à la réponse de la question
if ($option->is_correct && $option->question->reponse_text === $option->option_text) {
$totalPoints += $question->points;
}
}


// Récupérer le total des points normaux de l'épreuve
$epreuve = Epreuve::findOrFail($numEp);
$questions = $epreuve->questions()->get();
$totalNormalPoints = $questions->sum('points');

// Calculer le score sur 20
$score = ($totalPoints / $totalNormalPoints) * 20;

// Enregistrer le résultat dans la base de données
$result = new Result();
$result->numEp = $numEp; // Enregistrer le numéro d'épreuve
$result->user_id = auth()->user()->id;
$result->total_points = $score; // Enregistrer le score
$result->save();

// Vous pouvez enregistrer les réponses de l'utilisateur ici si nécessaire

return redirect()->route('etudiant.results.show', $result->id);
}

}

68 changes: 68 additions & 0 deletions app/Http/Controllers/OptionController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php

namespace App\Http\Controllers;

use App\Http\Requests\OptionRequest;
use App\Models\option;
use App\Models\question;
use Illuminate\Http\Request;

class optionController extends Controller
{
public function index()
{
$options =option::all();

return view('professeur.options.index', compact('options'));
}

public function create()
{
$questions = question::all()->pluck('question_text', 'id');

return view('professeur.options.create', compact('questions'));
}

public function store(OptionRequest $request)
{
option::create($request->validated());

return redirect()->route('option.index')->with([
'message' => 'successfully created !',
'alert-type' => 'success'
]);
}

public function show(option $option)
{
return view('professeur.options.show', compact('option'));
}

public function edit(option $option)
{
$questions = Question::all()->pluck('question_text', 'id');

return view('professeur.options.edit', compact('option', 'questions'));
}

public function update(OptionRequest $request,option $option)
{
$option->update($request->validated());

return redirect()->route('option.index')->with([
'message' => 'successfully updated !',
'alert-type' => 'info'
]);
}

public function destroy(option $option)
{
$option->delete();

return back()->with([
'message' => 'successfully deleted !',
'alert-type' => 'danger'
]);
}

}
Loading