diff --git a/modules/market_management/service.php b/modules/market_management/service.php index 6f727c0..7363a42 100644 --- a/modules/market_management/service.php +++ b/modules/market_management/service.php @@ -29,6 +29,15 @@ function market_management_require_positive_id(mixed $value, string $field): int return $id; } +function market_management_optional_id(array $input, string $field): ?int +{ + if (!array_key_exists($field, $input) || $input[$field] === null || trim((string) $input[$field]) === '') { + return null; + } + + return market_management_require_positive_id($input[$field], $field); +} + function market_management_optional_string(array $input, string $field): ?string { if (!array_key_exists($field, $input) || $input[$field] === null) { @@ -433,6 +442,7 @@ function market_management_write_fields(array $input, array $definitions): array 'number' => market_management_optional_number($input, $field), 'integer' => market_management_optional_integer($input, $field), 'id' => market_management_require_positive_id($input[$field], $field), + 'nullable_id' => market_management_optional_id($input, $field), default => throw new LogicException('Unbekannter Feldtyp.'), }; $fields[] = $field . ' = :' . $field; @@ -566,7 +576,7 @@ function market_management_get_occurrence(PDO $pdo, int $occurrenceId, bool $inc function market_management_update_occurrence(PDO $pdo, int $occurrenceId, array $input): array { $definitions = [ - 'status' => 'string', 'place' => 'string', 'address' => 'string', 'municipality_reference_id' => 'id', + 'status' => 'string', 'place' => 'string', 'address' => 'string', 'municipality_reference_id' => 'nullable_id', 'notes' => 'string', 'registration_deadline' => 'string', 'request_or_registration_date' => 'string', 'confirmation_date' => 'string', 'payment_deadline' => 'string', 'stand_size' => 'string', 'table_available' => 'bool', 'table_rentable' => 'bool', 'own_table_required' => 'bool',