<?php

require_once "php/model/UserManager.php";
require_once "php/validator/user-validator.php";

$error = null;

if ($_SERVER["REQUEST_METHOD"] === "POST") {

    $email = trim($_POST["email"] ?? "");
    $vorname = trim($_POST["vorname"] ?? "");
    $nachname = trim($_POST["nachname"] ?? "");
    $plainPassword = $_POST["password"] ?? "";

    if (!userEmailValidator($email)) {
        $error = "Bitte gib eine gültige E-Mail-Adresse ein.";
    } elseif (!userNameValidator($vorname)) {
        $error = "Der Vorname muss 2 bis 20 Zeichen lang sein und darf nur Buchstaben, Umlaute, Leerzeichen und Bindestriche enthalten.";
    } elseif (!userNameValidator($nachname)) {
        $error = "Der Nachname muss 2 bis 20 Zeichen lang sein und darf nur Buchstaben, Umlaute, Leerzeichen und Bindestriche enthalten.";
    } elseif (!userPasswordValidator($plainPassword)) {
        $error = "Das Passwort muss 5 bis 12 Zeichen lang sein.";
    } else {
        try {
            $dao = UserManager::getInstance();

            $password = password_hash($plainPassword, PASSWORD_DEFAULT);

            $dao->addUser($email, $vorname, $nachname, $password);

            $_SESSION["user"] = $vorname . " " . $nachname;
            $_SESSION["user_email"] = $email;

            header("Location: index.php");
            exit();

        } catch (InvalidArgumentException $e) {
            $error = $e->getMessage();
        } catch (Exception $e) {
            $error = "Die Registrierung konnte nicht gespeichert werden.";
        }
    }
}