From 3ab02f1df423f2cf74d2e46fe6c912f7e3bd596e Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Mon, 4 Apr 2022 15:02:22 +0200 Subject: [PATCH] - change document numbering system (#106) --- .../Providers/ObserverServiceProvider.php | 3 ++ app/Eloquent/Models/VacationRequest.php | 5 --- app/Eloquent/Models/YearPeriod.php | 6 ++++ .../Observers/VacationRequestObserver.php | 18 ++++++++++ .../RebuildDocumentNumberingSystem.php | 34 +++++++++++++++++++ ...name_column_in_vacation_requests_table.php | 23 +++++++++++++ 6 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 app/Eloquent/Observers/VacationRequestObserver.php create mode 100644 app/Infrastructure/Console/Commands/RebuildDocumentNumberingSystem.php create mode 100644 database/migrations/2022_04_04_135927_add_name_column_in_vacation_requests_table.php diff --git a/app/Architecture/Providers/ObserverServiceProvider.php b/app/Architecture/Providers/ObserverServiceProvider.php index 0a7dfa6..79bd86e 100644 --- a/app/Architecture/Providers/ObserverServiceProvider.php +++ b/app/Architecture/Providers/ObserverServiceProvider.php @@ -6,12 +6,15 @@ namespace Toby\Architecture\Providers; use Illuminate\Support\ServiceProvider; use Toby\Eloquent\Models\User; +use Toby\Eloquent\Models\VacationRequest; use Toby\Eloquent\Observers\UserObserver; +use Toby\Eloquent\Observers\VacationRequestObserver; class ObserverServiceProvider extends ServiceProvider { public function boot(): void { User::observe(UserObserver::class); + VacationRequest::observe(VacationRequestObserver::class); } } diff --git a/app/Eloquent/Models/VacationRequest.php b/app/Eloquent/Models/VacationRequest.php index e85708f..46bd084 100644 --- a/app/Eloquent/Models/VacationRequest.php +++ b/app/Eloquent/Models/VacationRequest.php @@ -91,11 +91,6 @@ class VacationRequest extends Model ->where("to", ">=", $vacationRequest->from); } - public function getNameAttribute(): string - { - return "{$this->id}/{$this->yearPeriod->year}"; - } - public function hasFlowSkipped(): bool { return $this->flow_skipped; diff --git a/app/Eloquent/Models/YearPeriod.php b/app/Eloquent/Models/YearPeriod.php index ae57938..7976fca 100644 --- a/app/Eloquent/Models/YearPeriod.php +++ b/app/Eloquent/Models/YearPeriod.php @@ -15,6 +15,7 @@ use Illuminate\Support\Collection; * @property int $id * @property int $year * @property Collection $vacationLimits + * @property Collection $vacationRequests * @property Collection $holidays */ class YearPeriod extends Model @@ -41,6 +42,11 @@ class YearPeriod extends Model return $this->hasMany(VacationLimit::class); } + public function vacationRequests(): HasMany + { + return $this->hasMany(VacationRequest::class); + } + public function holidays(): HasMany { return $this->hasMany(Holiday::class); diff --git a/app/Eloquent/Observers/VacationRequestObserver.php b/app/Eloquent/Observers/VacationRequestObserver.php new file mode 100644 index 0000000..30060c9 --- /dev/null +++ b/app/Eloquent/Observers/VacationRequestObserver.php @@ -0,0 +1,18 @@ +yearPeriod->vacationRequests()->count(); + $number = $count + 1; + + $vacationRequest->name = "{$number}/{$vacationRequest->yearPeriod->year}"; + } +} diff --git a/app/Infrastructure/Console/Commands/RebuildDocumentNumberingSystem.php b/app/Infrastructure/Console/Commands/RebuildDocumentNumberingSystem.php new file mode 100644 index 0000000..96dbb39 --- /dev/null +++ b/app/Infrastructure/Console/Commands/RebuildDocumentNumberingSystem.php @@ -0,0 +1,34 @@ +vacationRequests() + ->oldest() + ->get(); + + foreach ($vacationRequests as $vacationRequest) { + $vacationRequest->update(["name" => "{$number}/{$yearPeriod->year}"]); + + $number++; + } + } + } +} diff --git a/database/migrations/2022_04_04_135927_add_name_column_in_vacation_requests_table.php b/database/migrations/2022_04_04_135927_add_name_column_in_vacation_requests_table.php new file mode 100644 index 0000000..ef9e691 --- /dev/null +++ b/database/migrations/2022_04_04_135927_add_name_column_in_vacation_requests_table.php @@ -0,0 +1,23 @@ +string("name")->nullable(); + }); + } + + public function down(): void + { + Schema::table("vacation_requests", function (Blueprint $table): void { + $table->dropColumn("name"); + }); + } +};