Teren-app/app/Listeners/ApplyChangeContractSegment.php
2025-10-22 23:20:04 +02:00

48 lines
1.5 KiB
PHP

<?php
namespace App\Listeners;
use App\Events\ChangeContractSegment;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\DB;
class ApplyChangeContractSegment implements ShouldQueue
{
public function handle(ChangeContractSegment $event): void
{
$contract = $event->contract;
$segmentId = (int) $event->segmentId;
if ($segmentId <= 0) {
return;
}
DB::transaction(function () use ($contract, $segmentId, $event) {
if ($event->deactivatePrevious) {
DB::table('contract_segment')
->where('contract_id', $contract->id)
->where('active', 1)
->update(['active' => 0, 'updated_at' => now()]);
}
$existing = DB::table('contract_segment')
->where('contract_id', $contract->id)
->where('segment_id', $segmentId)
->first();
if ($existing) {
DB::table('contract_segment')
->where('id', $existing->id)
->update(['active' => 1, 'updated_at' => now()]);
} else {
DB::table('contract_segment')->insert([
'contract_id' => $contract->id,
'segment_id' => $segmentId,
'active' => 1,
'created_at' => now(),
'updated_at' => now(),
]);
}
});
}
}