Merge remote-tracking branch 'origin/#4-users-crud' into #4-users-crud

# Conflicts:
#	app/Enums/FormOfEmployment.php
#	app/Models/User.php
#	resources/js/Pages/Users/Index.vue
#	routes/web.php
This commit is contained in:
Adrian Hopek 2022-01-18 07:40:57 +01:00
commit 13d166ee81
18 changed files with 71 additions and 29 deletions

View File

@ -11,14 +11,16 @@ class CreateUserCommand extends Command
{
protected $signature = "user:create
{email : an email for the user}";
protected $description = "Creates user";
protected $description = "Creates a user";
public function handle(): void
{
$email = $this->argument("email");
User::factory(["email" => $email])->create();
User::factory([
"email" => $email,
])->create();
$this->info("User has been created");
$this->info("The user has been created");
}
}

View File

@ -20,9 +20,11 @@ enum FormOfEmployment: string
{
$cases = collect(FormOfEmployment::cases());
return $cases->map(fn(FormOfEmployment $enum) => [
"label" => $enum->label(),
"value" => $enum->value]
return $cases->map(
fn(FormOfEmployment $enum) => [
"label" => $enum->label(),
"value" => $enum->value,
],
)->toArray();
}
}
}

View File

@ -49,7 +49,7 @@ class UserController extends Controller
{
return inertia("Users/Edit", [
"user" => new UserFormDataResource($user),
"employmentForms" => FormOfEmployment::casesToSelect()
"employmentForms" => FormOfEmployment::casesToSelect(),
]);
}

View File

@ -18,7 +18,7 @@ use Toby\Enums\FormOfEmployment;
* @property string $email
* @property string $avatar
* @property FormOfEmployment $employment_form
* @property Carbon $empoyment_date
* @property Carbon $employment_date
*/
class User extends Authenticatable
{
@ -26,8 +26,6 @@ class User extends Authenticatable
use Notifiable;
use SoftDeletes;
protected $perPage = 10;
protected $fillable = [
"name",
"email",
@ -47,7 +45,7 @@ class User extends Authenticatable
public function scopeSearch(Builder $query, ?string $text): Builder
{
if ($text == null) {
if ($text === null) {
return $query;
}

View File

@ -6,13 +6,14 @@ namespace Toby\Observers;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Storage;
use Toby\Models\User;
use LasseRafn\InitialAvatarGenerator\InitialAvatar;
use Toby\Models\User;
class UserObserver
{
public function __construct(protected InitialAvatar $generator)
{
public function __construct(
protected InitialAvatar $generator,
) {
}
public function created(User $user): void
@ -38,7 +39,7 @@ class UserObserver
{
$path = "avatars/{$user->id}.svg";
Storage::put($path, $this->generator->rounded()->background($this->getRandomColor())->generateSvg($user->name));
Storage::put($path, $this->generator->rounded()->background($this->getRandomColor())->color("#F4F8FD")->smooth()->generateSvg($user->name));
return $path;
}

View File

@ -3,5 +3,19 @@
declare(strict_types=1);
return [
"#F0E9E9",
];
"#475569",
"#EA580C",
"#EAB308",
"#CA8A04",
"#84CC16",
"#4D7C0F",
"#10B981",
"#06B6D4",
"#4338CA",
"#A855F7",
"#86198F",
"#FB7185",
"#EC4899",
"#9D174D",
"#F43F5E",
];

View File

@ -12,6 +12,8 @@ class DatabaseSeeder extends Seeder
public function run(): void
{
User::factory(35)->create();
User::factory(["email" => env("USER_EMAIL")])->create();
User::factory([
"email" => env("USER_EMAIL"),
])->create();
}
}

View File

@ -10,7 +10,7 @@
</p>
</div>
<form
class="border-t border-gray-200 px-6 divide-y"
class="border-t border-gray-200 px-6"
@submit.prevent="form.post('/users')"
>
<div class="sm:grid sm:grid-cols-3 py-4 items-center">

View File

@ -10,7 +10,7 @@
</p>
</div>
<form
class="border-t border-gray-200 px-6 divide-y"
class="border-t border-gray-200 px-6"
@submit.prevent="form.put(`/users/${user.id}`)"
>
<div class="sm:grid sm:grid-cols-3 py-4 items-center">

View File

@ -76,7 +76,7 @@
<td class="px-4 py-4 whitespace-nowrap text-sm text-gray-500">
<div class="flex">
<span
class="inline-flex items-center justify-center h-10 w-10 rounded-full bg-blumilk-500"
class="inline-flex items-center justify-center h-10 w-10 rounded-full"
>
<img
class="h-10 w-10 rounded-full"

View File

@ -37,7 +37,7 @@
>
<div>
<MenuButton
class="bg-white rounded-full flex text-sm ring-2 ring-white ring-opacity-20 focus:outline-none focus:ring-opacity-100"
class="rounded-full flex text-sm ring-2 ring-white ring-opacity-20 focus:outline-none focus:ring-opacity-100"
>
<span class="sr-only">Open user menu</span>
<img

View File

@ -4,4 +4,4 @@
"commission_contract": "Umowa zlecenie",
"b2b_contract": "Kontrakt B2B",
"board_member_contract": "Członek zarządu"
}
}

View File

@ -6,4 +6,4 @@ return [
"failed" => "Błędny login lub hasło.",
"password" => "Podane hasło jest nieprawidłowe.",
"throttle" => "Za dużo nieudanych prób logowania. Proszę spróbować za :seconds sekund.",
];
];

View File

@ -5,4 +5,4 @@ declare(strict_types=1);
return [
"next" => "Następna",
"previous" => "Poprzednia",
];
];

View File

@ -8,4 +8,4 @@ return [
"throttled" => "Proszę zaczekać zanim spróbujesz ponownie.",
"token" => "Token resetowania hasła jest nieprawidłowy.",
"user" => "Nie znaleziono użytkownika z takim adresem e-mail.",
];
];

View File

@ -114,4 +114,4 @@ return [
"uploaded" => "Nie udało się wgrać pliku :attribute.",
"url" => "Format pola :attribute jest nieprawidłowy.",
"uuid" => "Pole :attribute musi być poprawnym identyfikatorem UUID.",
];
];

View File

@ -21,4 +21,4 @@ Route::middleware("guest")->group(function (): void {
->name("login.google.start");
Route::get("login/google/end", [GoogleController::class, "callback"])
->name("login.google.end");
});
});

View File

@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
namespace Tests\Feature;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;
use Toby\Models\User;
class UserTest extends TestCase
{
use DatabaseMigrations;
public function testUserCanSeeUsersList(): void
{
$user = User::factory()->create();
$this->actingAs($user)
->get("/users")
->assertOk();
}
}