Table des matières

Logo

Office de la Formation Professionnelle et de la Promotion du Travail

Direction Régionale Nord Ouest II

Solicode Examen de Fin de Module Date EFM : 12/02/2025
Filière : DMB Base de données Durée : 1 h 30 min
Groupe : 101 Variante 1 Année de formation : 2024/2025

Contexte Général

Tu travailles sur une application Laravel permettant de gérer des articles de blog avec leurs relations :

L’application doit afficher les articles, mettre à jour certaines de leurs données et permettre l’édition et la suppression des articles.

L’examen est divisé en deux parties :

  1. Partie 1 : Live Coding (30 minutes, 20 points)
    • Affichage des articles et de leurs relations.
    • Incrémentation du nombre de vues de l’article et de ses commentaires via un Service.
    • Ajout automatique de la catégorie Populaire pour les articles ayant plus de 10 vues.
  2. Partie 2 : Mini-Projet (45 minutes, 20 points)
    • Ajout d’un formulaire permettant de modifier les catégories associées à un article.
    • Ajout des boutons “Modifier” et “Supprimer” pour chaque article.
    • Amélioration du design de la page avec du CSS.

Partie 1 : Live Coding (30 min - 20 points)

Barème & Questions (20 points)

Création de la classe ArticleService (6 points)

Implémentation du ArticleController (6 points)

Création de la Vue index.blade.php (6 points)

Définition de la Route et Test (2 points)

Partie 2 : Mini-Projet (45 min - 20 points)

Barème & Questions (20 points)

Modification des catégories d’un article (Many-to-Many) (8 points)

Question 10 : Ajouter une méthode updateArticleCategories(Article $article, array $categoryIds) dans ArticleService pour modifier les catégories associées à un article. (3 points)
Question 11 : Créer une méthode edit($id) dans ArticleController qui retourne un formulaire d’édition avec la liste des catégories disponibles et celles déjà attachées à l’article. (2 points)
Question 12 : Implémenter une méthode update(Request $request, $id) dans ArticleController qui met à jour les catégories d’un article en utilisant ArticleService. (2 points)
Question 13 : Implémenter une méthode show($id) dans ArticleController. (1 points)

Ajout des boutons “Modifier” et “Supprimer” (6 points)

Question 14 : Ajouter dans index.blade.php une colonne avec un bouton “Modifier” redirigeant vers la page d’édition de l’article. (2 points)
Question 15 : Ajouter un bouton “Supprimer” avec un formulaire DELETE pour supprimer un article. (2 points)
Question 16 : Implémenter la méthode destroy($id) dans ArticleController pour gérer la suppression d’un article. (2 points)

Amélioration de l’affichage avec du CSS (6 points)

Question 17 : Modifier index.blade.php pour afficher les articles sous forme de tableau stylisé en ajoutant un fichier CSS. (2 points)
Question 18 : Améliorer le formulaire d’édition pour qu’il soit plus clair et agréable visuellement. (2 points)
Question 19 : Vérifier que les boutons sont bien alignés et que l’affichage est responsive. (2 points)

Remarque

Bonne chance ! 🚀

Logo

Office de la Formation Professionnelle et de la Promotion du Travail

Direction Régionale Nord Ouest II

Solicode Examen de Fin de Module Date EFM : 12/02/2025
Filière : DMB Base de données Durée : 1 h 30 min
Groupe : 101 Variante 2 Année de formation : 2024/2025

Contexte Général

Tu travailles sur une application Laravel permettant aux employés de partager une seule image qui les motive.
Les autres employés peuvent ensuite ajouter des messages de soutien (support de motivation).

L’application doit permettre :

L’application doit afficher les images des employés, mettre à jour certaines de leurs données et permettre l’édition et la suppression des messages de soutien.

L’examen est divisé en deux parties :

  1. Partie 1 : Live Coding (30 minutes, 20 points)
    • Affichage des images de motivation avec leurs messages de soutien.
    • Incrémentation du nombre de vues d’une image et de ses messages via un Service.
    • Ajout automatique du type de motivation “Encouragement” si un message reçoit plus de 5 réactions.
  2. Partie 2 : Mini-Projet (45 minutes, 20 points)
    • Ajout d’un formulaire permettant de modifier les types de motivation d’un message.
    • Ajout des boutons “Modifier” et “Supprimer” pour chaque message de soutien.
    • Amélioration du design de la page avec du CSS.

