<?php include_once "include/default-values.php" ?>
<?php

function checkInputs($keptValues = [])
{
    $res = [];
    $res["message"] = "";
    $res["keptValues"] = $keptValues;
    if (!(htmlspecialchars($_POST["password"]) === htmlspecialchars($_POST["repeatPassword"]))) $res["message"] .= "Passwords don't match \n";
    if (strtolower(htmlspecialchars($_POST["country"])) === "danmark") {
        if (strlen(htmlspecialchars($_POST["zipCode"])) !== 4) {
            $res["message"] .= "Zip code must be 4 digits\n";
            $res["keptValues"]["zipCode"] = "";
        }
    }
    if (!isset($_POST["email"]) || !filter_var(htmlspecialchars($_POST["email"]), FILTER_VALIDATE_EMAIL)) {
        $res["message"] .= "Invalid email format\n";
        $res["keptValues"]["email"] = "";
    }
    if (strlen($_POST["website"]) > 0 && !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", htmlspecialchars($_POST["website"]))) {
        $res["message"] .= "Invalid URL\n";
        $res["keptValues"]["website"] = "";
    }
    return $res;
}

$message = "";

$keptValues = [];
// isset($_POST) kan nogle gange false trigger
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    if ($_POST["button"] === "create") {
        $username = $_POST["username"];
        $res = $db_con->query("SELECT * FROM users WHERE username = '$username'");
        if ($res->num_rows === 0) {
            if ($_POST["password"] === $_POST["repeatPassword"]) {
                $username = $_POST["username"];
                $password = $_POST["password"];
                $firstName = $_POST["firstName"];
                $lastName = $_POST["lastName"];
                $address = $_POST["address"];
                $zipCode = $_POST["zipCode"];
                $country = $_POST["country"];
                $email = $_POST["email"];
                $website = $_POST["website"];
                try {
                    $db_con->query("INSERT INTO `users` (`ID`, `Username`, `Password`, `Firstname`, `Lastname`, `Address`, `Postcode`, `Country`, `Email`, `Website`) VALUES (NULL, '$username', '$password', '$firstName', '$lastName', '$address', '$zipCode', '$country', '$email', '$website');");
                    $_SESSION["createdUser"] = $_POST["username"];
                    unset($_POST);
                    header("Location: " . $siteroot . "created-user.php");
                    exit();
                } catch (Exception $e) {
                    $keptValues["username"] = $_POST["username"];
                    $keptValues["password"] = $_POST["password"];
                    $keptValues["repeatPassword"] = $_POST["repeatPassword"];
                    $message .= $e->getMessage() . " \n";
                }
            } else {
                $keptValues["username"] = $_POST["username"];
            }
        } else {
            $message .= "Username already taken";
            $keptValues["password"] = $_POST["password"];
            $keptValues["repeatPassword"] = $_POST["repeatPassword"];
        }
    }
    $keptValues["permission"] = $_POST["permission"];
    $keptValues["firstName"] = $_POST["firstName"];
    $keptValues["lastName"] = $_POST["lastName"];
    $keptValues["address"] = $_POST["address"];
    $keptValues["zipCode"] = $_POST["zipCode"];
    $keptValues["country"] = $_POST["country"];
    $keptValues["email"] = $_POST["email"];
    $keptValues["website"] = $_POST["website"];
    $res = checkInputs($keptValues);
    $message .= $res["message"] . "\n";
    $keptValues = $res["keptValues"];
}

?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>EDEA - Create User</title>
    <link rel="stylesheet" href="<?= $siteroot; ?>css/style.css">
    <link rel="stylesheet" href="<?= $siteroot; ?>css/forms.css">
</head>

<body>
    <?php include "include/header.php"; ?>
    <main>
        <h1>Opret bruger</h1>
        <?php
        if (strlen($message) > 0) echo "<pre class='error'>ERROR! $message</pre>";
        ?>
        <form method="POST">
            <div class="input-data required">
                <input type="text" id="username" name="username" value="<?= $keptValues["username"] ?>" required>
                <div class="underline"></div>
                <label for="username">Brugernavn</label>
            </div>
            <div class="input-data required">
                <input type="password" id="password" name="password" value="<?= $keptValues["password"] ?>" required>
                <div class="underline"></div>
                <label for="password">Adgangskode</label>
            </div>
            <div class="input-data required">
                <input type="password" id="repeatPassword" name="repeatPassword" value="<?= $keptValues["repeatPassword"] ?>" required>
                <div class="underline"></div>
                <label for="repeatPassword">Gentag adgangskode</label>
            </div>
            <div class="input-option">
                <label for="permission">Bruger privilegie</label>
                <select name="permission" id="permission" value="<?= $keptValues["permission"] ?>">
                    <option value="user">Bruger</option>
                    <option value="admin">Adminstrator</option>
                </select>
            </div>
            <div class="input-data">
                <input type="text" id="firstName" name="firstName" value="<?= $keptValues["firstName"] ?>">
                <div class="underline"></div>
                <label for="firstName">Fornavn</label>
            </div>
            <div class="input-data">
                <input type="text" id="lastName" name="lastName" value="<?= $keptValues["lastName"] ?>">
                <div class="underline"></div>
                <label for="lastName">Efternavn</label>
            </div>
            <div class="input-data">
                <input type="text" id="address" name="address" value="<?= $keptValues["address"] ?>">
                <div class="underline"></div>
                <label for="address">Adresse</label>
            </div>
            <div class="input-data">
                <input type="number" id="zipCode" name="zipCode" min="0" max="32767" value="<?= $keptValues["zipCode"] ?>">
                <div class="underline"></div>
                <label for="zipCode">Postnummer</label>
            </div>
            <div class="input-data">
                <input type="text" id="country" name="country" value="<?= $keptValues["country"] ?>">
                <div class="underline"></div>
                <label for="country">Land</label>
            </div>
            <div class="input-data required">
                <input type="email" id="email" name="email" value="<?= $keptValues["email"] ?>" required>
                <div class="underline"></div>
                <label for="email">E-mail</label>
            </div>
            <div class="input-data">
                <input type="text" id="website" name="website" value="<?= $keptValues["website"] ?>">
                <div class="underline"></div>
                <label for="website">Website</label>
            </div>
            <div class="input-submit">
                <button name="button" value="create">Opret</button>
            </div>
        </form>
    </main>
    <?php include "include/footer.php"; ?>
    <script src="<?= $siteroot; ?>js/forms.js"></script>
</body>

</html>