workshop_lara_nova/app/Observers/PartObserver.php
2025-03-22 10:19:15 +00:00

51 lines
1.3 KiB
PHP

<?php
namespace App\Observers;
use App\Models\RepairOrder;
use App\Models\Vehicle;
use App\Models\Part;
use App\Models\MaintenanceSchedule;
use Carbon\Carbon;
use Illuminate\Support\Str;
class PartObserver
{
/**
* Handle the Part "creating" event.
*/
public function creating(Part $part): void
{
// Generate part number if not provided
if (empty($part->part_number)) {
$prefix = 'P-';
$partName = Str::slug(substr($part->name, 0, 3));
$latest = Part::where('part_number', 'like', $prefix . $partName . '%')
->orderBy('part_number', 'desc')
->first();
$number = 1;
if ($latest) {
$parts = explode('-', $latest->part_number);
$number = intval(end($parts)) + 1;
}
$part->part_number = $prefix . $partName . '-' . str_pad($number, 4, '0', STR_PAD_LEFT);
}
}
/**
* Handle the Part "updated" event.
*/
public function updated(Part $part): void
{
// If stock drops below reorder level, could trigger notifications
if ($part->isDirty('quantity_in_stock') && $part->quantity_in_stock <= $part->reorder_level) {
// Notification logic could go here
}
}
}