getConnection(); // Genera un UUID univoco per importreferencecode $importReferenceCode = date('YmdHis') . '-' . uniqid(); // Recupera tutti i mapping dal template $stmt = $pdo->prepare("SELECT id, excel_column, data_type, is_required, manual_default, is_manual, field_label, field_id, main_field FROM template_mapping WHERE template_id = ?"); $stmt->execute([$template_id]); $allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($allMappings)) { header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); exit; } // Trova il campo main_field $mainFieldMapping = null; foreach ($allMappings as $mapping) { if ($mapping['main_field'] == 1) { $mainFieldMapping = $mapping; break; } } //// Inserisci le righe selezionate in datadb (solo campi generici con templateid) //$insertedIds = []; //foreach ($selected_rows as $rowIndex) { // $row = $rows[$rowIndex]; // $values = [ // $template_id, // templateid // $importReferenceCode, // importreferencecode // $newFilename, // filename_import // 'i', // status // $user_id, // user_id // null, // limscode // date('Y-m-d') // importdate // ]; // $sql = "INSERT INTO datadb (templateid, importreferencecode, filename_import, status, user_id, limscode, importdate) VALUES (?, ?, ?, ?, ?, ?, ?)"; // $stmt = $pdo->prepare($sql); // $stmt->execute($values); // // $iddatadb = $pdo->lastInsertId(); // $insertedIds[] = $iddatadb; // // // Inserisci tutti i campi (automatici e manuali) in import_data_details // foreach ($allMappings as $mapping) { // $fieldValue = null; // if (!$mapping['is_manual']) { // Campi automatici dall'XLS // $excelColumn = trim($mapping['excel_column']); // $excelColumnIndex = array_search($excelColumn, array_map('trim', $columns)); // if ($excelColumnIndex !== false && isset($row[$excelColumnIndex]) && $row[$excelColumnIndex] !== '') { // $fieldValue = $row[$excelColumnIndex]; // error_log("Found Excel column '$excelColumn' at index $excelColumnIndex, value: " . var_export($fieldValue, true)); // } else { // $fieldValue = $mapping['manual_default'] ?? ''; // error_log("Excel column '$excelColumn' not found or empty, using default: " . var_export($fieldValue, true)); // } // switch ($mapping['data_type']) { // case 'INT': // $fieldValue = is_numeric($fieldValue) ? (int)$fieldValue : ($mapping['manual_default'] ?? 0); // break; // case 'DATE': // $fieldValue = !empty($fieldValue) ? date('Y-m-d', strtotime($fieldValue)) : ($mapping['manual_default'] === 'today' ? date('Y-m-d') : ($mapping['manual_default'] ?? '')); // break; // case 'CHAR': // $fieldValue = !empty($fieldValue) ? substr((string)$fieldValue, 0, 1) : ($mapping['manual_default'] ?? ''); // break; // case 'Testo': // case 'VARCHAR': // default: // $fieldValue = !empty($fieldValue) ? htmlspecialchars((string)$fieldValue) : ($mapping['manual_default'] ?? ''); // break; // } // } else { // Campi manuali // $fieldValue = $mapping['manual_default'] ?? ''; // if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today') { // $fieldValue = date('Y-m-d'); // } // } // if ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) { // error_log("Required field missing for mapping ID: " . $mapping['id'] . ", field: " . $mapping['field_label']); // } // error_log("Inserting into import_data_details - Mapping ID: " . $mapping['id'] . ", Field Value: " . var_export($fieldValue, true) . ", Is Manual: " . $mapping['is_manual'] . ", Excel Column: " . ($mapping['excel_column'] ?? 'N/A') . ", Manual Default: " . ($mapping['manual_default'] ?? 'N/A')); // $stmt = $pdo->prepare("INSERT INTO import_data_details (id, mapping_id, field_value) VALUES (?, ?, ?)"); // $stmt->execute([$iddatadb, $mapping['id'], $fieldValue]); // error_log("Inserted into import_data_details for ID $iddatadb, Mapping ID: " . $mapping['id'] . ", Field Value: " . var_export($fieldValue, true)); // } //} $insertedIds = $_POST['inserted_ids'] ?? $_SESSION['inserted_ids']; // Recupera i dati appena inseriti con i nomi degli utenti $stmt = $pdo->prepare(" SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name FROM datadb d LEFT JOIN auth_users u ON d.user_id = u.id WHERE d.iddatadb IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") "); $stmt->execute($insertedIds); $importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); // Recupera i dettagli manuali da import_data_details $stmt = $pdo->prepare(" SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, m.field_label, m.data_type, m.is_required, m.manual_default FROM import_data_details d JOIN template_mapping m ON d.mapping_id = m.id WHERE d.id IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") "); $stmt->execute($insertedIds); $manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); // Recupera il mapping globale per mostrare gli slug leggibili $stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); $slugMapping = []; foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; } ?> Edit Imported Data - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?>
Modifica Dati Importati
"; echo ""; echo ""; echo ""; } elseif ($mainFieldMapping['data_type'] === 'DATE') { echo ""; echo ""; } elseif ($mainFieldMapping['data_type'] === 'INT') { echo ""; echo ""; } else { echo ""; echo ""; } ?>
"; } // Campi automatici (is_manual = 0) escluso main_field $autoIndex = 0; foreach ($allMappings as $mapping) { if (!$mapping['is_manual'] && $mapping['main_field'] != 1) { $inputClass = 'auto-input'; if ($mapping['is_required']) $inputClass .= ' required-input'; if ($mapping['data_type'] === 'SceltaMultipla') { echo "
"; echo ""; echo ""; echo "
"; } else { echo "
"; } $autoIndex++; } } // Campi manuali (is_manual = 1) escluso main_field $manualIndex = 0; foreach ($allMappings as $mapping) { if ($mapping['is_manual'] && $mapping['main_field'] != 1) { $fieldValue = $mapping['manual_default'] ?? ''; if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today') { $fieldValue = date('Y-m-d'); } $inputClass = 'manual-input'; if ($mapping['is_required']) $inputClass .= ' required-input'; echo "
"; if ($mapping['data_type'] === 'SceltaMultipla') { echo ""; } elseif ($mapping['data_type'] === 'DATE') { echo ""; } elseif ($mapping['data_type'] === 'INT') { echo ""; } else { echo ""; } echo ""; echo "
"; $manualIndex++; } } echo "
"; // AWB echo "
"; // Tracking Info ?>
Import Reference Code
$displayName
"; $headerIndex++; } foreach ($allMappings as $mapping) { if (!$mapping['is_manual'] && $mapping['main_field'] != 1) { echo "
" . htmlspecialchars($mapping['field_label']) . "
"; $headerIndex++; } } foreach ($allMappings as $mapping) { if ($mapping['is_manual'] && $mapping['main_field'] != 1) { echo "
" . htmlspecialchars($mapping['field_label']) . "
"; $headerIndex++; } } echo "
AWB Number
"; echo "
Tracking Info
"; ?>
$row): ?>
$d['mapping_id'] == $mainFieldMapping['id'] && $d['datadb_id'] == $row['iddatadb']); $detail = reset($detail) ?: ['field_value' => $mainFieldMapping['manual_default']]; $fieldValue = $detail['field_value'] ?? $mainFieldMapping['manual_default'] ?? ''; if ($mainFieldMapping['data_type'] === 'DATE' && $mainFieldMapping['manual_default'] === 'today' && empty($fieldValue)) { $fieldValue = date('Y-m-d'); } $requiredClass = ($mainFieldMapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; $inputClass = $mainFieldMapping['is_manual'] ? 'manual-input' : 'auto-input'; if ($mainFieldMapping['is_required']) $inputClass .= ' required-input'; ?>
> > >
"; if ($col === 'importdate') { echo "" . htmlspecialchars($value) . ""; echo ""; } elseif ($col === 'filename_import') { echo "File"; echo ""; } elseif ($col === 'status') { echo "" . htmlspecialchars($value === 'i' ? 'Imported' : ($value === 'P' ? 'Progress' : 'LIMS')) . ""; echo ""; } echo "
"; $cellIndex++; } $rowDetails = array_filter($manualDetails, fn($d) => $d['datadb_id'] == $row['iddatadb']); $autoIndex = 0; foreach ($allMappings as $mapping) { if (!$mapping['is_manual'] && $mapping['main_field'] != 1) { $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; $requiredClass = ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; $inputClass = 'auto-input'; if ($mapping['is_required']) $inputClass .= ' required-input'; echo "
"; if ($mapping['data_type'] === 'SceltaMultipla') { echo ""; } elseif ($mapping['data_type'] === 'DATE') { echo ""; } elseif ($mapping['data_type'] === 'INT') { echo ""; } else { echo ""; } echo "
"; $cellIndex++; $autoIndex++; } } $manualIndex = 0; foreach ($allMappings as $mapping) { if ($mapping['is_manual'] && $mapping['main_field'] != 1) { $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today' && empty($fieldValue)) { $fieldValue = date('Y-m-d'); } $requiredClass = ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; $inputClass = 'manual-input'; if ($mapping['is_required']) $inputClass .= ' required-input'; echo "
"; if ($mapping['data_type'] === 'SceltaMultipla') { echo ""; } elseif ($mapping['data_type'] === 'DATE') { echo ""; } elseif ($mapping['data_type'] === 'INT') { echo ""; } else { echo ""; } echo "
"; $cellIndex++; $manualIndex++; } } ?>
Shipment Info