İlk temizlik tamamlandı bir önceki projeden
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
function workPermitReplacerExcel2(?Spreadsheet $spreadsheet, $weldLog, $documentInfo, $type="replacer") {
|
||||
// Handle project value from weldLog (may be array or object)
|
||||
$weldLog = (object)$weldLog;
|
||||
if(isset($weldLog->project)) {
|
||||
$project = $weldLog->project;
|
||||
}else{
|
||||
$project = '';
|
||||
}
|
||||
// Fetch the work permit users from the database
|
||||
$cacheKey = "work_permit_users_{$project}_{$documentInfo->slug}";
|
||||
$workPermitUsers = db("work_permit_documents")
|
||||
->select([
|
||||
'work_permit_documents.*',
|
||||
'subcontractors.*',
|
||||
'work_permit_documents.sign_order as personel_sign_order',
|
||||
'subcontractors.sign_order as firma_sign_order',
|
||||
])
|
||||
->leftJoin("subcontractors", "work_permit_documents.company", "subcontractors.company_name_ru")
|
||||
->where("zone", "like", "%{$project}%")
|
||||
->where("assigned_documents", "like", "%{$documentInfo->slug}%")
|
||||
->get();
|
||||
|
||||
// Initialize data array for placeholders
|
||||
$data = [];
|
||||
|
||||
if ($type == "replacer") {
|
||||
// Only process spreadsheet if it's not null
|
||||
if ($spreadsheet !== null) {
|
||||
try {
|
||||
// Iterate over each sheet in the spreadsheet
|
||||
foreach ($spreadsheet->getAllSheets() as $sheet) {
|
||||
// Loop through all the cells in the sheet and replace placeholders
|
||||
foreach ($sheet->getRowIterator() as $row) {
|
||||
foreach ($row->getCellIterator() as $cell) {
|
||||
$cellValue = $cell->getValue();
|
||||
if (is_string($cellValue)) {
|
||||
// Perform the replacement for each work permit user
|
||||
foreach ($workPermitUsers as $wpi) {
|
||||
// Get all properties for the current work permit user
|
||||
|
||||
// Support for old format (using only personel_sign_order)
|
||||
$jobDescPrefix = $wpi->job_description.$wpi->personel_sign_order;
|
||||
$companyCodePrefix = $wpi->company_code.$wpi->personel_sign_order;
|
||||
|
||||
// Support for new format (using both firma_sign_order and personel_sign_order)
|
||||
$jobDescPrefixNew = $wpi->job_description.$wpi->firma_sign_order."_".$wpi->personel_sign_order;
|
||||
$companyCodePrefixNew = $wpi->company_code.$wpi->firma_sign_order."_".$wpi->personel_sign_order;
|
||||
|
||||
// Dynamically replace all properties
|
||||
foreach ((array)$wpi as $key => $value) {
|
||||
// Skip internal properties and non-string/numeric values
|
||||
if (is_string($key) && !str_starts_with($key, "\0") && (is_string($value) || is_numeric($value))) {
|
||||
// Handle dates
|
||||
if (in_array($key, ['attorney_date', 'date_of_issue', 'certificate_date']) && !empty($value)) {
|
||||
$value = df($value);
|
||||
}
|
||||
|
||||
// Replace with old format (job_description + personel_sign_order)
|
||||
$cellValue = str_replace("{".$jobDescPrefix."_".$key."}", $value, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefix."_".$key."}", $value, $cellValue);
|
||||
|
||||
// Replace with new format (job_description + firma_sign_order + "_" + personel_sign_order)
|
||||
$cellValue = str_replace("{".$jobDescPrefixNew."_".$key."}", $value, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefixNew."_".$key."}", $value, $cellValue);
|
||||
}
|
||||
}
|
||||
|
||||
// For backward compatibility, add specific replacements for commonly used fields
|
||||
// Old format
|
||||
$cellValue = str_replace("{".$jobDescPrefix."_company_name}", $wpi->company, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefix."_company_name}", $wpi->company, $cellValue);
|
||||
$cellValue = str_replace("{".$jobDescPrefix."_certificate_no}", $wpi->certificates_number, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefix."_certificate_no}", $wpi->certificates_number, $cellValue);
|
||||
$cellValue = str_replace("{".$jobDescPrefix."_certificate_number}", $wpi->certificates_number, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefix."_certificate_number}", $wpi->certificates_number, $cellValue);
|
||||
|
||||
// New format
|
||||
$cellValue = str_replace("{".$jobDescPrefixNew."_company_name}", $wpi->company, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefixNew."_company_name}", $wpi->company, $cellValue);
|
||||
$cellValue = str_replace("{".$jobDescPrefixNew."_certificate_no}", $wpi->certificates_number, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefixNew."_certificate_no}", $wpi->certificates_number, $cellValue);
|
||||
$cellValue = str_replace("{".$jobDescPrefixNew."_certificate_number}", $wpi->certificates_number, $cellValue);
|
||||
$cellValue = str_replace("{".$companyCodePrefixNew."_certificate_number}", $wpi->certificates_number, $cellValue);
|
||||
|
||||
// Update the cell with the new value
|
||||
$cell->setValue($cellValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Return the modified spreadsheet for replacer type
|
||||
return $spreadsheet;
|
||||
} catch (\Throwable $th) {
|
||||
// Log error but continue
|
||||
// error_log("Error processing spreadsheet: " . $th->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// If spreadsheet is null or an error occurred, return empty array
|
||||
return [];
|
||||
} else {
|
||||
// For other types (e.g. "data"), collect placeholders
|
||||
foreach ($workPermitUsers as $wpi) {
|
||||
// Get all properties for the current work permit user
|
||||
$wpiArray = (array)$wpi;
|
||||
|
||||
foreach ($wpiArray as $key => $value) {
|
||||
// Skip internal properties
|
||||
if (is_string($key) && !str_starts_with($key, "\0")) {
|
||||
// Old format placeholders (job_description + personel_sign_order)
|
||||
$jobDescPlaceholder = "{" . $wpi->job_description . $wpi->personel_sign_order . "_" . $key . "}";
|
||||
if (!in_array($jobDescPlaceholder, $data)) {
|
||||
$data[] = $jobDescPlaceholder;
|
||||
}
|
||||
|
||||
$companyCodePlaceholder = "{" . $wpi->company_code . $wpi->personel_sign_order . "_" . $key . "}";
|
||||
if (!in_array($companyCodePlaceholder, $data)) {
|
||||
$data[] = $companyCodePlaceholder;
|
||||
}
|
||||
|
||||
// New format placeholders (job_description + firma_sign_order + "_" + personel_sign_order)
|
||||
$jobDescPlaceholderNew = "{" . $wpi->job_description . $wpi->firma_sign_order . "_" . $wpi->personel_sign_order . "_" . $key . "}";
|
||||
if (!in_array($jobDescPlaceholderNew, $data)) {
|
||||
$data[] = $jobDescPlaceholderNew;
|
||||
}
|
||||
|
||||
$companyCodePlaceholderNew = "{" . $wpi->company_code . $wpi->firma_sign_order . "_" . $wpi->personel_sign_order . "_" . $key . "}";
|
||||
if (!in_array($companyCodePlaceholderNew, $data)) {
|
||||
$data[] = $companyCodePlaceholderNew;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For backward compatibility, add specific placeholders for commonly used fields
|
||||
$commonPlaceholders = [
|
||||
"company_name" => "company",
|
||||
"certificate_no" => "certificates_number",
|
||||
"certificate_number" => "certificates_number",
|
||||
"document_code" => "document_code",
|
||||
"document_number" => "document_number",
|
||||
"revision" => "revision",
|
||||
"date_of_issue" => "date_of_issue",
|
||||
"duty" => "duty",
|
||||
"attorney" => "attorney",
|
||||
"attorney_date" => "attorney_date",
|
||||
"name_surname" => "name_surname",
|
||||
"id_no" => "id_no",
|
||||
"level" => "level",
|
||||
"description" => "description",
|
||||
"status" => "status",
|
||||
"dept" => "dept",
|
||||
"zone" => "zone",
|
||||
"third_party" => "third_party",
|
||||
];
|
||||
|
||||
foreach ($commonPlaceholders as $placeholder => $field) {
|
||||
// Old format
|
||||
$jobDescPlaceholder = "{" . $wpi->job_description . $wpi->personel_sign_order . "_" . $placeholder . "}";
|
||||
$companyCodePlaceholder = "{" . $wpi->company_code . $wpi->personel_sign_order . "_" . $placeholder . "}";
|
||||
|
||||
if (!in_array($jobDescPlaceholder, $data)) {
|
||||
$data[] = $jobDescPlaceholder;
|
||||
}
|
||||
if (!in_array($companyCodePlaceholder, $data)) {
|
||||
$data[] = $companyCodePlaceholder;
|
||||
}
|
||||
|
||||
// New format
|
||||
$jobDescPlaceholderNew = "{" . $wpi->job_description . $wpi->firma_sign_order . "_" . $wpi->personel_sign_order . "_" . $placeholder . "}";
|
||||
$companyCodePlaceholderNew = "{" . $wpi->company_code . $wpi->firma_sign_order . "_" . $wpi->personel_sign_order . "_" . $placeholder . "}";
|
||||
|
||||
if (!in_array($jobDescPlaceholderNew, $data)) {
|
||||
$data[] = $jobDescPlaceholderNew;
|
||||
}
|
||||
if (!in_array($companyCodePlaceholderNew, $data)) {
|
||||
$data[] = $companyCodePlaceholderNew;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Return the placeholder list
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user