diff --git a/initdb/02_seed.sql b/initdb/02_seed.sql index 0f162a2..ce1e85e 100644 --- a/initdb/02_seed.sql +++ b/initdb/02_seed.sql @@ -8,7 +8,7 @@ -- 3 Luca Conti – luca.conti@corrieri.it (Operatore) -- -- Chiavi consegna per test /verifica-consegna?chiave=... --- CNSG9001, CNSG2406, CNSG7788, CNSG3344, CNSG5522, CNSG9876, CNSG1122 +-- CNSG9001, CNSG3344, CNSG2406, CNSG7788, CNSG5522, CNSG9876, CNSG1122 -- ============================================================ USE corrieri; @@ -30,18 +30,18 @@ INSERT INTO cliente (Nome, Cognome, Via, Comune, Provincia, Telefono, Email, Not ('Marco', 'Neri', 'Via Garibaldi 8', 'Bergamo', 'BG', '3337778899', 'marco.neri@email.it', 'Citofono non funzionante, chiamare al telefono'), ('Giulia', 'Ferrari', 'Viale Venezia 101', 'Brescia', 'BS', '3332223344', 'giulia.ferrari@email.it', 'Ritiro abituale presso ufficio'), ('Paolo', 'Romano', 'Via Manzoni 3', 'Como', 'CO', '3339988776', 'paolo.romano@email.it', 'Richiede firma del destinatario'); + -- ------------------------------------------------------------ -- Consegne -- ClienteID: 1=Mario, 2=Laura, 3=Marco, 4=Giulia, 5=Paolo --- ------------------------------------------------------------ -- Date dinamiche: compatibili con i trigger di retroattività (>= CURDATE()) -- DataRitiro e DataConsegna sono indipendenti; almeno una delle due è obbligatoria. --- Esempi: solo ritiro (CNSG2406), solo consegna (CNSG5522), entrambe (CNSG9001). +-- ------------------------------------------------------------ INSERT INTO consegna (ClienteID, DataRitiro, DataConsegna, Stato, ChiaveConsegna) VALUES - (1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in deposito', 'CNSG9001'), - (2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in consegna', 'CNSG3344'), - (3, CURDATE(), NULL, 'da ritirare', 'CNSG2406'), - (4, DATE_ADD(CURDATE(), INTERVAL 5 DAY), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in giacenza', 'CNSG7788'), - (5, NULL, DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in deposito', 'CNSG5522'), - (1, DATE_ADD(CURDATE(), INTERVAL 1 DAY), DATE_ADD(CURDATE(), INTERVAL 3 DAY), 'da ritirare', 'CNSG9876'), - (2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in consegna', 'CNSG1122'); + (1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in deposito', 'CNSG9001'), -- ritiro e consegna + (2, NULL, DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in consegna', 'CNSG3344'), -- solo consegna + (3, CURDATE(), NULL, 'da ritirare', 'CNSG2406'), -- solo ritiro + (4, DATE_ADD(CURDATE(), INTERVAL 5 DAY), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in giacenza', 'CNSG7788'), -- ritiro e consegna (ordine libero) + (5, NULL, DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in deposito', 'CNSG5522'), -- solo consegna + (1, DATE_ADD(CURDATE(), INTERVAL 1 DAY), NULL, 'da ritirare', 'CNSG9876'), -- solo ritiro + (2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in consegna', 'CNSG1122'); -- ritiro e consegna diff --git a/src/routes/consegne.ts b/src/routes/consegne.ts index 3eb755a..25220cb 100644 --- a/src/routes/consegne.ts +++ b/src/routes/consegne.ts @@ -166,23 +166,6 @@ router.put("/:id", validateBody(validateConsegnaUpdate), async (req, res) => { values.push(updates.clienteId); } - const mergedRitiro = - updates.dataRitiro !== undefined - ? updates.dataRitiro - : formatDate(existing.DataRitiro); - const mergedConsegna = - updates.dataConsegna !== undefined - ? updates.dataConsegna - : formatDate(existing.DataConsegna); - - if (!mergedRitiro && !mergedConsegna) { - res.status(400).json({ - error: "Inserire almeno una data di ritiro o di consegna", - fields: { _form: "Inserire almeno una data di ritiro o di consegna" }, - }); - return; - } - try { await pool.execute( `UPDATE consegna SET ${setClauses.join(", ")} WHERE ConsegnaID = ?`, diff --git a/src/validation/primitives.ts b/src/validation/primitives.ts index 8883590..e69db6a 100644 --- a/src/validation/primitives.ts +++ b/src/validation/primitives.ts @@ -14,7 +14,8 @@ export type ValidationResult = const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; export function normalizeString(value: unknown): string { - return value?.toString().trim() ?? ""; + if (value == null) return ""; + return value.toString().trim(); } export function normalizeEmail(value: unknown): string {