From d900470e3881752198e97172b32f924ea803d803 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Chlo=C3=A9=20JACOB?= <chloe.jacob4@etu.unistra.fr>
Date: Sun, 14 May 2023 19:07:53 +0200
Subject: [PATCH] quelques modifications

---
 .../Controllers/Admin/PieceController.php     | 98 +++++++++++++++++++
 .../Controllers/NationalityController.php     |  2 +-
 app/Http/Controllers/PieceController.php      | 21 +---
 app/Models/Nationality.php                    |  6 ++
 .../components/nationality/liste.blade.php    |  2 +-
 .../views/components/piece/liste.blade.php    |  9 +-
 resources/views/nationality/show.blade.php    | 34 +++++++
 routes/web.php                                | 13 +++
 8 files changed, 163 insertions(+), 22 deletions(-)
 create mode 100644 app/Http/Controllers/Admin/PieceController.php
 create mode 100644 resources/views/nationality/show.blade.php

diff --git a/app/Http/Controllers/Admin/PieceController.php b/app/Http/Controllers/Admin/PieceController.php
new file mode 100644
index 0000000..5db0280
--- /dev/null
+++ b/app/Http/Controllers/Admin/PieceController.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\PieceRequest;
+use App\Models\Piece;
+use Illuminate\Http\Request;
+
+class PieceController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        return view('piece.create');
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(PieceRequest $request)
+    {
+        $data = $request->validated();
+        $piece = new Piece();
+        $piece->fill($data);
+        $piece->nationality()->associate($data['nationality']);
+        $piece->user()->associate($data['user']);
+        $piece->save();
+        return redirect()->route('piece.show', $piece);
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Piece  $piece
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Piece $piece)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\Models\Piece  $piece
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(Piece $piece)
+    {
+        return view('piece.edit', ['piece' => $piece]);
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Piece  $piece
+     * @return \Illuminate\Http\Response
+     */
+    public function update(PieceRequest $request, Piece $piece)
+    {
+        $data = $request->validated();
+        $piece->fill($data);
+        $piece->nationality()->associate($data['nationality']);
+        $piece->save();
+        return redirect()->route('piece.show', ['piece' => $piece]);
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Piece  $piece
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Piece $piece)
+    {
+        $piece->delete();
+        return redirect()->route('piece.index');
+    }
+}
diff --git a/app/Http/Controllers/NationalityController.php b/app/Http/Controllers/NationalityController.php
index 4bb9818..dd34c2e 100644
--- a/app/Http/Controllers/NationalityController.php
+++ b/app/Http/Controllers/NationalityController.php
@@ -46,7 +46,7 @@ public function store(Request $request)
      */
     public function show(Nationality $nationality)
     {
-        //
+        return view('nationality.show', ['nationality' => $nationality]);
     }
 
     /**
diff --git a/app/Http/Controllers/PieceController.php b/app/Http/Controllers/PieceController.php
index 561fbf4..5186f71 100644
--- a/app/Http/Controllers/PieceController.php
+++ b/app/Http/Controllers/PieceController.php
@@ -25,7 +25,7 @@ public function index()
      */
     public function create()
     {
-        return view('piece.create');
+        //
     }
 
     /**
@@ -36,13 +36,7 @@ public function create()
      */
     public function store(PieceRequest $request)
     {
-        $data = $request->validated();
-        $piece = new Piece();
-        $piece->fill($data);
-        $piece->nationality()->associate($data['nationality']);
-        $piece->user()->associate($data['user']);
-        $piece->save();
-        return redirect()->route('piece.show', $piece);
+        //
     }
 
     /**
@@ -64,7 +58,7 @@ public function show(Piece $piece)
      */
     public function edit(Piece $piece)
     {
-        return view('piece.edit', ['piece' => $piece]);
+        //
     }
 
     /**
@@ -76,11 +70,7 @@ public function edit(Piece $piece)
      */
     public function update(PieceRequest $request, Piece $piece)
     {
-        $data = $request->validated();
-        $piece->fill($data);
-        $piece->nationality()->associate($data['nationality']);
-        $piece->save();
-        return redirect()->route('piece.show', ['piece' => $piece]);
+        //
     }
 
     /**
@@ -91,7 +81,6 @@ public function update(PieceRequest $request, Piece $piece)
      */
     public function destroy(Piece $piece)
     {
-        $piece->delete();
-        return redirect()->route('piece.index');
+        //
     }
 }
diff --git a/app/Models/Nationality.php b/app/Models/Nationality.php
index be1ecb4..71b4ac6 100644
--- a/app/Models/Nationality.php
+++ b/app/Models/Nationality.php
@@ -8,4 +8,10 @@
 class Nationality extends Model
 {
     use HasFactory;
+
+    protected $fillable = ['name'];
+
+    public function piece() {
+        return $this->hasMany(Piece::class);
+    }
 }
