From bcfab9fb74e37ea2928f64e2a2fb2245d142cf00 Mon Sep 17 00:00:00 2001 From: pacnpal <183241239+pacnpal@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:58:46 -0500 Subject: [PATCH] feat: add Company model and TrackedModel trait; update Park model to use Company as owner --- app/Models/Company.php | 34 ++++++++++++++++++++++++++++++ app/Models/Park.php | 6 ++++-- app/Traits/TrackedModel.php | 42 +++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 app/Models/Company.php create mode 100644 app/Traits/TrackedModel.php diff --git a/app/Models/Company.php b/app/Models/Company.php new file mode 100644 index 0000000..e6999e9 --- /dev/null +++ b/app/Models/Company.php @@ -0,0 +1,34 @@ +hasMany(Park::class, 'owner_id'); + } + + public function updateStatistics() + { + // Implementation matching Django's Company.update_statistics() + $this->loadCount('parks'); + $this->save(); + } +} \ No newline at end of file diff --git a/app/Models/Park.php b/app/Models/Park.php index ecbaff3..83e07ee 100644 --- a/app/Models/Park.php +++ b/app/Models/Park.php @@ -6,11 +6,13 @@ use App\Enums\ParkStatus; use App\Traits\HasLocation; use App\Traits\HasSlugHistory; use App\Traits\HasParkStatistics; +use App\Traits\TrackedModel; use Illuminate\Support\Facades\DB; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use App\Models\Company; use Illuminate\Database\Eloquent\Factories\HasFactory; class Park extends Model @@ -84,9 +86,9 @@ class Park extends Model /** * Get the operator that owns the park. */ - public function operator(): BelongsTo + public function owner(): BelongsTo { - return $this->belongsTo(Operator::class); + return $this->belongsTo(Company::class, 'owner_id'); } /** diff --git a/app/Traits/TrackedModel.php b/app/Traits/TrackedModel.php new file mode 100644 index 0000000..cb5cab8 --- /dev/null +++ b/app/Traits/TrackedModel.php @@ -0,0 +1,42 @@ + $model->getOriginal(), + 'new' => $model->getDirty() + ] + : $model->getAttributes(); + + DB::table('model_history')->insert([ + 'model_type' => get_class($model), + 'model_id' => $model->getKey(), + 'user_id' => Auth::check() ? Auth::id() : null, + 'action' => $action, + 'changes' => json_encode($changes), + 'created_at' => now(), + 'updated_at' => now(), + ]); + } +} \ No newline at end of file