138 lines
6.1 KiB
PHP
138 lines
6.1 KiB
PHP
<?php
|
|
|
|
namespace App\Services\TpCreator\DocumentProcessors;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
|
|
|
class WdbTpProcessor extends AbstractTpDocumentProcessor
|
|
{
|
|
public function process(
|
|
array $lineData,
|
|
array $document,
|
|
Worksheet $sheet,
|
|
int $currentRow,
|
|
int $rowNo,
|
|
string $fullFolder,
|
|
string $testPackageNo,
|
|
bool $override
|
|
): int {
|
|
$docPath = $document['path'];
|
|
$docTitle = $document['title2'] ?? '';
|
|
|
|
$cleanTitle = str_replace("003_Welding_Database/", "", $docTitle);
|
|
$document['title2'] = $cleanTitle;
|
|
|
|
// Load dependencies
|
|
$testPackage = db("test_pack_base_statuses")->where("test_package_no", $testPackageNo)->first();
|
|
$wpsData = db("w_p_s")->where("details", $testPackage->wps_no)->first();
|
|
|
|
$naksCertificates = [];
|
|
if($wpsData) {
|
|
$naksCertificates = explode(" + ", $wpsData->naks_certificate_no);
|
|
}
|
|
|
|
// 1. Naks Technology
|
|
if (strpos($docPath, "Naks Technology") !== false) {
|
|
foreach($naksCertificates as $cert) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$cert}*.pdf");
|
|
$document['title3'] = $this->extractFileName($search[0] ?? '', $docPath);
|
|
$this->addRow($search, $document, $fullFolder, $cert, $wpsData->date ?? date('Y-m-d'), $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
}
|
|
|
|
// 2. Naks_Welder
|
|
elseif (strpos($docPath, "Naks_Welder") !== false) {
|
|
$welders = $this->getWeldersForTp($testPackageNo);
|
|
foreach($welders as $welder) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$welder}*.pdf");
|
|
$document['title2'] = $welder;
|
|
$document['title3'] = $this->extractFileName($search[0] ?? '', $docPath);
|
|
$welderDate = db("naks_welders")->where("naks_certificate_no", $welder)->first()?->period_of_validity ?? date('Y-m-d');
|
|
|
|
$this->addRow($search, $document, $fullFolder, $welder, $welderDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
}
|
|
|
|
// 3. Naks_Equipments
|
|
elseif (strpos($docPath, "Naks_Equipments") !== false) {
|
|
foreach($naksCertificates as $cert) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$cert}*.pdf");
|
|
$document['title3'] = $cert;
|
|
$docDate = db("naks_welders")->where("welder_id", $cert)->first()?->period_of_validity ?? date('Y-m-d');
|
|
|
|
$this->addRow($search, $document, $fullFolder, $cert, $docDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
}
|
|
|
|
// 4. Naks_Consumables
|
|
elseif (strpos($docPath, "Naks_Consumables") !== false) {
|
|
$naksConsumables = db("naks_consumables")->whereIn("naks_certificate_no", $naksCertificates)->pluck("batch_number")->toArray();
|
|
foreach($naksConsumables as $consumable) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$consumable}*.pdf");
|
|
$docDate = db("naks_welders")->where("welder_id", $consumable)->first()?->period_of_validity ?? date('Y-m-d');
|
|
|
|
$this->addRow($search, $document, $fullFolder, $consumable, $docDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
}
|
|
|
|
// 5. Welding Experts
|
|
elseif (strpos($docPath, "Welding Experts") !== false) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$docTitle}*.pdf");
|
|
$expert = db("register_of_experts")->where("certificate_no", $docTitle)->first();
|
|
$docDate = $expert?->permit_date ?? date('Y-m-d');
|
|
$document['title2'] = e2("welding_expert_register_title");
|
|
|
|
$this->addRow($search, $document, $fullFolder, $docTitle, $docDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
|
|
// 6. WPQ
|
|
elseif (strpos($docPath, "WPQ") !== false) {
|
|
$wpqs = db("welder_tests")->whereIn("wpq_document_no", [
|
|
$testPackage->wpq_report_1,
|
|
$testPackage->wpq_report_2,
|
|
])->get();
|
|
|
|
foreach($wpqs as $wpq) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$wpq->wpq_document_no}*.pdf");
|
|
$document['title3'] = $wpq->wpq_document_no;
|
|
$docDate = $wpq->naks_validity;
|
|
|
|
$this->addRow($search, $document, $fullFolder, $wpq->wpq_document_no, $docDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
}
|
|
|
|
// 7. WPS
|
|
elseif (strpos($docPath, "WPS") !== false) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$wpsData->details}*.pdf");
|
|
$document['title3'] = $wpsData->details;
|
|
$docDate = $wpsData->date;
|
|
|
|
$this->addRow($search, $document, $fullFolder, $wpsData->details, $docDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
|
|
// 8. PQR
|
|
elseif (strpos($docPath, "PQR") !== false) {
|
|
$pqr = db("prosedure_qualification_records")->where("pqr_no", $wpsData->pqr_no)->first();
|
|
if($pqr) {
|
|
$search = $this->alternativeGlob("storage/documents/{$docPath}/*{$pqr->pqr_no}*.pdf");
|
|
$document['title2'] = $pqr->pqr_no;
|
|
$docDate = $pqr->approved_date;
|
|
|
|
$this->addRow($search, $document, $fullFolder, $pqr->pqr_no, $docDate, $rowNo, $sheet, $currentRow, $override);
|
|
}
|
|
}
|
|
|
|
return $rowNo;
|
|
}
|
|
|
|
private function getWeldersForTp($tpNo) {
|
|
$logs = db("weld_logs")->where("test_package_no", $tpNo)->get();
|
|
$welders = [];
|
|
foreach($logs as $log) {
|
|
if($log->welder_1) $welders[] = $log->certificate_no_1;
|
|
if($log->welder_2) $welders[] = $log->certificate_no_2;
|
|
}
|
|
return array_unique(array_filter($welders));
|
|
}
|
|
}
|