$value) { $replacements['{' . $column . '}'] = $value ?? ''; } // Add additional data (title placeholders, etc.) foreach ($additionalData as $key => $value) { if (!str_starts_with($key, '{')) { $key = '{' . $key . '}'; } $replacements[$key] = $value ?? ''; } Log::debug('Placeholders prepared', [ 'count' => count($replacements), 'keys' => array_keys($replacements) ]); return $replacements; } /** * Get latest test date from weld log */ public function getLatestDate(array $weldLogData, string $registerColumnBased): string { try { $latestDateQuery = db("weld_logs") ->where($registerColumnBased, $weldLogData[$registerColumnBased]) ->select( \DB::raw("GREATEST( IFNULL(vt_test_date, '0000-00-00'), IFNULL(rt_test_date, '0000-00-00'), IFNULL(ut_test_date, '0000-00-00'), IFNULL(pt_test_date, '0000-00-00'), IFNULL(mt_test_date, '0000-00-00'), IFNULL(pmi_test_date, '0000-00-00'), IFNULL(ht_test_date, '0000-00-00'), IFNULL(pwht_test_date, '0000-00-00'), IFNULL(ferrite_test_date, '0000-00-00') ) AS latest_date") ) ->first(); // If query returns result, use latest date, otherwise use welding_date $latestDate = ($latestDateQuery && $latestDateQuery->latest_date != '0000-00-00') ? $latestDateQuery->latest_date : ($weldLogData['welding_date'] ?? now()->format('Y-m-d')); Log::debug('Latest date calculated', [ 'line' => $weldLogData[$registerColumnBased], 'date' => $latestDate ]); return $latestDate; } catch (\Throwable $th) { Log::error('Error calculating latest date', [ 'error' => $th->getMessage() ]); return $weldLogData['welding_date'] ?? now()->format('Y-m-d'); } } }