Durchführungstag im bestehenden Löschpattern entfernen

This commit is contained in:
gitea_admin committed 2026-09-19 20:59:53 +02:00
1 parent 30c11c5ca7
commit 3d638ab2a1
3 files changed
+56 -2

No files matched your search

+43
View File
@@ -953,6 +953,49 @@ function market_management_set_occurrence_archive(PDO $pdo, int $occurrenceId, b
function market_management_delete_day(PDO $pdo, int $dayId): array
{
$dayStmt = $pdo->prepare(
'SELECT id, occurrence_id, date
FROM market_occurrence_day
WHERE id = :id'
);
$dayStmt->execute([':id' => $dayId]);
$day = $dayStmt->fetch();
if (!is_array($day)) {
throw new RuntimeException('Durchführungstag nicht gefunden.');
}
$countStmt = $pdo->prepare(
'SELECT COUNT(*)
FROM market_occurrence_day
WHERE occurrence_id = :occurrence_id'
);
$countStmt->execute([':occurrence_id' => (int) $day['occurrence_id']]);
if ((int) $countStmt->fetchColumn() <= 1) {
throw new InvalidArgumentException('Die Durchführung muss mindestens einen Durchführungstag behalten.');
}
$firstDayStmt = $pdo->prepare(
'SELECT id
FROM market_occurrence_day
WHERE occurrence_id = :occurrence_id
ORDER BY date ASC, id ASC
LIMIT 1'
);
$firstDayStmt->execute([':occurrence_id' => (int) $day['occurrence_id']]);
if ((int) $firstDayStmt->fetchColumn() === $dayId) {
throw new InvalidArgumentException('Der erste Durchführungstag kann nicht gelöscht werden.');
}
$salesStmt = $pdo->prepare(
'SELECT COUNT(*)
FROM sales_order
WHERE market_occurrence_day_id = :day_id'
);
$salesStmt->execute([':day_id' => $dayId]);
if ((int) $salesStmt->fetchColumn() > 0) {
throw new InvalidArgumentException('Ein Durchführungstag mit Verkäufen kann nicht gelöscht werden.');
}
$stmt = $pdo->prepare('DELETE FROM market_occurrence_day WHERE id = :id RETURNING id, occurrence_id, date');
$stmt->execute([':id' => $dayId]);
$day = $stmt->fetch();