76 lines
2.2 KiB
PHP
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;
|
|
}
|
|
}
|
|
}
|
|
|