From 672e448e9a804fdb42ae2b9e29e3f2c359a7220c Mon Sep 17 00:00:00 2001 From: Claudio Date: Thu, 4 Sep 2025 15:16:19 +0200 Subject: [PATCH] fixed renumerate parts --- public/userarea/class/curl_auth_debug.log | 2 +- public/userarea/class/curl_request_debug.log | 6 +- public/userarea/parts.js | 29 +++++++-- public/userarea/renumber_parts.php | 63 ++++++++++++++++++++ 4 files changed, 90 insertions(+), 10 deletions(-) create mode 100644 public/userarea/renumber_parts.php diff --git a/public/userarea/class/curl_auth_debug.log b/public/userarea/class/curl_auth_debug.log index 4c1a6c3..ad970c4 100644 --- a/public/userarea/class/curl_auth_debug.log +++ b/public/userarea/class/curl_auth_debug.log @@ -31,6 +31,6 @@ Content-Length: 51 < strict-transport-security: max-age=2592000 < x-powered-by: ASP.NET < x-content-type-options: nosniff -< date: Thu, 04 Sep 2025 12:59:20 GMT +< date: Thu, 04 Sep 2025 13:15:29 GMT < * Connection #0 to host 93.43.5.102 left intact diff --git a/public/userarea/class/curl_request_debug.log b/public/userarea/class/curl_request_debug.log index a4c0e94..b7d2002 100644 --- a/public/userarea/class/curl_request_debug.log +++ b/public/userarea/class/curl_request_debug.log @@ -15,11 +15,11 @@ * [HTTP/2] [1] [:scheme: https] * [HTTP/2] [1] [:authority: 93.43.5.102] * [HTTP/2] [1] [:path: /limsapi/api/odata/CustomField(1083)?$expand=CustomFieldsValues] -* [HTTP/2] [1] [authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjQ5MiIsIlhhZlNlY3VyaXR5QXV0aFBhc3NlZCI6IlhhZlNlY3VyaXR5QXV0aFBhc3NlZCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJXZWJBcGlVc2VyIiwiWGFmU2VjdXJpdHkiOiJYYWZTZWN1cml0eSIsIlhhZkxvZ29uUGFyYW1zIjoicTFZS0xVNHQ4a3ZNVFZXeVVncFBUWElzeUFRSktPa29CU1FXRjVmbkY2VUF4Y3RUa3hJTE1rdUI0Z2FHU3JVQSIsImV4cCI6MTc1Njk5Nzk2MCwiaXNzIjoiTXkiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQyMDAifQ.zHug3m3GFz-uMMbRXi70DlHNfw0Islrxyy5vdJ7RKtA] +* [HTTP/2] [1] [authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjQ5MiIsIlhhZlNlY3VyaXR5QXV0aFBhc3NlZCI6IlhhZlNlY3VyaXR5QXV0aFBhc3NlZCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJXZWJBcGlVc2VyIiwiWGFmU2VjdXJpdHkiOiJYYWZTZWN1cml0eSIsIlhhZkxvZ29uUGFyYW1zIjoicTFZS0xVNHQ4a3ZNVFZXeVVncFBUWElzeUFRSktPa29CU1FXRjVmbkY2VUF4Y3RUa3hJTE1rdUI0Z2FHU3JVQSIsImV4cCI6MTc1Njk5ODkyOSwiaXNzIjoiTXkiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQyMDAifQ.h_WreKPdjRaE9d3zCjGfsk0HSRqdDbtYfAEjpTl_Tjw] * [HTTP/2] [1] [accept: application/json] > GET /limsapi/api/odata/CustomField(1083)?$expand=CustomFieldsValues HTTP/2 Host: 93.43.5.102 -Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjQ5MiIsIlhhZlNlY3VyaXR5QXV0aFBhc3NlZCI6IlhhZlNlY3VyaXR5QXV0aFBhc3NlZCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJXZWJBcGlVc2VyIiwiWGFmU2VjdXJpdHkiOiJYYWZTZWN1cml0eSIsIlhhZkxvZ29uUGFyYW1zIjoicTFZS0xVNHQ4a3ZNVFZXeVVncFBUWElzeUFRSktPa29CU1FXRjVmbkY2VUF4Y3RUa3hJTE1rdUI0Z2FHU3JVQSIsImV4cCI6MTc1Njk5Nzk2MCwiaXNzIjoiTXkiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQyMDAifQ.zHug3m3GFz-uMMbRXi70DlHNfw0Islrxyy5vdJ7RKtA +Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjQ5MiIsIlhhZlNlY3VyaXR5QXV0aFBhc3NlZCI6IlhhZlNlY3VyaXR5QXV0aFBhc3NlZCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJXZWJBcGlVc2VyIiwiWGFmU2VjdXJpdHkiOiJYYWZTZWN1cml0eSIsIlhhZkxvZ29uUGFyYW1zIjoicTFZS0xVNHQ4a3ZNVFZXeVVncFBUWElzeUFRSktPa29CU1FXRjVmbkY2VUF4Y3RUa3hJTE1rdUI0Z2FHU3JVQSIsImV4cCI6MTc1Njk5ODkyOSwiaXNzIjoiTXkiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQyMDAifQ.h_WreKPdjRaE9d3zCjGfsk0HSRqdDbtYfAEjpTl_Tjw Accept: application/json < HTTP/2 200 @@ -30,6 +30,6 @@ Accept: application/json < odata-version: 4.0 < x-powered-by: ASP.NET < x-content-type-options: nosniff -< date: Thu, 04 Sep 2025 12:59:23 GMT +< date: Thu, 04 Sep 2025 13:15:32 GMT < * Connection #0 to host 93.43.5.102 left intact diff --git a/public/userarea/parts.js b/public/userarea/parts.js index f82ed0b..232ea09 100644 --- a/public/userarea/parts.js +++ b/public/userarea/parts.js @@ -488,8 +488,13 @@ $(document).ready(function () { mix: part.partDescription.startsWith("Mix") ? "Y" : "N", })); + console.log( + "Dati inviati a renumber_parts.php:", + JSON.stringify({ iddatadb: iddatadb, parts: partsToSave }), + ); + $.ajax({ - url: "save_parts.php", + url: "renumber_parts.php", method: "POST", data: JSON.stringify({ iddatadb: iddatadb, @@ -497,12 +502,17 @@ $(document).ready(function () { }), contentType: "application/json", success: function (response) { + console.log("Risposta da renumber_parts.php:", response); if (response.success) { $rows.each(function (index) { const $row = $(this); - if (response.part_ids && response.part_ids[index]) { - $row.attr("data-part-id", response.part_ids[index]); - $row.data("part-id", response.part_ids[index]); + const newPartId = + response.part_ids && response.part_ids[index] + ? response.part_ids[index] + : $row.data("part-id"); + if (newPartId) { + $row.attr("data-part-id", newPartId); + $row.data("part-id", newPartId); } const $saveStatus = $row.find(".save-status"); const $saveLoading = $row.find(".save-loading"); @@ -515,14 +525,21 @@ $(document).ready(function () { updateDescriptions(); markUnsaved(); } else { + console.error("Errore dal server:", response.message); alert( - "Errore nel salvataggio delle parti: " + + "Errore nella rinumerazione delle parti: " + response.message, ); } }, error: function (xhr, status, error) { - alert("Errore nel salvataggio delle parti: " + error); + console.error("Errore AJAX:", status, error, xhr.responseText); + alert( + "Errore nella rinumerazione delle parti: " + + error + + " - " + + xhr.responseText, + ); }, }); } diff --git a/public/userarea/renumber_parts.php b/public/userarea/renumber_parts.php new file mode 100644 index 0000000..e32f80c --- /dev/null +++ b/public/userarea/renumber_parts.php @@ -0,0 +1,63 @@ +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(); + + // Elimina tutte le parti esistenti per l'iddatadb per evitare conflitti di unicità + $stmt = $pdo->prepare("DELETE FROM identification_parts WHERE iddatadb = :iddatadb"); + $stmt->execute([':iddatadb' => $iddatadb]); + + // Prepara l'inserimento delle nuove parti + $stmt = $pdo->prepare(" + INSERT INTO identification_parts + (iddatadb, part_number, part_description, mix, created_at, updated_at) + VALUES (:iddatadb, :part_number, :part_description, :mix, NOW(), NOW()) + "); + + $part_ids = []; + foreach ($parts as $part) { + $partNumber = $part['part_number'] ?? null; + $partDescription = $part['part_description'] ?? ''; + $mix = $part['mix'] ?? 'N'; + + if (!$partNumber || !$partDescription) { + throw new PDOException("Numero parte o descrizione mancante per parte: " . json_encode($part)); + } + + $stmt->execute([ + ':iddatadb' => $iddatadb, + ':part_number' => $partNumber, + ':part_description' => $partDescription, + ':mix' => $mix + ]); + $part_ids[] = $pdo->lastInsertId(); + } + + $pdo->commit(); + echo json_encode([ + 'success' => true, + 'part_ids' => $part_ids, + 'message' => 'Parti rinumerate con successo' + ]); +} catch (PDOException $e) { + $pdo->rollBack(); + echo json_encode([ + 'success' => false, + 'message' => 'Errore nel salvataggio: ' . $e->getMessage() + ]); +}