Files
2026-04-28 21:14:25 +03:00

76 lines
2.2 KiB
PHP

<?php
namespace App\Services\WeldLogTriggers\Triggers;
use App\Services\WeldLogTriggers\Base\BaseTrigger;
use Illuminate\Support\Facades\Log;
/**
* Line Lists Update Trigger
*
* Updates line_lists table and syncs data from line_lists to weld_logs
* Triggers when line_number or design_area changes
*/
class LineListsUpdateTrigger extends BaseTrigger
{
public function getName(): string
{
return 'Line Lists Update';
}
public function getOrder(): int
{
return 2;
}
public function getDependentFields(): array
{
return [
'line_number',
'design_area',
'fluid_code',
'type_of_welds'
];
}
protected function process($data, $beforeData, array $context): array
{
try {
// Line lists updated_at trigger for cron
db("line_lists")
->where(['line_no'=> $data->line_number])
->where(['unit'=> $data->design_area])
->update(["updated_at" => simdi()]);
// Sync data from Line Lists to WeldLog via view render
$lineListsToWeldLogView = view('cron.line_lists-sync-from-linelists-to-weldlog', [
'line_number' => $data->line_number,
'design_area' => $data->design_area,
'commitSize' => 3, // Chunk size for transaction batching
'triggerMode' => true // Called from SaveTrigger
])->render();
Log::info("Line Lists to WeldLog sync completed via view render", [
'line_number' => $data->line_number,
'design_area' => $data->design_area
]);
return [
'success' => true,
'line_number' => $data->line_number,
'design_area' => $data->design_area
];
} catch (\Throwable $th) {
Log::error("Line Lists sync error: " . $th->getMessage(), [
'line_number' => $data->line_number,
'design_area' => $data->design_area
]);
throw $th;
}
}
}