İlk temizlik tamamlandı bir önceki projeden
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
<?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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user