diff --git a/app/Events/CycleSaved.php b/app/Events/CycleSaved.php new file mode 100644 index 00000000..e3b42cb5 --- /dev/null +++ b/app/Events/CycleSaved.php @@ -0,0 +1,40 @@ +cycle = $cycle; + } + + /** + * Get the channels the event should broadcast on. + * + * @return array + */ + public function broadcastOn(): array + { + return [ + // new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Http/Requests/StoreLabelRequest.php b/app/Http/Requests/StoreLabelRequest.php index c1efa2c5..7232be13 100644 --- a/app/Http/Requests/StoreLabelRequest.php +++ b/app/Http/Requests/StoreLabelRequest.php @@ -26,7 +26,7 @@ class StoreLabelRequest extends FormRequest 'sterile_date' => 'required|date', 'expire_date' => 'required|date', 'sterilizer_id' => 'required', - 'cycle_number' => 'required|exists:cycles,cycle_number', + 'cycle_number' => 'required', 'lot_number' => 'required', 'package_id' => 'required|exists:packages,id', ]; @@ -39,7 +39,7 @@ class StoreLabelRequest extends FormRequest 'sterile_date' => 'required', 'expire_date' => 'required', 'sterilizer_id' => 'required', - 'cycle_number' => 'required|exists:cycles,cycle_number', + 'cycle_number' => 'required', 'lot_number' => 'required', 'package_id' => 'required|exists:packages,id', ]; diff --git a/app/Listeners/UpdateLabelsCycleNumber.php b/app/Listeners/UpdateLabelsCycleNumber.php new file mode 100644 index 00000000..a709a8f6 --- /dev/null +++ b/app/Listeners/UpdateLabelsCycleNumber.php @@ -0,0 +1,29 @@ +cycle; + $cycleNumber = $cycle->cycle_number; + + $cycle->labels()->update(['cycle_number' => $cycleNumber]); + } +} diff --git a/app/Models/Cycle.php b/app/Models/Cycle.php index 197196ec..5cfb406b 100644 --- a/app/Models/Cycle.php +++ b/app/Models/Cycle.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Events\CycleSaved; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -14,6 +15,17 @@ class Cycle extends Model 'date', 'user_id', 'cycle_number', 'sterilizer_id', 'note', 'verified', 'unique_id' ]; + protected static function booted() + { + static::created(function ($cycle) { + event(new CycleSaved($cycle)); + }); + + static::updated(function ($cycle) { + event(new CycleSaved($cycle)); + }); + } + public function user(): BelongsTo { return $this->belongsTo(User::class); diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 6c64e52b..770a1ded 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -18,6 +18,9 @@ class EventServiceProvider extends ServiceProvider Registered::class => [ SendEmailVerificationNotification::class, ], + \App\Events\CycleSaved::class => [ + \App\Listeners\UpdateLabelsCycleNumber::class, + ], ]; /**