Partie 1 : Live Coding (30 min - 20 points)

Objectif :

Barème & Questions (20 points)

Création de la classe ImageService (6 points)

Question 1 : Crée une classe ImageService dans app/Services/ et ajoute une méthode getImagesWithSupport() qui retourne la liste des images avec leurs relations (employe, supportMotivation, typeMotivation). (2 points)
Question 2 : Ajoute une méthode incrementImageViews(Image $image) qui incrémente le nombre de vues de l’image et sauvegarde la modification. (2 points)
Question 3 : Ajoute une méthode incrementSupportViews(Image $image) qui incrémente le nombre de vues de chaque message de soutien lié à cette image et sauvegarde les modifications. (2 points)

Implémentation du ImageController (6 points)

Question 4 : Crée un contrôleur ImageController et injecte ImageService dans son constructeur via l’Injection de Dépendance. (2 points)
Question 5 : Implémente une méthode index() qui :

Création de la Vue index.blade.php (6 points)

Question 6 : Crée une vue resources/views/images/index.blade.php qui affiche les images sous forme de tableau avec les colonnes suivantes :

Question 7 : Tester le bon fonctionnement de l’affichage et s’assurer que les vues des images et des messages sont bien incrémentées après chaque rafraîchissement de la page. (2 points)

Définition de la Route et Test (2 points)

Question 8 : Déclare une route /images dans routes/web.php pour appeler la méthode index() du ImageController. (1 point)
Question 9 : Lancer l’application, tester l’affichage dans le navigateur et vérifier que :

Partie 2 : Mini-Projet (45 min - 20 points)

Objectif :

Barème & Questions (20 points)

Modification des types de motivation d’un message (8 points)

Question 10 : Ajouter une méthode updateSupportMotivation(SupportMotivation $support, array $typeMotivationIds) dans ImageService pour modifier les types de motivation associés à un message. (3 points)
Question 11 : Créer une méthode edit($id) dans SupportMotivationController qui retourne un formulaire d’édition avec la liste des types de motivation disponibles. (2 points)
Question 12 : Implémenter une méthode update(Request $request, $id) dans SupportMotivationController qui met à jour les types de motivation d’un message en utilisant ImageService. (2 points)
Question 13 : Implémenter une méthode show($id) dans ArticleController. (1 points)

Ajout des boutons “Modifier” et “Supprimer” (6 points)

Question 14 : Ajouter dans index.blade.php une colonne avec un bouton “Modifier” redirigeant vers la page d’édition du message de soutien. (2 points)
Question 15 : Ajouter un bouton “Supprimer” avec un formulaire DELETE pour supprimer un message de soutien. (2 points)
Question 16 : Implémenter la méthode destroy($id) dans SupportMotivationController pour gérer la suppression d’un message de soutien. (2 points)

** Amélioration de l’affichage avec du CSS (6 points)**

Question 17 : Modifier index.blade.php pour afficher les images et les messages sous forme de tableau stylisé en ajoutant un fichier CSS. (2 points)
Question 18 : Améliorer le formulaire d’édition pour qu’il soit plus clair et agréable visuellement. (2 points)
Question 19 : Vérifier que les boutons sont bien alignés et que l’affichage est responsive. (2 points)

Remarque

Bonne chance ! 🚀

Logo

Office de la Formation Professionnelle et de la Promotion du Travail

Direction Régionale Nord Ouest II

Solicode Examen de Fin de Module Date EFM : 12/02/2025
Filière : DMB Base de données Durée : 1 h 30 min
Groupe : 101 Variante 3 Année de formation : 2024/2025

Contexte Général

Tu travailles sur une application Laravel permettant aux membres d’une association de randonnée de partager une seule proposition de randonnée.
Les autres membres peuvent ensuite ajouter des avis et des suggestions d’amélioration.

L’application doit permettre :

L’application doit afficher les propositions de randonnée, mettre à jour certaines de leurs données et permettre l’édition et la suppression des avis.