diff --git a/resources/views/components/nationality/liste.blade.php b/resources/views/components/nationality/liste.blade.php
index 1e9d8c0..2dc6eb3 100644
--- a/resources/views/components/nationality/liste.blade.php
+++ b/resources/views/components/nationality/liste.blade.php
@@ -3,7 +3,7 @@
     <div class="flex justify-around">
         @foreach ($nationalities as $nationality)
         <div class="border-2 border-red-900 flex flex-col">
-            <h3 class="text-center">{{ $nationality->name }}</h3>
+            <a href="{{ route('nationality.show', ['nationality' => $nationality]) }}"><h3 class="text-center">{{ $nationality->name }}</h3></a>
         </div>
         @endforeach
     </div>
diff --git a/resources/views/components/piece/liste.blade.php b/resources/views/components/piece/liste.blade.php
index 6bf13d7..ccf5517 100644
--- a/resources/views/components/piece/liste.blade.php
+++ b/resources/views/components/piece/liste.blade.php
@@ -1,15 +1,16 @@
 <div class="py-2">
     <h1 class="text-2xl font-bold text-center">LISTE DE TOUTES LES PIECES :</h1>
+    {{-- <p>{{ dump($pieces) }}</p> --}}
     <div class="flex justify-around">
         @foreach ($pieces as $piece)
         <div class="border-2 border-red-900 flex flex-col p-2">
             <h3 class="text-center">{{ $piece->name }}</h3>
             <p><b>Description : </b>{{ $piece->description }}</p>
             <p><b>Prix : </b>{{ $piece->prix }} €</p>
-            <p><b>Nationalité : </b>{{ $piece->nationality->name ?? '' }}</p>
-            <!--pcq toutes les nationalités dont pas rempli, sinon mettre un if-->
-            <button class="border-2 border-green-500"><a href="{{ route('piece.show', ['piece' => $piece]) }}">EN SAVOIR
-                    PLUS</a></button>
+            @if(isset($piece->nationality))
+                <p><b>Nationalité : </b>{{ $piece->nationality->name }}</p>
+            @endif
+            <button class="border-2 border-green-500"><a href="{{ route('piece.show', ['piece' => $piece]) }}">EN SAVOIR PLUS</a></button>
         </div>
         @endforeach
     </div>
diff --git a/resources/views/nationality/show.blade.php b/resources/views/nationality/show.blade.php
new file mode 100644
index 0000000..525fb38
--- /dev/null
+++ b/resources/views/nationality/show.blade.php
@@ -0,0 +1,34 @@
+@auth
+<x-app-layout>
+    <div class="flex justify-center">
+        <div class="w-2/5">
+            <div class="border-2 border-red-900 flex flex-col">
+                <h2 class="text-center">NOM : {{ $nationality->name }}</h2>
+                <div>
+                    <p>Une pèce peut avoir 1 et un seul pays</p>
+                    <p>ATTENTION PROBLEME QQP</p>
+                    {{-- @if ($nationality->pieces)
+                    <ul>
+                        @foreach ($nationality->pieces as $piece)
+                        <li>{{ $piece->name }}</li>
+                        @endforeach
+                    </ul>
+                    @endif --}}
+                </div>
+            </div>
+        </div>
+    </div>
+</x-app-layout>
+@endauth
+
+@guest
+<x-guest-layout>
+    <div class="flex justify-center">
+        <div class="w-2/5">
+            <div class="border-2 border-red-900 flex flex-col">
+                <h2 class="text-center">{{ $nationality->name }}</h2>
+            </div>
+        </div>
+    </div>
+</x-guest-layout>
+@endguest
diff --git a/routes/web.php b/routes/web.php
index d4bc176..fc77326 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1,6 +1,8 @@
 <?php
 
 use App\Http\Controllers\PieceController;
+use App\Http\Controllers\Admin\PieceController as AdminPieceController;
+use App\Http\Controllers\NationalityController;
 use Illuminate\Support\Facades\Route;
 
 /*
@@ -27,6 +29,11 @@
 Route::put('/piece/{piece}', [PieceController::class, 'update'])->name('piece.update');
 Route::delete('/piece/{piece}', [PieceController::class, 'destroy'])->name('piece.destroy');
 
+
+Route::get('/nationality/{nationality}', [NationalityController::class, 'show'])->name('nationality.show');
+
+
+
 // CONNECTED
 Route::middleware([
     'auth:sanctum',
@@ -37,3 +44,9 @@
         return view('dashboard');
     })->name('dashboard');
 });
+
+Route::group(['as' => 'admin.', 'prefix'=>'admin/'], function () {
+    Route::resource('piece', AdminPieceController::class);
+    // Route::resource('nationality', AdminNationalityController::class);
+    // Route::resource('user', AdminUserController::class);
+});
-- 
GitLab