refactor: Integrate FeedPurchaseObserver for improved stock management and remove redundant boot methods

This commit is contained in:
Yoga Pangestu 2026-02-17 20:36:49 +07:00
parent 9b2866ed0e
commit 35d0d967a1
2 changed files with 35 additions and 17 deletions

View File

@ -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);

View File

@ -0,0 +1,32 @@
<?php
namespace App\Observers;
use App\Models\FeedPurchase;
class FeedPurchaseObserver
{
/**
* Handle the FeedPurchase "deleted" event.
*/
public function deleted(FeedPurchase $feedPurchase): void
{
$feedPurchase->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();
}
}