This commit is contained in:
Adrian Hopek
2022-01-26 10:56:25 +01:00
parent 026bfe485f
commit 01de63e9f4
71 changed files with 5631 additions and 3587 deletions

View File

@@ -13,6 +13,7 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Toby\Enums\EmploymentForm;
use Toby\Enums\Role;
/**
* @property int $id
@@ -20,9 +21,11 @@ use Toby\Enums\EmploymentForm;
* @property string $last_name
* @property string $email
* @property string $avatar
* @property Role $role
* @property EmploymentForm $employment_form
* @property Carbon $employment_date
* @property Collection $vacationLimits
* @property Collection $vacationRequests
*/
class User extends Authenticatable
{
@@ -33,6 +36,7 @@ class User extends Authenticatable
protected $guarded = [];
protected $casts = [
"role" => Role::class,
"employment_form" => EmploymentForm::class,
"employment_date" => "date",
];
@@ -46,6 +50,11 @@ class User extends Authenticatable
return $this->hasMany(VacationLimit::class);
}
public function vacationRequests(): HasMany
{
return $this->hasMany(VacationRequest::class);
}
public function scopeSearch(Builder $query, ?string $text): Builder
{
if ($text === null) {
@@ -69,4 +78,9 @@ class User extends Authenticatable
{
return "{$this->first_name} {$this->last_name}";
}
public function hasRole(Role $role): bool
{
return $this->role === $role;
}
}

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
namespace Toby\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Toby\Enums\VacationRequestState;
use Toby\Enums\VacationType;
/**
* @property int $id
* @property VacationType $type
* @property VacationRequestState $state
* @property Carbon $from
* @property Carbon $to
* @property string $comment
* @property User $user
* @property Collection $activities
*/
class VacationRequest extends Model
{
use HasFactory;
protected $guarded = [];
protected $casts = [
"type" => VacationType::class,
"state" => VacationRequestState::class,
"from" => "date",
"to" => "date",
];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function activities(): HasMany
{
return $this->hasMany(VacationRequestActivity::class);
}
public function changeStateTo(VacationRequestState $state): void
{
$this->state = $state;
$this->save();
}
}

View File

@@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
namespace Toby\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Toby\Enums\VacationRequestState;
/**
* @property int $id
* @property VacationRequest $vacationRequest
* @property ?User $user
* @property ?VacationRequestState $from
* @property VacationRequestState $to
*/
class VacationRequestActivity extends Model
{
protected $guarded = [];
protected $casts = [
"from" => VacationRequestState::class,
"to" => VacationRequestState::class,
];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function vacationRequest(): BelongsTo
{
return $this->belongsTo(VacationRequest::class);
}
}