diff --git a/src/Controller/DegreeController.php b/src/Controller/DegreeController.php index d7d54e0..d4e2469 100644 --- a/src/Controller/DegreeController.php +++ b/src/Controller/DegreeController.php @@ -3,6 +3,7 @@ namespace App\Controller; use App\Entity\Degree; +use App\Entity\InternDegree; use App\Form\DegreeType; use App\Repository\DegreeRepository; use Doctrine\ORM\EntityManagerInterface; diff --git a/src/Controller/InternController.php b/src/Controller/InternController.php index f1de7d0..0ada2cc 100644 --- a/src/Controller/InternController.php +++ b/src/Controller/InternController.php @@ -2,7 +2,9 @@ namespace App\Controller; +use App\Entity\Degree; use App\Entity\Intern; +use App\Entity\InternDegree; use App\Form\InternType; use App\Repository\InternRepository; use Doctrine\ORM\EntityManagerInterface; @@ -58,4 +60,52 @@ final class InternController extends AbstractController return $this->redirectToRoute('app_intern_index', [], Response::HTTP_SEE_OTHER); } + + #[Route('/degrees/add', name:'app_intern_add_degrees', methods:['POST'])] + public function addDegrees(Request $request, EntityManagerInterface $entityManager): Response + { + $intern = $this->getUser(); + + if (!$intern instanceof Intern) { + throw $this->createAccessDeniedException("Seuls les stagiaires peuvent sélectionner des diplômes."); + } + + $selectedDegreeIds = $request->request->all('selected_degrees'); + + if ($selectedDegreeIds == []) { + $this->addFlash('error', "Aucune sélection valide n'a été effectuée."); + return $this->redirectToRoute('app_degree_index'); + } + + $degreeRepository = $entityManager->getRepository(Degree::class); + $internDegreeRepository = $entityManager->getRepository(InternDegree::class); + + foreach ($selectedDegreeIds as $degreeId) { + $degree = $degreeRepository->find($degreeId); + + if (!$degree) { + continue; + } + + $existingInternDegree = $internDegreeRepository->findOneBy([ + 'intern' => $intern, + 'degree' => $degree + ]); + + if (!$existingInternDegree) { + $internDegree = new InternDegree(); + $internDegree->setIntern($intern); + $internDegree->setDegree($degree); + $internDegree->setGraduationDate(new \DateTime()); + + $entityManager->persist($internDegree); + } + } + + $entityManager->flush(); + + $this->addFlash('success', 'Les diplômes ont été ajoutés avec succès.'); + + return $this->redirectToRoute('app_profile'); + } } diff --git a/src/Controller/ProfileController.php b/src/Controller/ProfileController.php index 5781c19..d25e351 100644 --- a/src/Controller/ProfileController.php +++ b/src/Controller/ProfileController.php @@ -15,10 +15,8 @@ class ProfileController extends AbstractController #[Route('/profile', name: 'app_profile')] public function profile(): Response { - // Charger l'utilisateur connecté $user = $this->getUser(); - // Vérifiez les rôles si nécessaire if (!$user) { throw $this->createAccessDeniedException('Vous devez être connecté pour accéder à cette page.'); } @@ -45,4 +43,12 @@ class ProfileController extends AbstractController 'form' => $form, ]); } + + #[Route('profile/pickDegree', name: 'app_profile_pickDegree', methods: ['GET'])] + public function pickDegree(UserApp $userApp): Response + { + return $this->render('degree/index.html.twig', [ + 'user_app' => $userApp, + ]); + } } \ No newline at end of file diff --git a/templates/degree/index.html.twig b/templates/degree/index.html.twig index 670e9c5..3c63338 100644 --- a/templates/degree/index.html.twig +++ b/templates/degree/index.html.twig @@ -6,52 +6,55 @@

Liste des Diplômes

- -
- - - - - - - - - - {% for degree in degrees %} - - - - + +
+
IDLabelActions
{{ degree.id }}{{ degree.label }} - - - Voir - + {% if 'ROLE_INTERN' in app.user.roles %} +
+ {% endif %} - - - Modifier - - - - - - - -
-
+ + + + + - {% endfor %} - -
IDLabelActions
-
+ + + {% for degree in degrees %} + + {{ degree.id }} + {{ degree.label }} + + {% if 'ROLE_INTERN' in app.user.roles %} + + {% endif %} + + + {% endfor %} + + +
+ {% if 'ROLE_INTERN' in app.user.roles %} +
+ +
+ + {% endif %} + + {% if 'ROLE_ADMIN' in app.user.roles %}
Ajouter un nouveau diplôme
+ {% endif %} {% endblock %} diff --git a/templates/index/index.html.twig b/templates/index/index.html.twig index a35c679..44a983e 100644 --- a/templates/index/index.html.twig +++ b/templates/index/index.html.twig @@ -12,7 +12,7 @@

Trouvez votre stage de rêve !

Connectez les talents aux opportunités : votre clé vers le succès professionnel

-
+
diff --git a/templates/profile/employee.html.twig b/templates/profile/employee.html.twig index 641f9fe..88ef603 100644 --- a/templates/profile/employee.html.twig +++ b/templates/profile/employee.html.twig @@ -1,7 +1,16 @@
-

Bonjour {{ app.user.firstName }} {{ app.user.lastName }}

-

Vous êtes employé(e) chez {{ app.user.company }}.

+

Bonjour {{ app.user.nickname }}

+

Vous etes employé chez {{ app.user.company.name }}

+
+

Nom : {{ app.user.firstName }}

+

Prénom : {{ app.user.lastName }}

Adresse : {{ app.user.address }}

Téléphone : {{ app.user.tel }}

Email : {{ app.user.mail }}

+ +
diff --git a/templates/profile/intern.html.twig b/templates/profile/intern.html.twig index 5d6e0b3..d74a3ff 100644 --- a/templates/profile/intern.html.twig +++ b/templates/profile/intern.html.twig @@ -11,8 +11,8 @@

Vos diplômes :

    {% if app.user.degrees|length > 0 %} - {% for deg in app.user.degrees %} -
  • {{ deg.label }}
  • + {% for internDegree in app.user.degrees %} +
  • {{ internDegree.degree.label }}
  • {% endfor %} {% else %}
    @@ -21,7 +21,7 @@

Selectionner vos diplômes + href="{{ path('app_degree_index',{id: app.user.id}) }}"> Selectionner vos diplômes

Vos compétences :