myvideogamelist.com/resources/views/pages/game-lists/create.blade.php

470 lines
24 KiB
PHP
Raw Normal View History

@php
use App\Models\Game;
use App\Models\GameList;
use App\Models\Genre;
use App\Models\Platform;
// Check to see if the user is logged in.
if (Auth::check()) {
// Check to see if the user has this game on their list already.
$hasGame = GameList::whereUserId(Auth::user()->id)->whereGameId($gameId)->first();
}
// Fetch the game object.
$game = Game::findOrFail($gameId);
// Turn $game->genre_ids into an array.
$genres = explode(',', $game->genre_ids);
// Determine the friendly genre name(s).
$genreNames = [];
foreach ($genres as $genre) {
array_push($genreNames, Genre::whereId($genre)->value('name'));
}
// Create a comma separated string of the genre names.
$genreNames = implode(', ', $genreNames);
// Determine what other platforms this game exists on.
$alsoExistsOn = Game::whereName($game->name)->where('id', '!=', $game->id)->get();
$platforms = [];
if (count($alsoExistsOn) >= 1) {
foreach ($alsoExistsOn as $alsoExistsOnGame) {
array_push($platforms, [
'id' => $alsoExistsOnGame->id,
'name' => Platform::whereId($alsoExistsOnGame->platform_id)->value('name'),
]);
}
}
@endphp
<x-base-layout>
<!--begin::Row-->
<div class="row gy-5 g-xl-8">
<!--begin::Col-->
<div class="col-xxl-8">
<div class="card shadow-sm mb-2">
<div class="card-header">
<h3 class="card-title">{{ $game->name }}</h3>
<div class="card-toolbar">
<div class="text-grey-900 bg-secondary p-3 rounded">
{{ $game->platform()->get()[0]->name }}
</div>
</div>
</div>
<div class="card-body">
@if (count($errors) > 0)
<!--begin::Alert-->
<div class="alert alert-danger d-flex align-items-center p-5 mb-10">
<span class="svg-icon svg-icon-2hx svg-icon-danger me-4">
<i class="fad fa-times-circle"></i>
</span>
<div class="d-flex flex-column">
<h4 class="mb-1 text-danger">Error Adding Game to List</h4>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
<!--end::Alert-->
@endif
@if ($hasGame)
<!--begin::Alert-->
<div class="alert alert-danger d-flex align-items-center p-5 mb-0">
<span class="svg-icon svg-icon-2hx svg-icon-danger me-4">
<i class="fad fa-times-circle"></i>
</span>
<div class="d-flex flex-column">
<h4 class="mb-1 text-danger">Error Adding Game to List</h4>
<p>You already have this game on your list.</p>
</div>
</div>
<!--end::Alert-->
@else
<form class="form w-100" novalidate="novalidate" action="{{ route('games.list.store') }}" method="post">
@csrf
@isset ($game->alt_titles)
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Display Title</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="name">
<option></option>
@php
$altTitles = explode('|', $game->alt_titles);
@endphp
@foreach ($altTitles as $altTitle)
<option value="{{ $altTitle }}" @selected(old('name') == $altTitle)>
{{ $altTitle }}
</option>
@endforeach
</select>
<div class="text-muted mt-1">The title of the game that will be displayed on your list. If nothing is selected the default title will be used.</div>
<!--end::Input-->
</div>
<!--end::Input group-->
@else
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Name</label>
<!--end::Label-->
<!--begin::Input-->
<input class="form-control" type="text" name="name" value="{{ $game->name }}" disabled/>
<!--end::Input-->
</div>
<!--end::Input group-->
@endisset
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Ownership</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="ownership">
<option></option>
@php
$ownerships = [
1 => 'Played, but don\'t own',
2 => 'Own Digital Copy',
3 => 'Own Retail Version',
4 => 'Own Collectors Edition',
]
@endphp
@foreach ($ownerships as $key => $value)
<option value="{{ $key }}" @selected(old('ownership') == $key)>
{{ $value }}
</option>
@endforeach
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark required">Status</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" name="status">
<option></option>
@php
$statuses = [
1 => 'Playing',
2 => 'Continuously Playing',
3 => 'Completed',
4 => 'On-Hold',
5 => 'Dropped',
6 => 'Plan to Play',
]
@endphp
@foreach ($statuses as $key => $value)
<option value="{{ $key }}" @selected(old('status') == $key)>
{{ $value }}
</option>
@endforeach
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Rating</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="rating">
<option></option>
@php
$ratings = [
1 => '1 (Unplayable)',
2 => '2 (Horrible)',
3 => '3 (Very Bad)',
4 => '4 (Bad)',
5 => '5 (Playable)',
6 => '6 (Fine)',
7 => '7 (Good)',
8 => '8 (Very Good)',
9 => '9 (Great)',
10 => '10 (Masterpiece)',
]
@endphp
@foreach ($ratings as $key => $value)
<option value="{{ $key }}" @selected(old('rating') == $key)>
{{ $value }}
</option>
@endforeach
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Priority</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="priority">
<option></option>
@php
$priorities = [
1 => 'Low',
2 => 'Medium',
3 => 'High',
]
@endphp
@foreach ($priorities as $key => $value)
<option value="{{ $value }}" @selected(old('priority') == $value)>
{{ $value }}
</option>
@endforeach
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Difficulty</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="difficulty">
<option></option>
@php
$difficulties = [
1 => 'Easy',
2 => 'Medium',
3 => 'Hard',
4 => 'Extremely Hard',
]
@endphp
@foreach ($difficulties as $key => $value)
<option value="{{ $value }}" @selected(old('difficulty') == $value)>
{{ $value }}
</option>
@endforeach
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Hours Played</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="hoursPlayed">
<option></option>
@php
$hoursPlayed = [
1 => 'Less than 1 Hour',
2 => '1-2 Hours',
3 => '3-4 Hours',
4 => '5-10 Hours',
5 => '11-20 Hours',
6 => '21-30 Hours',
7 => '31-40 Hours',
8 => '41-50 Hours',
9 => '51-75 Hours',
10 => '76-100 Hours',
11 => '101-200 Hours',
12 => '201-500 Hours',
13 => '501+ Hours',
]
@endphp
@foreach ($hoursPlayed as $key => $value)
<option value="{{ $key }}" @selected(old('hoursPlayed') == $key)>
{{ $value }}
</option>
@endforeach
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Start Date</label>
<!--end::Label-->
<!--begin::Input-->
<div class="input-group mb-5">
<span class="input-group-text" id="basic-addon1"><i class="fal fa-calendar-day"></i></span>
<input class="form-control" placeholder="Pick a date" id="kt_datepicker_start" type="text" name="start_date" value="" />
</div>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Finish Date</label>
<!--end::Label-->
<!--begin::Input-->
<div class="input-group mb-5">
<span class="input-group-text" id="basic-addon1"><i class="fal fa-calendar-day"></i></span>
<input class="form-control" placeholder="Pick a date" id="kt_datepicker_finish" type="text" name="finish_date" value="" />
</div>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Replay Value</label>
<!--end::Label-->
<!--begin::Input-->
<select class="form-select" data-control="select2" data-placeholder="Select an option" data-allow-clear="true" name="replayValue">
<option></option>
<option value="1">Very Low</option>
<option value="2">Low</option>
<option value="3">Medium</option>
<option value="4">High</option>
<option value="5">Very High</option>
@endphp
</select>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-12 mb-5">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder text-dark">Notes</label>
<!--end::Label-->
<!--begin::Input-->
<textarea class="form-control" data-kt-autosize="true" rows="5" name="notes">{{ old('notes') }}</textarea>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row col-md-6 mb-5">
<!--begin::Input-->
<div class="form-check form-switch form-check-custom form-check-solid">
<input class="form-check-input" type="checkbox" name="isReplaying" value="1" id="isReplaying"/>
<label class="form-check-label" for="isReplaying">Are You Replaying This Game?</label>
</div>
<!--end::Input-->
</div>
<!--end::Input group-->
<!--begin::Input-->
<input type="hidden" name="gameId" value="{{ $game->id }}" />
<!--end::Input-->
<!--begin::Actions-->
<!--begin::Submit button-->
<button type="submit" id="kt_gameList_submit" class="btn btn-primary">
<span class="indicator-label">Submit</span>
<span class="indicator-progress">Please wait...
<span class="spinner-border spinner-border-sm align-middle ms-2"></span>
</span>
</button>
<!--end::Submit button-->
<!--end::Actions-->
</form>
@endif
</div>
</div>
</div>
<!--end::Col-->
<!--begin::Col-->
<div class="col-xxl-4">
<div class="card shadow-sm mb-2">
<div class="card-header">
<h3 class="card-title">Game Information</h3>
</div>
<div class="card-body">
<div class="d-flex justify-content-center"><img class="img-fluid img-thumbnail" src="{{ Storage::url('assets/boxart/') . $game->boxart }}" alt="image"></div>
<dl class="row mt-5">
@if ($game->alt_titles)
@php
$altTitles = str_replace('|', ', ', $game->alt_titles);
@endphp
<dt class="col-sm-5 fw-bolder">Alternative Titles</dt>
<dd class="col-sm-7">{{ $altTitles }}</dd>
@endif
<dt class="col-sm-5 fw-bolder">Platform</dt>
<dd class="col-sm-7">{{ $game->platform()->get()[0]->name }}</dd>
<dt class="col-sm-5 fw-bolder">Developer(s)</dt>
<dd class="col-sm-7">{{ $game->developers ?? '-' }}</dd>
<dt class="col-sm-5 fw-bolder">Publishers(s)</dt>
<dd class="col-sm-7">{{ $game->publishers ?? '-' }}</dd>
<dt class="col-sm-5 fw-bolder">Genres(s)</dt>
<dd class="col-sm-7">{{ $genreNames }}</dd>
@if ($game->na_release_date)
<dt class="col-sm-5 fw-bolder">NA Release Date</dt>
<dd class="col-sm-7">{{ $game->na_release_date }}</dd>
@endif
@if ($game->jp_release_date)
<dt class="col-sm-5 fw-bolder">JP Release Date</dt>
<dd class="col-sm-7">{{ $game->jp_release_date }}</dd>
@endif
@if ($game->eu_release_date)
<dt class="col-sm-5 fw-bolder">EU Release Date</dt>
<dd class="col-sm-7">{{ $game->eu_release_date }}</dd>
@endif
@if ($game->aus_release_date)
<dt class="col-sm-5 fw-bolder">AUS Release Date</dt>
<dd class="col-sm-7">{{ $game->aus_release_date }}</dd>
@endif
@if ($game->esrb_rating)
<dt class="col-sm-5 fw-bolder">ESRB Rating</dt>
<dd class="col-sm-7">{{ $game->esrb_rating ?? '-' }}</dd>
@endif
@if ($game->pegi_rating)
<dt class="col-sm-5 fw-bolder">PEGI Rating</dt>
<dd class="col-sm-7">{{ $game->pegi_rating ?? '-' }}</dd>
@endif
@if ($game->cero_rating)
<dt class="col-sm-5 fw-bolder">CERO Rating</dt>
<dd class="col-sm-7">{{ $game->cero_rating ?? '-' }}</dd>
@endif
@if ($game->acb_rating)
<dt class="col-sm-5 fw-bolder">ACB Rating</dt>
<dd class="col-sm-7">{{ $game->acb_rating ?? '-' }}</dd>
@endif
<dt class="col-sm-5 fw-bolder">MVGL User Score</dt>
<dd class="col-sm-7">{{ (round(GameList::whereGameId($game->id)->avg('rating'), 1)) != 0 ? round(GameList::whereGameId($game->id)->avg('rating'), 1) : '-'}} {{ (GameList::whereGameId($game->id)->where('rating', '>=', 1)->count()) != 0 ? ' by ' . GameList::whereGameId($game->id)->where('rating', '>=', 1)->count() . ' user(s) ' : '' }}</dd>
<dt class="col-sm-5 fw-bolder">MVGL Difficulty</dt>
<dd class="col-sm-7">{{ GameList::whereGameId($game->id)->avg('difficulty') ?? '-' }}</dd>
<dt class="col-sm-5 fw-bolder">Composer(s)</dt>
<dd class="col-sm-7">{{ $game->composers ?? '-'}}</dd>
@if ($game->website)
<dt class="col-sm-5 fw-bolder">Website</dt>
<dd class="col-sm-7"><a href="{{ $game->website }}">Official Website</a></dd>
@endif
<dt class="col-sm-5 fw-bolder">Added by</dt>
<dd class="col-sm-7">{{ GameList::whereGameId($game->id)->count() ?? '0' }} User(s)</dd>
</dl>
<p class="lh-lg">This game also exists on:<br />
@foreach ($platforms as $platform)
<a class="mt-1" href="/game/{{ $platform['id'] }}"><span class="badge badge-primary">{{ $platform['name'] }}</span></a>
@endforeach
</p>
</div>
</div>
</div>
<!--end::Col-->
</div>
<!--end::Row-->
</x-base-layout>