<?php
require_once __DIR__ . '/../lib/auth.php';
require_once __DIR__ . '/../lib/mail.php';
require_login();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: ../pages/abwesenheitsantrag.php');
    exit;
}

$back = '../pages/abwesenheitsantrag.php';

$von        = trim($_POST['von']        ?? '');
$bis        = trim($_POST['bis']        ?? '');
$grund      = trim($_POST['grund']      ?? '');
$vertretung = trim($_POST['vertretung'] ?? '');
$nachricht  = trim($_POST['nachricht']  ?? '');

if ($von === '' || $bis === '' || $grund === '') {
    header('Location: ' . $back . '?error=' . urlencode('Von, Bis und Grund sind Pflichtfelder.'));
    exit;
}

$allowed_grund = ['krankheit', 'arztbesuch', 'behoerdengang', 'sonderurlaub', 'elternzeit_pflegezeit', 'sonstiges'];
if (!in_array($grund, $allowed_grund, true)) {
    header('Location: ' . $back . '?error=' . urlencode('Ungültiger Grund.'));
    exit;
}

if (!strtotime($von) || !strtotime($bis)) {
    header('Location: ' . $back . '?error=' . urlencode('Ungültiges Datum.'));
    exit;
}

if (strtotime($von) > strtotime($bis)) {
    header('Location: ' . $back . '?error=' . urlencode('Das Startdatum muss vor dem Enddatum liegen.'));
    exit;
}

$user_id = current_user()['id'];
$now     = date('c');

db()->prepare(
    'INSERT INTO requests_abwesenheitsantrag (user_id, status, admin_note, created_at, updated_at, von, bis, grund, vertretung, nachricht)
     VALUES (?, \'pending\', \'\', ?, ?, ?, ?, ?, ?, ?)'
)->execute([$user_id, $now, $now, $von, $bis, $grund, $vertretung, $nachricht]);

$grund_labels = [
    'krankheit'             => 'Krankheit',
    'arztbesuch'            => 'Arztbesuch',
    'behoerdengang'         => 'Behördengang',
    'sonderurlaub'          => 'Sonderurlaub',
    'elternzeit_pflegezeit' => 'Elternzeit / Pflegezeit',
    'sonstiges'             => 'Sonstiges',
];

$config = require __DIR__ . '/../lib/config.php';
smtp_send(
    $config,
    $config['mail_sabrina'],
    'Neuer Abwesenheitsantrag: ' . current_name(),
    "Ein Abwesenheitsantrag wurde eingereicht.\n\n"
        . 'Mitarbeiter: ' . current_name() . "\n"
        . 'Von: ' . $von . "\n"
        . 'Bis: ' . $bis . "\n"
        . 'Grund: ' . ($grund_labels[$grund] ?? $grund) . "\n"
        . 'Vertretung: ' . ($vertretung ?: '—') . "\n"
        . 'Nachricht: ' . ($nachricht ?: '—') . "\n\n"
        . "---\nGesendet über OMSORG Connect"
);

header('Location: ' . $back . '?success=1');
exit;
