İlk temizlik tamamlandı bir önceki projeden
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\RegisterCreator;
|
||||
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class PlaceholderReplacer
|
||||
{
|
||||
/**
|
||||
* Prepare replacements array from weld log data
|
||||
*/
|
||||
public function prepareReplacements(array $weldLogData, array $additionalData = []): array
|
||||
{
|
||||
$replacements = [];
|
||||
|
||||
// Add project name
|
||||
$replacements['{project_name}'] = setting('project_name_ru') ?? '';
|
||||
|
||||
// Add all weld log fields
|
||||
foreach ($weldLogData as $column => $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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user