31 lines
1.4 KiB
PHP
31 lines
1.4 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/common.php';
|
|
|
|
/**
|
|
* Push-Einstellungen des angemeldeten Mitarbeiters (welche Popups, stille Zeiten).
|
|
* GET -> {events: [...], eventTypes: [{key, label}], quietFrom, quietTo}
|
|
* POST {events: [...], quietFrom: "22:00", quietTo: "06:00"} (leere Zeiten = immer Popups)
|
|
*/
|
|
api_require_method('GET', 'POST');
|
|
$staff = api_require_staff();
|
|
$pdo = get_db();
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$body = api_request_body();
|
|
$events = array_map('strval', (array) ($body['events'] ?? []));
|
|
$from = trim((string) ($body['quietFrom'] ?? ''));
|
|
$to = trim((string) ($body['quietTo'] ?? ''));
|
|
if (($from !== '' || $to !== '') && (!fcm_time_valid($from) || !fcm_time_valid($to))) {
|
|
api_error(422, 'QUIET_HOURS_INVALID', 'Stille Zeiten bitte als Uhrzeit von/bis angeben (z. B. 22:00 und 06:00).');
|
|
}
|
|
fcm_save_prefs($pdo, (int) $staff['id'], $events, $from, $to, array_keys(fcm_event_types_for($staff)));
|
|
}
|
|
|
|
// Nur Arten anzeigen, die für diesen Mitarbeiter (Rechte) in Frage kommen
|
|
$allowed = fcm_event_types_for($staff);
|
|
$p = fcm_prefs($pdo, (int) $staff['id']);
|
|
$types = [];
|
|
foreach ($allowed as $k => $label) $types[] = ['key' => $k, 'label' => $label];
|
|
api_json(['events' => array_values(array_intersect($p['events'], array_keys($allowed))), 'eventTypes' => $types, 'quietFrom' => $p['quiet_from'], 'quietTo' => $p['quiet_to']]);
|