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