L’examen est divisé en deux parties :

  1. Partie 1 : Live Coding (30 minutes, 20 points)
    • Affichage des propositions de randonnée avec leurs avis.
    • Incrémentation du nombre de vues d’une randonnée et de ses avis via un Service.
    • Ajout automatique d’une suggestion “Randonnée Recommandée” si une randonnée reçoit plus de 10 avis positifs.
  2. Partie 2 : Mini-Projet (45 minutes, 20 points)
    • Ajout d’un formulaire permettant de modifier les suggestions associées à un avis.
    • Ajout des boutons “Modifier” et “Supprimer” pour chaque avis.
    • Amélioration du design de la page avec du CSS.

Partie 1 : Live Coding (30 min - 20 points)

Objectif :

Barème & Questions (20 points)

Création de la classe RandonneeService (6 points)

Question 1 : Crée une classe RandonneeService dans app/Services/ et ajoute une méthode getRandonneesWithAvis() qui retourne la liste des randonnées avec leurs relations (membre, avis, suggestions). (2 points)
Question 2 : Ajoute une méthode incrementRandonneeViews(Randonnee $randonnee) qui incrémente le nombre de vues de la randonnée et sauvegarde la modification. (2 points)
Question 3 : Ajoute une méthode incrementAvisViews(Randonnee $randonnee) qui incrémente le nombre de vues de chaque avis lié à cette randonnée et sauvegarde les modifications. (2 points)

Implémentation du RandonneeController (6 points)

Question 4 : Crée un contrôleur RandonneeController et injecte RandonneeService dans son constructeur via l’Injection de Dépendance. (2 points)
Question 5 : Implémente une méthode index() qui :

Création de la Vue index.blade.php (6 points)

Question 6 : Crée une vue resources/views/randonnees/index.blade.php qui affiche les propositions de randonnée sous forme de tableau avec les colonnes suivantes :

Question 7 : Tester le bon fonctionnement de l’affichage et s’assurer que les vues des randonnées et des avis sont bien incrémentées après chaque rafraîchissement de la page. (2 points)

Définition de la Route et Test (2 points)

Question 8 : Déclare une route /randonnees dans routes/web.php pour appeler la méthode index() du RandonneeController. (1 point)
Question 9 : Lancer l’application, tester l’affichage dans le navigateur et vérifier que :

Partie 2 : Mini-Projet (45 min - 20 points)

Objectif :

Barème & Questions (20 points)

Modification des suggestions d’un avis (8 points)

Question 10 : Ajouter une méthode updateAvisSuggestions(Avis $avis, array $suggestionsIds) dans RandonneeService pour modifier les suggestions associées à un avis. (3 points)
Question 11 : Créer une méthode edit($id) dans AvisController qui retourne un formulaire d’édition avec la liste des suggestions disponibles. (2 points)
Question 12 : Implémenter une méthode update(Request $request, $id) dans AvisController qui met à jour les suggestions associées à un avis en utilisant RandonneeService. (2 points)
Question 13 : Implémenter une méthode show($id) dans ArticleController. (1 points)

Ajout des boutons “Modifier” et “Supprimer” (6 points)

Question 14 : Ajouter dans index.blade.php une colonne avec un bouton “Modifier” redirigeant vers la page d’édition de l’avis. (2 points)
Question 15 : Ajouter un bouton “Supprimer” avec un formulaire DELETE pour supprimer un avis. (2 points)
Question 16 : Implémenter la méthode destroy($id) dans AvisController pour gérer la suppression d’un avis. (2 points)

** Amélioration de l’affichage avec du CSS (6 points)**

Question 17 : Modifier index.blade.php pour afficher les randonnées et les avis sous forme de tableau stylisé en ajoutant un fichier CSS. (2 points)
Question 18 : Améliorer le formulaire d’édition pour qu’il soit plus clair et agréable visuellement. (2 points)
Question 19 : Vérifier que les boutons sont bien alignés et que l’affichage est responsive. (2 points)

Remarque

Bonne chance ! 🚀

Logo

Office de la Formation Professionnelle et de la Promotion du Travail

Direction Régionale Nord Ouest II

Solicode Examen de Fin de Module Date EFM : 12/02/2025
Filière : DMB Base de données Durée : 1 h 30 min
Groupe : 101 Variante 4 Année de formation : 2024/2025

Contexte Général

Tu travailles sur une application Laravel permettant aux joueurs d’une équipe de football de proposer une seule stratégie d’entraînement.
Les autres joueurs peuvent ensuite donner leur avis sur la stratégie proposée.

L’application doit permettre :

