diff --git a/app/Http/Controllers/GameListController.php b/app/Http/Controllers/GameListController.php index e4a4435..f7a3c36 100644 --- a/app/Http/Controllers/GameListController.php +++ b/app/Http/Controllers/GameListController.php @@ -67,7 +67,8 @@ class GameListController extends Controller */ public function edit(GameList $list) { - $this->authorize('update', $list); + Gate::authorize('update', $list); + return view('lists.edit', compact('list')); } @@ -76,7 +77,7 @@ class GameListController extends Controller */ public function update(Request $request, GameList $list) { - $this->authorize('update', $list); + Gate::authorize('update', $list); $request->validate([ 'name' => 'required|string|max:255', @@ -96,7 +97,7 @@ class GameListController extends Controller */ public function destroy(GameList $list) { - $this->authorize('delete', $list); + Gate::authorize('delete', $list); if ($list->is_default) { return redirect()->back()->with('error', 'Cannot delete default lists.'); @@ -121,7 +122,7 @@ class GameListController extends Controller public function removeGame(GameList $list, Game $game) { - $this->authorize('update', $list); + Gate::authorize('update', $list); $list->games()->detach($game->id); diff --git a/app/Http/Controllers/ReviewController.php b/app/Http/Controllers/ReviewController.php index d462dda..19cd983 100644 --- a/app/Http/Controllers/ReviewController.php +++ b/app/Http/Controllers/ReviewController.php @@ -60,7 +60,7 @@ class ReviewController extends Controller $validated = $request->validate([ 'content' => 'required|string|min:10|max:1000', 'recommended' => 'required|boolean', - 'rating' => 'required|integer|between:1,10', + 'rating' => 'required|integer|between:1,20', ]); $review->update($validated); diff --git a/public/img/star-empty.svg b/public/img/star-empty.svg new file mode 100644 index 0000000..6629df8 --- /dev/null +++ b/public/img/star-empty.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/img/star-full.svg b/public/img/star-full.svg new file mode 100644 index 0000000..6e69846 --- /dev/null +++ b/public/img/star-full.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/views/games/show.blade.php b/resources/views/games/show.blade.php index e3a89ff..233a546 100644 --- a/resources/views/games/show.blade.php +++ b/resources/views/games/show.blade.php @@ -3,150 +3,289 @@ @section('title', $game->name) @section('content') -
-
-
-
- {{ $game->name }} -
-
-
-
{{ $game->name }}
-

{{ $game->first_release_date->format('Y') }}

-
- @auth - - @endauth -
-
-
+ +
+ @if($game->screenshots()->count()) +
+ @else +
+ @endif -
-
-
Released on
-
-
-
-
- @foreach($game->platforms()->get() as $platform) - {{ $platform->name }} - @endforeach -
-
-
-
- -
-
-
Genres
-
-
-
-
- @foreach($game->genres()->get() as $genre) - {{ $genre->name }} - @endforeach -
-
-
-
- -
-
-
Details
-
-
- @if($game->rating) -
-
Rating
-
-
- @for($i = 1; $i <= 10; $i++) - - @endfor -
- ({{ $game->rating_count }} ratings) +
+
+
+
+ {{ $game->name }} + @if($game->rating) +
+
+ {{ number_format($game->rating, 1) }}
@endif
-
- -
-
-
-
About
+
+

{{ $game->name }}

+
+ @foreach($game->genres()->get() as $genre) + {{ $genre->name }} + @endforeach
-
-

{{ $game->summary }}

+
+ @foreach($game->platforms()->get() as $platform) + {{ $platform->name }} + @endforeach +
+

{{ Str::limit($game->summary, 200) }}

+
+
+ + {{ $game->first_release_date->format('F j, Y') }} +
+ @if($game->rating) +
+
+ @for($i = 1; $i <= 5; $i++) + + @endfor +
+ ({{ number_format($game->rating_count) }} ratings) +
+ @endif + @auth + + @endauth + @auth + + Write a Review + + @endauth
+
+
+
- @if($game->screenshots()->count()) -
-
-
Screenshots
+
+ + + + +
+ +
+
+
+
+
+
Summary
+
+
+

{{ $game->summary }}

+ @if($game->storyline) +
Storyline
+

{{ $game->storyline }}

+ @endif +
+ + @if($game->dlcs->count() > 0) +
+
+
DLCs & Expansions
+
+
+
+ @foreach($game->dlcs as $dlc) +
+
+ {{ $dlc->name }} +
+
{{ $dlc->name }}
+ View Details +
+
+
+ @endforeach +
+
+
+ @endif +
+ +
+
+
+
Game Details
+
+
+
    +
  • +
    + Release Date + {{ $game->first_release_date->format('F j, Y') }} +
    +
  • + @if($game->rating) +
  • +
    + Rating + {{ number_format($game->rating, 1) }}/100 ({{ number_format($game->rating_count) }} ratings) +
    +
  • + @endif +
  • +
    + Genres +
    + @foreach($game->genres()->get() as $genre) + {{ $genre->name }} + @endforeach +
    +
    +
  • +
  • +
    + Platforms +
    + @foreach($game->platforms()->get() as $platform) + {{ $platform->name }} + @endforeach +
    +
    +
  • + @if($game->url) +
  • +
    + Website + Visit +
    +
  • + @endif +
+
+
+
+
+
+ + + @if($game->screenshots()->count() || $game->videos()->count()) +
+ @if($game->screenshots()->count()) +
+
+
Screenshots
+ +
+
@foreach($game->screenshots()->get() as $screenshot) -
- Game Screenshot + @endforeach
+
@endif @if($game->videos()->count()) -
-
-
Videos
-
+
+
+
Videos
+ +
+
@foreach($game->videos()->get() as $video) -
-
- +
+
+
+ +
+
+
{{ $video->name }}
+
@endforeach
+
@endif +
+ @endif -
+ +
+
-
Reviews
+
User Reviews
@auth Write a Review @@ -155,73 +294,234 @@
@if($game->reviews->isEmpty()) -

No reviews yet. Be the first to review this game!

+
@else - @foreach($game->reviews as $review) -
-
-
-
-
- +
+
+
+
+

+ {{ number_format($game->reviews->avg('rating'), 1) }} +

+
+ @for($i = 1; $i <= 5; $i++) + + @endfor +
+

Based on {{ $game->reviews->count() }} reviews

+
+
+ {{ $game->reviews->where('recommended', true)->count() }} + Recommended
-
-
- - {{ $review->user->name }} - -
- - {{ $review->created_at->diffForHumans() }} - +
+ {{ $game->reviews->where('recommended', false)->count() }} + Not Recommended
-
-
- @for($i = 1; $i <= 10; $i++) - - @endfor +
+
+
+
+
+
+
Rating Distribution
+ @for($i = 10; $i >= 1; $i--) + @php + $count = $game->reviews->where('rating', '>=', ($i-1)*2)->where('rating', '<', $i*2)->count(); + $percentage = $game->reviews->count() > 0 ? ($count / $game->reviews->count()) * 100 : 0; + @endphp +
+
{{ $i*2-1 }}-{{ $i*2 }}
+
+
+
+
{{ $count }}
- @if($review->recommended) - Recommended - @else - Not Recommended + @endfor +
+
+
+
+ +
+ @foreach($game->reviews as $review) +
+
+
+
+
+ +
+
+
+ + {{ $review->user->name }} + +
+ + {{ $review->created_at->diffForHumans() }} + +
+
+
+
+ {{ $review->rating }}/20 +
+ @if($review->recommended) + Recommended + @else + Not Recommended + @endif +
+
+
+
+
+ {!! nl2br(e(Str::limit($review->content, 300))) !!} + @if(strlen($review->content) > 300) + Read more + @endif +
+
+
-
-
- {!! nl2br(e($review->content)) !!} -
-
- -
- @endforeach + @endforeach +
@endif
+ + + @if($game->similar_games->count() > 0) + + @endif
+ + @endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 0cd94c5..0c81433 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -42,6 +42,7 @@ linear-gradient(90deg, var(--primary), var(--accent)) border-box; } + @stack('styles')
@@ -106,5 +107,6 @@ + @stack('scripts') diff --git a/resources/views/reviews/_form.blade.php b/resources/views/reviews/_form.blade.php index b16a316..af24fd7 100644 --- a/resources/views/reviews/_form.blade.php +++ b/resources/views/reviews/_form.blade.php @@ -1,101 +1,129 @@ -@extends('layouts.app') +@csrf +@if(isset($review)) + @method('PUT') +@endif -@section('title', isset($review) ? 'Edit Review' : 'Write a Review') - -@section('content') -
-
-
-
-
-

{{ isset($review) ? 'Edit Review' : 'Write a Review' }}

-
-
-
- @csrf - @if(isset($review)) - @method('PUT') - @endif - -
- - - @error('rating') -
{{ $message }}
- @enderror -
- -
- - - @error('content') -
{{ $message }}
- @enderror -
- -
-
- recommended ? 'checked' : '' }}> - -
-
- -
- -
-
-
-
+
+ +
+
+ @for ($i = 1; $i <= 10; $i++) + + @endfor
+
+ {{ isset($review) ? $review->rating : 0 }}/10 +
+
+ + @error('rating') +
{{ $message }}
+ @enderror +
+ +
+ + + @error('content') +
{{ $message }}
+ @enderror +
+ +
+
+ recommended ? 'checked' : '' }}> +
+
+ +
+ @push('styles') - @endpush @push('scripts') - @endpush -@endsection \ No newline at end of file