Ergaenze Website-URL am Marktstamm
This commit is contained in:
1 parent
d259c35000
commit
f9ffa5a6b6
7 files changed
+45
-12
No files matched your search
@@ -86,6 +86,20 @@ function market_management_optional_integer(array $input, string $field): ?int
|
||||
return (int) $value;
|
||||
}
|
||||
|
||||
function market_management_optional_url(array $input, string $field): ?string
|
||||
{
|
||||
$value = market_management_optional_string($input, $field);
|
||||
if ($value === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (filter_var($value, FILTER_VALIDATE_URL) === false || !preg_match('/^https?:\/\//i', $value)) {
|
||||
throw new InvalidArgumentException($field . ' muss eine gültige HTTP(S)-URL sein.');
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
function market_management_category_exists(PDO $pdo, int $categoryId): bool
|
||||
{
|
||||
$stmt = $pdo->prepare('SELECT 1 FROM market_category WHERE id = :id AND is_active = TRUE');
|
||||
@@ -97,6 +111,7 @@ function market_management_create_market(PDO $pdo, array $input): array
|
||||
{
|
||||
$name = trim((string) ($input['name'] ?? ''));
|
||||
$categoryId = market_management_require_positive_id($input['category_id'] ?? null, 'category_id');
|
||||
$websiteUrl = market_management_optional_url($input, 'website_url');
|
||||
|
||||
if ($name === '') {
|
||||
throw new InvalidArgumentException('name ist erforderlich.');
|
||||
@@ -106,11 +121,11 @@ function market_management_create_market(PDO $pdo, array $input): array
|
||||
}
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
'INSERT INTO market_definition (name, category_id)
|
||||
VALUES (:name, :category_id)
|
||||
RETURNING id, name, category_id, archived_at, created_at, updated_at'
|
||||
'INSERT INTO market_definition (name, category_id, website_url)
|
||||
VALUES (:name, :category_id, :website_url)
|
||||
RETURNING id, name, category_id, website_url, archived_at, created_at, updated_at'
|
||||
);
|
||||
$stmt->execute([':name' => $name, ':category_id' => $categoryId]);
|
||||
$stmt->execute([':name' => $name, ':category_id' => $categoryId, ':website_url' => $websiteUrl]);
|
||||
return (array) $stmt->fetch();
|
||||
}
|
||||
|
||||
@@ -178,7 +193,7 @@ function market_management_search_markets(PDO $pdo, array $input): array
|
||||
}
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
'SELECT m.id, m.name, m.category_id, c.code AS category_code, c.name AS category_name,
|
||||
'SELECT m.id, m.name, m.category_id, m.website_url, c.code AS category_code, c.name AS category_name,
|
||||
m.archived_at, m.created_at, m.updated_at,
|
||||
MIN(d.date) AS earliest_date, MAX(d.date) AS latest_date,
|
||||
COUNT(DISTINCT o.id) AS occurrence_count
|
||||
@@ -202,7 +217,7 @@ function market_management_get_market(PDO $pdo, int $marketId, bool $includeArch
|
||||
{
|
||||
$marketArchivePredicate = $includeArchived ? 'TRUE' : 'm.archived_at IS NULL';
|
||||
$stmt = $pdo->prepare(
|
||||
'SELECT m.id, m.name, m.category_id, c.code AS category_code, c.name AS category_name,
|
||||
'SELECT m.id, m.name, m.category_id, m.website_url, c.code AS category_code, c.name AS category_name,
|
||||
m.archived_at, m.created_at, m.updated_at
|
||||
FROM market_definition m
|
||||
INNER JOIN market_category c ON c.id = m.category_id
|
||||
@@ -331,6 +346,10 @@ function market_management_update_market(PDO $pdo, int $marketId, array $input):
|
||||
$sets[] = 'category_id = :category_id';
|
||||
$params[':category_id'] = $categoryId;
|
||||
}
|
||||
if (array_key_exists('website_url', $input)) {
|
||||
$sets[] = 'website_url = :website_url';
|
||||
$params[':website_url'] = market_management_optional_url($input, 'website_url');
|
||||
}
|
||||
if ($sets === []) {
|
||||
throw new InvalidArgumentException('Mindestens ein änderbares Feld ist erforderlich.');
|
||||
}
|
||||
@@ -338,7 +357,7 @@ function market_management_update_market(PDO $pdo, int $marketId, array $input):
|
||||
$sets[] = 'updated_at = NOW()';
|
||||
$stmt = $pdo->prepare(
|
||||
'UPDATE market_definition SET ' . implode(', ', $sets) . ' WHERE id = :id
|
||||
RETURNING id, name, category_id, archived_at, created_at, updated_at'
|
||||
RETURNING id, name, category_id, website_url, archived_at, created_at, updated_at'
|
||||
);
|
||||
$stmt->execute($params);
|
||||
$market = $stmt->fetch();
|
||||
@@ -354,7 +373,7 @@ function market_management_set_market_archive(PDO $pdo, int $marketId, bool $arc
|
||||
'UPDATE market_definition
|
||||
SET archived_at = ' . ($archive ? 'COALESCE(archived_at, NOW())' : 'NULL') . ', updated_at = NOW()
|
||||
WHERE id = :id
|
||||
RETURNING id, name, category_id, archived_at, created_at, updated_at'
|
||||
RETURNING id, name, category_id, website_url, archived_at, created_at, updated_at'
|
||||
);
|
||||
$stmt->execute([':id' => $marketId]);
|
||||
$market = $stmt->fetch();
|
||||
|
||||
Reference in new issue
Block a user