toby/app/Eloquent/Models/VacationRequest.php
Adrian Hopek 3ebc391b83 Merge branch 'main' into #20-vacation-requests
# Conflicts:
#	app/Architecture/Providers/ObserverServiceProvider.php
#	app/Domain/Role.php
#	app/Domain/Rules/ApprovedVacationDaysInSameRange.php
#	app/Domain/Rules/DoesNotExceedLimitRule.php
#	app/Domain/Rules/MinimumOneVacationDayRule.php
#	app/Domain/Rules/PendingVacationRequestInSameRange.php
#	app/Domain/Rules/UsedVacationDaysInSameRange.php
#	app/Domain/Rules/VacationRequestRule.php
#	app/Domain/VacationRequestState.php
#	app/Domain/VacationRequestStateManager.php
#	app/Domain/VacationRequestValidator.php
#	app/Domain/VacationType.php
#	app/Domain/VacationTypeConfigRetriever.php
#	app/Eloquent/Models/User.php
#	app/Infrastructure/Http/Controllers/UserController.php
#	app/Infrastructure/Http/Kernel.php
#	app/Infrastructure/Http/Requests/UserRequest.php
#	database/factories/UserFactory.php
#	database/seeders/DatabaseSeeder.php
#	routes/web.php
#	tests/Feature/UserTest.php
2022-02-01 11:35:44 +01:00

62 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Toby\Eloquent\Models;
use Database\Factories\VacationRequestFactory;
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\Domain\Enums\VacationRequestState;
use Toby\Domain\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();
}
protected static function newFactory(): VacationRequestFactory
{
return VacationRequestFactory::new();
}
}