L’application doit afficher les stratégies proposées, mettre à jour certaines de leurs données et permettre l’édition et la suppression des avis.

L’examen est divisé en deux parties :

  1. Partie 1 : Live Coding (30 minutes, 20 points)
    • Affichage des stratégies d’entraînement avec leurs avis.
    • Incrémentation du nombre de vues d’une stratégie et de ses avis via un Service.
    • Ajout automatique d’un feedback “Stratégie Validée” si une stratégie reçoit plus de 10 avis positifs.
  2. Partie 2 : Mini-Projet (45 minutes, 20 points)
    • Ajout d’un formulaire permettant de modifier les types de feedback d’un avis.
    • Ajout des boutons “Modifier” et “Supprimer” pour chaque avis.
    • Amélioration du design de la page avec du CSS.

Partie 1 : Live Coding (30 min - 20 points)

Objectif :

Barème & Questions (20 points)

Création de la classe StrategieService (6 points)

Question 1 : Crée une classe StrategieService dans app/Services/ et ajoute une méthode getStrategiesWithAvis() qui retourne la liste des stratégies avec leurs relations (joueur, avis, typeFeedback). (2 points)
Question 2 : Ajoute une méthode incrementStrategieViews(Strategie $strategie) qui incrémente le nombre de vues de la stratégie et sauvegarde la modification. (2 points)
Question 3 : Ajoute une méthode incrementAvisViews(Strategie $strategie) qui incrémente le nombre de vues de chaque avis lié à cette stratégie et sauvegarde les modifications. (2 points)

Implémentation du StrategieController (6 points)

Question 4 : Crée un contrôleur StrategieController et injecte StrategieService dans son constructeur via l’Injection de Dépendance. (2 points)
Question 5 : Implémente une méthode index() qui :

Création de la Vue index.blade.php (6 points)

Question 6 : Crée une vue resources/views/strategies/index.blade.php qui affiche les stratégies sous forme de tableau avec les colonnes suivantes :

Question 7 : Tester le bon fonctionnement de l’affichage et s’assurer que les vues des stratégies et des avis sont bien incrémentées après chaque rafraîchissement de la page. (2 points)

Définition de la Route et Test (2 points)

Question 8 : Déclare une route /strategies dans routes/web.php pour appeler la méthode index() du StrategieController. (1 point)
Question 9 : Lancer l’application, tester l’affichage dans le navigateur et vérifier que :

Partie 2 : Mini-Projet (45 min - 20 points)

Objectif :

Barème & Questions (20 points)

Modification des feedbacks d’un avis (8 points)

Question 10 : Ajouter une méthode updateAvisFeedback(Avis $avis, array $feedbackIds) dans StrategieService pour modifier les feedbacks associés à un avis. (3 points)
Question 11 : Créer une méthode edit($id) dans AvisController qui retourne un formulaire d’édition avec la liste des feedbacks disponibles. (2 points)
Question 12 : Implémenter une méthode update(Request $request, $id) dans AvisController qui met à jour les feedbacks d’un avis en utilisant StrategieService. (2 points)
Question 13 : Implémenter une méthode show($id) dans ArticleController. (1 points)

Ajout des boutons “Modifier” et “Supprimer” (6 points)

Question 14 : Ajouter dans index.blade.php une colonne avec un bouton “Modifier” redirigeant vers la page d’édition de l’avis. (2 points)
Question 15 : Ajouter un bouton “Supprimer” avec un formulaire DELETE pour supprimer un avis. (2 points)
Question 16 : Implémenter la méthode destroy($id) dans AvisController pour gérer la suppression d’un avis. (2 points)

** Amélioration de l’affichage avec du CSS (6 points)**

Question 17 : Modifier index.blade.php pour afficher les stratégies et les avis sous forme de tableau stylisé en ajoutant un fichier CSS. (2 points)
Question 18 : Améliorer le formulaire d’édition pour qu’il soit plus clair et agréable visuellement. (2 points)
Question 19 : Vérifier que les boutons sont bien alignés et que l’affichage est responsive. (2 points)

Remarque

Bonne chance ! 🚀

Logo

Office de la Formation Professionnelle et de la Promotion du Travail

Direction Régionale Nord Ouest II

Solicode Examen de Fin de Module Date EFM : 12/02/2025
Filière : DMB Base de données Durée : 1 h 30 min
Groupe : 101 Variante 5 Année de formation : 2024/2025

