layer-chicken/app/Models/FeedPurchase.php

62 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
class FeedPurchase extends Model
{
use SoftDeletes;
protected $guarded = ['id'];
protected $casts = [
'purchase_date' => 'date',
'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);
}
public function updateFeedStock(): void
{
foreach ($this->items as $item) {
$feed = $item->feed;
if ($feed) {
$feed->increment('stock', $item->quantity);
}
}
}
public function revertFeedStock(): void
{
foreach ($this->items as $item) {
$feed = $item->feed;
if ($feed) {
$feed->decrement('stock', $item->quantity);
}
}
}
}