Gestions Projet: Controllers
DeveloppeurController
<?php
namespace App\Http\Controllers;
use App\Models\Developpeur;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
class DeveloppeurController extends Controller
{
public function ajouterDeveloppeur()
{
return view("AjouterDeveloppeur");
}
public function enregistrerDeveloppeur(Request $request)
{
$validate = Validator::make($request->all(), [
'nomDev' => 'required|max:25',
'prenomDev' => 'required|max:25',
'cv' => "required",
'photoDev' => "required",
], [
'nomDev.required' => 'le nom est obligatoire',
'nomDev.max' => 'le nom ne doit pas dépasser 25 caracteres',
'prenomDev.required' => 'le prenom est obligatoire',
'prenomDev.max' => 'le prenom ne doit pas dépasser 25 caracteres',
'cv.required' => 'le cv est obligatoire',
'photoDev.required' => 'la photo est obligatoire',
]);
if ($validate->fails()) {
return back()->withErrors($validate->errors())->withInput();
}
if ($request->hasFile('photoDev')) {
$file = $request->file('photoDev');
} else {
return back()->with('msg', 'Aucun fichier sélectionné.');
}
$extension = $file->getClientOriginalExtension();
$taille = $file->getSize();
$fileCv = $request->file('cv');
$extensionCv = $fileCv->getClientOriginalExtension();
$tailleCv = $fileCv->getSize();
if ($extension != 'jpg' and $extension != 'png' and $extension != 'jpeg' and $taille > 1000000 and $extensionCv != 'pdf' and $tailleCv > 1000000) {
return back()->with('msg', ' image doit être jpg, png, jpeg, cv doit pdf et la taille des deux doit être < 10M');
} else {
$dossier = 'images';
$n_unique = uniqid();
$lienPhoto = $dossier . '/' . $n_unique . "_" . $file->getClientOriginalName();
$file->move("images", $n_unique . "_" . $file->getClientOriginalName());
$dossierCv = 'cv';
$n_uniqueCv = uniqid();
$lienCv = $dossierCv . '/' . $n_uniqueCv . "_" . $fileCv->getClientOriginalName();
$fileCv->move("cv", $n_uniqueCv . "_" . $fileCv->getClientOriginalName());
}
$developpeur = $request->post();
$developpeur['photoDev'] = $lienPhoto;
$developpeur['cv'] = $lienCv;
Developpeur::create($developpeur);
return back()->with('msg', 'le developpeur est bien ajouté');
}
public function afficherDeveloppeur()
{
$developpeur = Developpeur::all();
return view("AfficherDeveloppeur", compact("developpeur"));
}
public function modifierDeveloppeur($idDev)
{
$developpeur = Developpeur::find($idDev);
return view("ModifierDeveloppeur", compact("developpeur"));
}
public function mettreAJourDeveloppeur(Request $request, $idDev)
{
$developpeur = Developpeur::find($idDev);
$developpeur->update($request->all());
return redirect()->route("AfficherDeveloppeur");
}
public function supprimerDeveloppeur($idDev)
{
$developpeur = Developpeur::find($idDev);
$developpeur->delete();
return redirect()->route("AfficherDeveloppeur");
}
public function rechercherParNomDev()
{
$developpeurs = Developpeur::all();
return view("RechercheParNomDeveloppeur", compact("developpeurs"));
}
public function validerRechercherParNomDev(Request $request)
{
$nomDev = $request->input("nomDev");
$developpeurs = Developpeur::all();
$developpeurSelectionner = $developpeurs->where("nomDev", $nomDev)->first();
return view("RechercheParNomDeveloppeur", compact("developpeurSelectionner", "developpeurs"));
}
public function afficherInfoDev()
{
$developpeurs = Developpeur::all();
return view("AfficherInfoDev", compact("developpeurs"));
}
public function validerAfficherInfoDev(Request $request)
{
$idDev = $request->input("idDev");
$nombreProjet = DB::select("SELECT COUNT(*) nbreP FROM projets p INNER JOIN taches t ON p.idP = t.idP WHERE t.idDev = '$idDev'")[0];
$nombreTache = DB::select("SELECT COUNT(*) nbreT FROM taches WHERE idDev = '$idDev'")[0];
$dureeTotale = DB::select("SELECT SUM(duree) dureeT FROM taches WHERE idDev ='$idDev'")[0];
$dureeMoyenneParTache = DB::select("SELECT AVG(duree) as moyenneT FROM taches WHERE idDev = '$idDev'")[0];
$dureeMoyenneParProjet = DB::select("SELECT AVG(duree) as moyenneP, p.nomP as nomP FROM taches t INNER JOIN projets p ON p.idP = t.idP WHERE idDev = '$idDev' GROUP BY p.nomP")[0];
$projetPlusChere = DB::select("SELECT MAX(coutHeure) as maxC, p.nomP as nomP FROM taches t INNER JOIN projets p ON p.idP = t.idP WHERE idDev = '$idDev' GROUP BY p.nomP")[0];
$projetAvecDureeTotale = DB::select("SELECT SUM(duree) as dureeT, p.nomP as nomP FROM taches t INNER JOIN projets p ON p.idP = t.idP WHERE idDev = '$idDev' GROUP BY p.nomP");
$developpeurs = Developpeur::all();
return view("AfficherInfoDev", compact("nombreProjet", "nombreTache", "dureeTotale", "dureeMoyenneParTache", "dureeMoyenneParProjet", "projetPlusChere", "projetAvecDureeTotale","developpeurs"));
}
}
ProjetController
<?php
namespace App\Http\Controllers;
use App\Models\Projet;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
class ProjetController extends Controller
{
public function ajouterProjet()
{
return view("AjouterProjet");
}
public function enregistrerProjet(Request $request)
{
$validate = Validator::make($request->all(), [
"nomP"=> "required|max:25",
"description"=>"required",
"photoP"=>"required",
],[
"nomP.required"=>"Le nom est obligatoire",
"nomP.max"=>"Ne doit pas dépasser 25 caractères",
"description.required"=>"La description est obligatoire"
]);
if($validate->fails()){
return back()->withErrors($validate->errors())->withInput();
}
$file = $request->file("photoP");
if($file){
$extension = $file->getClientOriginalExtension();
$taille = $file->getSize();
if($extension != "jpg" and $extension != "jpeg" and $extension != "png" and $taille > 1000000){
return back()->with("msg", "taille".$taille."image doit être jpg, png ou jpeg et de taille < 10M");
}else{
$dossier = "images";
$n_unique = uniqid();
$lienPhoto = $dossier."/".$n_unique."_".$file->getClientOriginalName();
$file->move("images", $n_unique."_".$file->getClientOriginalName());
$projet = $request->post();
$projet["photoP"]= $lienPhoto;
Projet::create($projet);
return back()->with("msg", "Le projet est bien ajouté");
}
}else{
return back()->with("msg", "Aucun fichier sélectionné");
}
}
public function afficherProjet()
{
$projet = Projet::all();
return view("AfficherProjet", compact("projet"));
}
public function modifierProjet($idP)
{
$projet = Projet::find($idP);
return view("ModifierProjet", compact("projet"));
}
public function mettreAjourProjet(Request $request, $idP)
{
$projet = Projet::find($idP);
$projet->update($request->all());
return redirect()->route("AfficherProjet");
}
public function supprimerProjet($idP)
{
$projet = Projet::find($idP);
$projet->delete();
return redirect()->route("AfficherProjet");
}
public function rechercherParNomProjet()
{
return view("RechercherParProjet");
}
public function validerRechercher(Request $request)
{
$nomP = $request->input("nomP");
$projets = Projet::where("nomP", "like", "%" . $nomP . "%")->get();
return view("RechercherParProjet", compact("projets"));
}
public function afficherProjetCout()
{
$projet = DB::select("SELECT p.nomP, SUM(t.coutHeure) AS totalCout FROM projets p INNER JOIN taches t ON t.idP = p.idP GROUP BY p.nomP ORDER BY t.coutHeure DESC");
return view("AfficherProjetCout", compact("projet"));
}
}
TacheController
<?php
namespace App\Http\Controllers;
use App\Models\Developpeur;
use App\Models\Projet;
use App\Models\Tache;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class TacheController extends Controller
{
public function ajouterTache()
{
$developpeur = Developpeur::all();
$projet = Projet::all();
return view("AjouterTache", compact('developpeur', 'projet'));
}
public function enregistrerTache(Request $request){
$validate = Validator::make($request->all() , [
'idP' => 'required',
'idDev' =>'required',
'duree' =>'required|integer',
'coutHeure' => 'required',
'etat' => 'required|max:200'
],[
'idP.required' => 'Sélectionnez un projet',
'idDev.required' => 'Sélectionnez un développeur',
'duree.required' => 'La durée est obligatoire',
'duree.integer' => 'La durée doit être un entier',
'coutHeure.required' => 'Le coût heure est obligatoire',
'etat.required' => 'L\'état est obligatoire',
]);
if($validate->fails()){
return back()->withErrors($validate->errors())->withInput();
}
$validatedData = $validate->validated();
Tache::create($validatedData);
return back()->with('msg','La tâche a bien été ajoutée');
}
public function afficherTache()
{
$tache = Tache::all();
return view("AfficherTache", compact("tache"));
}
public function modifierTache($idT)
{
$tache = Tache::find($idT);
$developpeur = Developpeur::all();
$projet = Projet::all();
return view("ModifierTache", compact('developpeur', 'projet', 'tache'));
}
public function mettreAjourTache(Request $request, $idT)
{
$tache = Tache::find($idT);
$tache->update($request->all());
return redirect()->route("AfficherTache");
}
public function supprimerTache($idT)
{
$tache = Tache::find($idT);
$tache->delete();
return redirect()->route("AfficherTache");
}
public function rechercherParTache()
{
$tache = Tache::all();
return view("RechercherParTache", compact("tache"));
}
public function validerRechercherParTache(Request $request)
{
$idT = $request->input("idT");
$tache = Tache::all();
$tacheSelectionner = $tache->where("idT", $idT)->first();
return view("RechercherParTache", compact("tache", "tacheSelectionner"));
}
}