From 35d0d967a1d38987b1d183c47ca13dfd0c254d1b Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 17 Feb 2026 20:36:49 +0700 Subject: [PATCH] refactor: Integrate FeedPurchaseObserver for improved stock management and remove redundant boot methods --- app/Models/FeedPurchase.php | 20 +++------------- app/Observers/FeedPurchaseObserver.php | 32 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 app/Observers/FeedPurchaseObserver.php diff --git a/app/Models/FeedPurchase.php b/app/Models/FeedPurchase.php index df6150d..9f77359 100644 --- a/app/Models/FeedPurchase.php +++ b/app/Models/FeedPurchase.php @@ -2,11 +2,14 @@ namespace App\Models; +use App\Observers\FeedPurchaseObserver; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; +#[ObservedBy([FeedPurchaseObserver::class])] class FeedPurchase extends Model { use HasFactory, SoftDeletes; @@ -18,23 +21,6 @@ class FeedPurchase extends Model 'total_price' => 'integer', ]; - protected static function boot() - { - parent::boot(); - - static::deleted(function ($feedPurchase) { - $feedPurchase->revertFeedStock(); - }); - - static::forceDeleted(function ($feedPurchase) { - $feedPurchase->revertFeedStock(); - }); - - static::restored(function ($feedPurchase) { - $feedPurchase->updateFeedStock(); - }); - } - public function items(): HasMany { return $this->hasMany(FeedPurchaseItem::class); diff --git a/app/Observers/FeedPurchaseObserver.php b/app/Observers/FeedPurchaseObserver.php new file mode 100644 index 0000000..2d34ef4 --- /dev/null +++ b/app/Observers/FeedPurchaseObserver.php @@ -0,0 +1,32 @@ +revertFeedStock(); + } + + /** + * Handle the FeedPurchase "force deleted" event. + */ + public function forceDeleted(FeedPurchase $feedPurchase): void + { + $feedPurchase->revertFeedStock(); + } + + /** + * Handle the FeedPurchase "restored" event. + */ + public function restored(FeedPurchase $feedPurchase): void + { + $feedPurchase->updateFeedStock(); + } +}