Contexte Général

Tu travailles sur une application Laravel permettant aux utilisateurs de partager une seule recette de cuisine.
Les autres utilisateurs peuvent ensuite donner leur avis et des suggestions d’amélioration sur la recette.

L’application doit permettre :

L’application doit afficher les recettes, mettre à jour certaines de leurs données et permettre l’édition et la suppression des avis.

L’examen est divisé en deux parties :

  1. Partie 1 : Live Coding (30 minutes, 20 points)
    • Affichage des recettes avec leurs avis.
    • Incrémentation du nombre de vues d’une recette et de ses avis via un Service.
    • Ajout automatique d’une suggestion “Plat Favori” si une recette reçoit plus de 10 avis positifs.
  2. Partie 2 : Mini-Projet (45 minutes, 20 points)
    • Ajout d’un formulaire permettant de modifier les suggestions associées à un avis.
    • Ajout des boutons “Modifier” et “Supprimer” pour chaque avis.
    • Amélioration du design de la page avec du CSS.

Partie 1 : Live Coding (30 min - 20 points)

Objectif :

Barème & Questions (20 points)

Création de la classe RecetteService (6 points)

Question 1 : Crée une classe RecetteService dans app/Services/ et ajoute une méthode getRecettesWithAvis() qui retourne la liste des recettes avec leurs relations (utilisateur, avis, suggestions). (2 points)
Question 2 : Ajoute une méthode incrementRecetteViews(Recette $recette) qui incrémente le nombre de vues de la recette et sauvegarde la modification. (2 points)
Question 3 : Ajoute une méthode incrementAvisViews(Recette $recette) qui incrémente le nombre de vues de chaque avis lié à cette recette et sauvegarde les modifications. (2 points)

Implémentation du RecetteController (6 points)

Question 4 : Crée un contrôleur RecetteController et injecte RecetteService dans son constructeur via l’Injection de Dépendance. (2 points)
Question 5 : Implémente une méthode index() qui :

Création de la Vue index.blade.php (6 points)

Question 6 : Crée une vue resources/views/recettes/index.blade.php qui affiche les recettes sous forme de tableau avec les colonnes suivantes :

Question 7 : Tester le bon fonctionnement de l’affichage et s’assurer que les vues des recettes et des avis sont bien incrémentées après chaque rafraîchissement de la page. (2 points)

Définition de la Route et Test (2 points)

Question 8 : Déclare une route /recettes dans routes/web.php pour appeler la méthode index() du RecetteController. (1 point)
Question 9 : Lancer l’application, tester l’affichage dans le navigateur et vérifier que :

Partie 2 : Mini-Projet (45 min - 20 points)

Objectif :

Barème & Questions (20 points)

Modification des suggestions d’un avis (8 points)

Question 10 : Ajouter une méthode updateAvisSuggestions(Avis $avis, array $suggestionsIds) dans RecetteService pour modifier les suggestions associées à un avis. (3 points)
Question 11 : Créer une méthode edit($id) dans AvisController qui retourne un formulaire d’édition avec la liste des suggestions disponibles. (2 points)
Question 12 : Implémenter une méthode update(Request $request, $id) dans AvisController qui met à jour les suggestions associées à un avis en utilisant RecetteService. (2 points)
Question 13 : Implémenter une méthode show($id) dans ArticleController. (1 points)

Ajout des boutons “Modifier” et “Supprimer” (6 points)

Question 14 : Ajouter dans index.blade.php une colonne avec un bouton “Modifier” redirigeant vers la page d’édition de l’avis. (2 points)
Question 15 : Ajouter un bouton “Supprimer” avec un formulaire DELETE pour supprimer un avis. (2 points)
Question 16 : Implémenter la méthode destroy($id) dans AvisController pour gérer la suppression d’un avis. (2 points)

** Amélioration de l’affichage avec du CSS (6 points)**

Question 17 : Modifier index.blade.php pour afficher les recettes et les avis sous forme de tableau stylisé en ajoutant un fichier CSS. (2 points)
Question 18 : Améliorer le formulaire d’édition pour qu’il soit plus clair et agréable visuellement. (2 points)
Question 19 : Vérifier que les boutons sont bien alignés et que l’affichage est responsive. (2 points)

Remarque

Bonne chance ! 🚀