1
0
Fork 0

Add user page.

This commit is contained in:
Henrik Hautakoski 2021-07-21 18:57:10 +02:00
parent ecc35c6fe6
commit 2f215d0b82
5 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Show user page
*/
public function show(User $user)
{
return view('user.show', compact('user'));
}
}

View file

@ -57,6 +57,15 @@ class User extends Authenticatable
return $this->belongsTo(Character::class, 'character_id');
}
public function alt_characters()
{
$relation = $this->characters();
if ($this->character_id) {
$relation->where('id', '!=', $this->character_id);
}
return $relation;
}
public function characters()
{
return $this->hasMany(Character::class);

View file

@ -0,0 +1,25 @@
<x-layout name="app">
<x-slot name="title">{{ __('User') }} - {{ $user->username }}</x-slot>
<div class="p-4">
<x-section-heading>
<h2 class="text-3xl">{{ __('Characters') }}</h2>
</x-section-heading>
@if ($user->characters->count())
<div class="grid md:grid-cols-2 lg:grid-cols-4 gap-4">
@if ($user->main_character)
<x-character-card :character="$user->main_character" frame="true" />
@endif
@foreach($user->alt_characters as $character)
<x-character-card :character="$character" />
@endforeach
</div>
@else
<x-empty-result title="No characters"></x-empty-result>
@endif
</div>
</x-layout>

View file

@ -2,6 +2,7 @@
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\CharacterController;
use App\Http\Controllers\CharacterProfessionController;
@ -36,6 +37,10 @@ Route::name('auth.')->group(function () {
// Public section
// ----------------------------
Route::prefix('user')->name('user.')->group(function() {
Route::get('{user}', [UserController::class, 'show'])->name('show');
});
Route::prefix('characters')->name('character.')->group(function() {
Route::get('create', [CharacterController::class, 'create'])->name('create');
Route::post('create', [CharacterController::class, 'store'])->name('store');

View file

@ -0,0 +1,24 @@
<?php
namespace Tests\Feature;
use Illuminate\Support\Facades\Hash;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\User;
class UserTest extends TestCase
{
use RefreshDatabase;
public function test_user_page_can_be_viewed()
{
$user = User::factory()->create();
$response = $this->get(route('user.show', [ 'user' => $user ]));
$response->assertStatus(200);
}
}