From 8933d42027905e65ed9d2e28e718184cb134891c Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Tue, 29 Nov 2022 21:22:09 +0100
Subject: [PATCH] =?UTF-8?q?TP8=20Ex3=20termin=C3=A9.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controller/ControleurLivre.php           | 86 +++++++++++++++++++++++-
 index.php                                |  2 +
 resources/views/livre/definir-auteur.php | 39 +++++++++++
 3 files changed, 126 insertions(+), 1 deletion(-)
 create mode 100644 resources/views/livre/definir-auteur.php

diff --git a/controller/ControleurLivre.php b/controller/ControleurLivre.php
index 8d47615..1cbfc5a 100644
--- a/controller/ControleurLivre.php
+++ b/controller/ControleurLivre.php
@@ -54,6 +54,90 @@ class ControleurLivre extends ControleurObjet
 
     public static function definirAuteurs(): string
     {
-        return "";
+        if (!empty($_GET["numLivre"])){
+            $autors = Auteur::getAllAuteurs();
+            $bookAutors = Auteur::getAuteursByNumLivre($_GET["numLivre"]);
+            $book = Livre::getLivreByNumLivre($_GET["numLivre"]);
+
+            $autorsList = [];
+            foreach ($autors as $auteur){
+                $isBookAutor = false;
+                foreach ($bookAutors as $livreAuteur){
+                    if($auteur->numAuteur == $livreAuteur->numAuteur){
+                        $isBookAutor = true;
+                        break;
+                    }
+                }
+                $autorsList[] = [
+                    "numAuteur" => $auteur->numAuteur,
+                    "nom" => $auteur->nom,
+                    "prenom" => $auteur->prenom,
+                    "anneeNaissance" => $auteur->anneeNaissance,
+                    "isBookAutor" => $isBookAutor
+                ];
+            }
+
+            return view('livre.definir-auteur', [
+                "autorsList" => $autorsList,
+                "book" => $book
+            ]);
+        }else{
+            return view('return-message', [
+                'pageTitle' => "Définir les auteurs d'un livre",
+                'returnMessage' => [
+                    "status" => "danger",
+                    "title" => "Erreur",
+                    "message" => "Il manque des paramètres dans l'url"
+                ]
+            ]);
+        }
+    }
+
+    public static function supprimerAuteurDuLivre(): string
+    {
+        if (!empty($_GET["numLivre"]) && !empty($_GET["numAuteur"])){
+            Livre::deleteAuteurForLivre($_GET["numLivre"], $_GET["numAuteur"]);
+            return view('return-message', [
+                'pageTitle' => "Supprimer un auteur d'un livre",
+                'returnMessage' => [
+                    "status" => "success",
+                    "title" => "Supprimer un auteur d'un livre",
+                    "message" => "Suppression de l'auteur réussie."
+                ]
+            ]);
+        }
+
+        return view('return-message', [
+            'pageTitle' => "Supprimer un auteur d'un livre",
+            'returnMessage' => [
+                "status" => "danger",
+                "title" => "Erreur",
+                "message" => "Il manque des paramètres dans l'url"
+            ]
+        ]);
+    }
+
+    public static function ajouterAuteurDuLivre(): string
+    {
+        if (!empty($_GET["numLivre"]) && !empty($_GET["numAuteur"])){
+            Livre::addAuteurForLivre($_GET["numLivre"], $_GET["numAuteur"]);
+            return view('return-message', [
+                'pageTitle' => "ajouter un auteur à un livre",
+                'returnMessage' => [
+                    "status" => "success",
+                    "title" => "Supprimer un auteur d'un livre",
+                    "message" => "Suppression de l'auteur réussie."
+                ]
+            ]);
+        }
+
+        return view('return-message', [
+            'pageTitle' => "ajouter un auteur à un livre",
+            'returnMessage' => [
+                "status" => "danger",
+                "title" => "Erreur",
+                "message" => "Il manque des paramètres dans l'url"
+            ]
+        ]);
     }
 }
\ No newline at end of file
diff --git a/index.php b/index.php
index 03d008d..4825144 100644
--- a/index.php
+++ b/index.php
@@ -33,6 +33,8 @@ if (empty($_REQUEST["action"])) {
             "supprimerObjet" => ControleurObjet::supprimerObjet(),
             "definirAuteurs" => ControleurLivre::definirAuteurs(),
             "definirNationalites" => ControleurAuteur::definirNationalites(),
+            "supprimerAuteurDuLivre" => ControleurLivre::supprimerAuteurDuLivre(),
+            "ajouterAuteurDuLivre" => ControleurLivre::ajouterAuteurDuLivre(),
             default          => ControleurAuteur::lireAuteur(),
         };
     } catch (Exception $e) {
diff --git a/resources/views/livre/definir-auteur.php b/resources/views/livre/definir-auteur.php
new file mode 100644
index 0000000..91e9af5
--- /dev/null
+++ b/resources/views/livre/definir-auteur.php
@@ -0,0 +1,39 @@
+@extends('layouts.page-layout')
+
+@section('title', 'Définir les auteurs d'un livre')
+
+@section('content')
+<div class="container mt-3">
+    <h1>Définir les auteurs d'un livre</h1>
+    <p>Voici la liste des auteurs. Vous pouvez choisir de les associers ou de les dissociers du livre.</p>
+
+    <table class="table">
+        <thead>
+            <tr class="table-dark">
+                <th scope="col">n°</th>
+                <th scope="col">Nom</th>
+                <th scope="col">Prénom</th>
+                <th scope="col">Année de naissance</th>
+                <th scope="col">Action</th>
+            </tr>
+        </thead>
+        <tbody>
+            @foreach($autorsList as $autor)
+                <tr>
+                    <th scope="row">{{ $autor['numAuteur'] }}</th>
+                    <td>{{ $autor['nom'] }}</td>
+                    <td>{{ $autor['prenom'] }}</td>
+                    <td>{{ $autor['anneeNaissance'] }}</td>
+                    @if($autor['isBookAutor'])
+                        <td><a href="index.php?action=supprimerAuteurDuLivre&numLivre={{ $book->numLivre }}&numAuteur={{ $autor['numAuteur'] }}"
+                               class="btn btn-sm btn-danger">Dissocier</a> </td>
+                    @else
+                        <td><a href="index.php?action=ajouterAuteurDuLivre&numLivre={{ $book->numLivre }}&numAuteur={{ $autor['numAuteur'] }}"
+                               class="btn btn-sm btn-success">Associer</a> </td>
+                    @endif
+                </tr>
+            @endforeach
+        </tbody>
+    </table>
+</div>
+@endsection
\ No newline at end of file
-- 
GitLab