remove the validation for cycle number in store label and add an eloquent event for updating cycle number when cycle is saved.

This commit is contained in:
ehsan
2025-03-12 11:57:11 +03:30
parent 71e493ec10
commit 5fe7474227
5 changed files with 86 additions and 2 deletions
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Events;
use App\Models\Cycle;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class CycleSaved
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*/
public Cycle $cycle;
public function __construct(Cycle $cycle)
{
$this->cycle = $cycle;
}
/**
* Get the channels the event should broadcast on.
*
* @return array<int, \Illuminate\Broadcasting\Channel>
*/
public function broadcastOn(): array
{
return [
// new PrivateChannel('channel-name'),
];
}
}
+2 -2
View File
@@ -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',
];
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Listeners;
use App\Events\CycleSaved;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class UpdateLabelsCycleNumber
{
/**
* Create the event listener.
*/
public function __construct()
{
//
}
/**
* Handle the event.
*/
public function handle(CycleSaved $event): void
{
$cycle = $event->cycle;
$cycleNumber = $cycle->cycle_number;
$cycle->labels()->update(['cycle_number' => $cycleNumber]);
}
}
+12
View File
@@ -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);
+3
View File
@@ -18,6 +18,9 @@ class EventServiceProvider extends ServiceProvider
Registered::class => [
SendEmailVerificationNotification::class,
],
\App\Events\CycleSaved::class => [
\App\Listeners\UpdateLabelsCycleNumber::class,
],
];
/**