Campione custom fields (Tested Component + parts), per-part ConsegnaRichiesta with validation
This commit is contained in:
@@ -59,6 +59,35 @@ $validators[] = function (int $iddatadb, array $ctx): array {
|
||||
return [];
|
||||
};
|
||||
|
||||
// 2. ConsegnaRichiesta must be filled and >= today
|
||||
$validators[] = function (int $iddatadb, array $ctx): array {
|
||||
$record = $ctx['record'] ?? null;
|
||||
if (!$record) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$consegna = $record['consegna_richiesta'] ?? null;
|
||||
|
||||
if (empty($consegna)) {
|
||||
return [[
|
||||
'field' => 'ConsegnaRichiesta',
|
||||
'message' => 'ConsegnaRichiesta è obbligatorio.',
|
||||
]];
|
||||
}
|
||||
|
||||
$consegnaDate = DateTime::createFromFormat('Y-m-d', $consegna) ?: DateTime::createFromFormat('Y-m-d H:i:s', $consegna);
|
||||
$today = new DateTime('today');
|
||||
|
||||
if ($consegnaDate && $consegnaDate < $today) {
|
||||
return [[
|
||||
'field' => 'ConsegnaRichiesta',
|
||||
'message' => 'ConsegnaRichiesta deve essere uguale o superiore alla data odierna (' . $today->format('Y-m-d') . ').',
|
||||
]];
|
||||
}
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
// ── Main ────────────────────────────────────────────────────────────────────
|
||||
|
||||
try {
|
||||
@@ -75,6 +104,18 @@ try {
|
||||
$iddatadbList = array_column($rows, 'iddatadb');
|
||||
$placeholders = implode(',', array_fill(0, count($iddatadbList), '?'));
|
||||
|
||||
// Records (datadb) for fixed field validation
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT iddatadb, consegna_richiesta
|
||||
FROM datadb
|
||||
WHERE iddatadb IN ($placeholders)
|
||||
");
|
||||
$stmt->execute($iddatadbList);
|
||||
$recordsInfo = [];
|
||||
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) {
|
||||
$recordsInfo[(int)$r['iddatadb']] = $r;
|
||||
}
|
||||
|
||||
// Parts (full rows, so validators can report which parts have issues)
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT iddatadb, part_number, part_description, idmatrice
|
||||
@@ -97,7 +138,8 @@ try {
|
||||
|
||||
// Build context for validators
|
||||
$ctx = [
|
||||
'parts' => $partsInfo[$iddatadb] ?? [],
|
||||
'record' => $recordsInfo[$iddatadb] ?? null,
|
||||
'parts' => $partsInfo[$iddatadb] ?? [],
|
||||
];
|
||||
|
||||
$errors = [];
|
||||
|
||||
Reference in New Issue
Block a user