getConnection(); $data = json_decode(file_get_contents('php://input'), true); $iddatadb = $data['iddatadb'] ?? null; $parts = $data['parts'] ?? []; if (!$iddatadb || empty($parts)) { echo json_encode(['success' => false, 'message' => 'Dati mancanti']); exit; } try { $pdo->beginTransaction(); $results = []; foreach ($parts as $part) { $partId = $part['id'] ?? null; $partNumber = $part['part_number'] ?? null; $partDescription = $part['part_description'] ?? ''; $mix = $part['mix'] ?? 'N'; $idmatrice = $part['idmatrice'] ?? null; $note = $part['note'] ?? null; $dateexpiry = $part['dateexpiry'] ?? null; if ($partDescription || $note || $dateexpiry) { if ($partId) { // UPDATE se la parte esiste $stmt = $pdo->prepare("UPDATE identification_parts SET part_number = :part_number, part_description = :part_description, mix = :mix, idmatrice = :idmatrice, note = :note, dateexpiry = :dateexpiry, updated_at = NOW() WHERE id = :id"); $stmt->execute([ ':id' => $partId, ':part_number' => $partNumber, ':part_description' => $partDescription, ':mix' => $mix, ':idmatrice' => $idmatrice, ':note' => $note, ':dateexpiry' => $dateexpiry, ]); $results[] = ['part_id' => $partId, 'part_number' => $partNumber, 'message' => 'Parte aggiornata con successo']; } else { // INSERT per nuova parte $stmt = $pdo->prepare("INSERT INTO identification_parts (iddatadb, part_number, part_description, mix, idmatrice, note, dateexpiry, created_at, updated_at) VALUES (:iddatadb, :part_number, :part_description, :mix, :idmatrice, :note, :dateexpiry, NOW(), NOW())"); $stmt->execute([ ':iddatadb' => $iddatadb, ':part_number' => $partNumber, ':part_description' => $partDescription, ':mix' => $mix, ':idmatrice' => $idmatrice, ':note' => $note, ':dateexpiry' => $dateexpiry, ]); $newId = $pdo->lastInsertId(); $results[] = ['part_id' => $newId, 'part_number' => $partNumber, 'message' => 'Parte salvata con successo']; } } } $pdo->commit(); echo json_encode(['success' => true, 'results' => $results]); } catch (PDOException $e) { $pdo->rollBack(); echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio: ' . $e->getMessage()]); }