<?php 
    include_once "include/default-values.php";
    $message; // Bruges til at udskrive fjel meddelser
    $keptValues = []; // Bruges til at gemmeværdiger hvis brugern ikke har sat de rigtige ting ind i formularen

    // Makes sure the user is logged in
    if(empty($_SESSION["mail"])){
        header("Location: " . $siteroot . "login.php"); // Redirecter til forsiden hvis man ikke er logget ind
        exit();
    }

    // Tjekker om det det lavet et post request og at man har trykke på opret knappen
    if($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["eventSubmit"] === "Opret"){

        // Tester om brugeren har indtastet valide ting ind i formularen
        // Retunere et associative array med fjelmeddelser og værdigere der skal gemmes
        function testInputs(){
            $res = [];
            if(strlen($_POST["eventNavn"]) > 0){
                $res["keptvalues"]["eventNavn"] = $_POST["eventNavn"];
            } else{
                $res["message"] .= "Mangler event navn!\n";
            }
            
            if(strlen($_POST["eventCategory"]) > 0){
                $res["keptvalues"]["eventCategory"] = $_POST["eventCategory"];
            } else{
                $res["message"] .= "Mangler event kategori!\n";
            }
        
            if(strlen($_FILES["eventImage"]["name"]) === 0){
                $res["message"] .= "Mangler event billed!\n";
            }
        
            if(strlen($_POST["eventBeskrivelse"]) > 0){
                $res["keptvalues"]["eventBeskrivelse"] = $_POST["eventBeskrivelse"];
            } else{
                $res["message"] .= "Mangler event beskrivelse!\n";
            }
        
            if(strlen($_POST["eventDato"]) > 0){
                $res["keptvalues"]["eventDato"] = $_POST["eventDato"];
            } else{
                $res["message"] .= "Mangler event dato!\n";
            }
        
            if(strlen($_POST["eventStartTid"]) > 0){
                $res["keptvalues"]["eventStartTid"] = $_POST["eventStartTid"];
            } else{
                $res["message"] .= "Mangler event start tid!\n";
            }
        
            if(strlen($_POST["eventSlutTid"]) > 0){
                $res["keptvalues"]["eventSlutTid"] = $_POST["eventSlutTid"];
            } else{
                $res["message"] .= "Mangler event slut tid!\n";
            }
        
            if(strlen($_POST["eventSted"]) > 0){
                $res["keptvalues"]["eventSted"] = $_POST["eventSted"];
            } else{
                $res["message"] .= "Mangler event sted!\n";
            }
        
            if(strlen($_POST["eventPris"]) > 0  || !is_numeric($_POST["eventPris"])){
                $res["keptvalues"]["eventPris"] = $_POST["eventPris"];
            } else{
                $res["message"] .= "Mangler event pris!\n";
            }

            if(strlen($_POST["eventAnsvarlig"]) > 0){
                $res["keptvalues"]["eventAnsvarlig"] = $_POST["eventAnsvarlig"];
            } else{
                $res["message"] .= "Mangler event ansvarlig!\n";
            }

            if(strlen($_POST["eventAnsvTlf"]) > 0){
                // krevet 8 nummere
                $regex = "/^\s*\d{8}\s*$/";
                if(preg_match($regex, str_replace(" ", "", $_POST["eventAnsvTlf"]))){
                    $res["keptvalues"]["eventAnsvTlf"] = $_POST["eventAnsvTlf"];
                } else{
                    $res["message"] .= "Ugyldigt Telefonnummer!\n";
                }
            } else{
                $res["message"] .= "Mangler event ansvarlig Telefonnummer!\n";
            }

            return $res;
        }

        $res = testInputs(); // Kalder for en test i inputsne
        $keptValues = $res["keptvalues"]; // For de gemte værdiger fra input testene
        $message = $res["message"]; // For fejlmeddelserne fra input testene

        // Tjekker om det er fjel i inputsne
        if(strlen($message) === 0){

            // Bruges til at tjekke om det er et billed format der bliver sendt ind
            // Retunere resultatet af tjekket
            function validImg($file)
            {
                // Gyldige fil formatter
                $validExtensions = ["jpg", "jpeg", "png", "gif", "webp"];

                $tmpName = $file['tmp_name'];
                $fileExtension = strtolower(pathinfo($file["name"], PATHINFO_EXTENSION)); // Får fil formatten

                // Tjekker om fil formaten er en gyldig en og at man har puttet en rigtig fil ind
                if (!in_array($fileExtension, $validExtensions) || getimagesize($tmpName) === false) {
                    return false;
                }

                // All images are valid
                return true;
            }

            // Tjekker om det er et gyldigt billed der er sat ind
            if(validImg($_FILES["eventImage"])){
                $targetDirectory = "img/";
                // Generate a unique file name to prevent overwriting and remove any spaces and prevents sql injection
                $uniqueName = $db_con->real_escape_string(strtolower(str_replace(" ", "", trim(uniqid() . "_" . $_FILES["eventImage"]["name"]))));

                // Laver den endegyldige sti til billede
                $targetPath = $targetDirectory . $uniqueName;

                // Uploader billede i temp til serveren hved targetpath
                // Tjekker om billedet blev uploadet korret
                if (move_uploaded_file($_FILES["eventImage"]["tmp_name"], $targetPath)) {

                    // Use real_escape_string to prevent sql injection                    
                    $eventNavn = $db_con->real_escape_string($_POST["eventNavn"]);
                    $eventCategory = $db_con->real_escape_string($_POST["eventCategory"]);
                    $eventBeskrivelse = $db_con->real_escape_string($_POST["eventBeskrivelse"]);
                    $eventDato = $db_con->real_escape_string($_POST["eventDato"]);
                    $eventStartTid = $db_con->real_escape_string($_POST["eventStartTid"]);
                    $eventSlutTid = $db_con->real_escape_string($_POST["eventSlutTid"]);
                    $eventSted = $db_con->real_escape_string($_POST["eventSted"]);
                    $eventPris = $db_con->real_escape_string($_POST["eventPris"]);
                    $eventAnsvarlig = $db_con->real_escape_string($_POST["eventAnsvarlig"]);
                    $eventAnsvTlf = $db_con->real_escape_string($_POST["eventAnsvTlf"]);
                    $createdBy = $_SESSION["mail"];

                    // Sætter sql kommandoen
                    $sql = "INSERT INTO `events` (`EID`, `EName`, `ECategory`, `EDescription`, `EImage`, `EDate`, `EStartTime`, `EEndTime`, `EPlace`, `EPrice`, `EContactName`, `EContactPhone`, `ECreatedBy`) 
                    VALUES (NULL, '$eventNavn', '$eventCategory', '$eventBeskrivelse', '$uniqueName', '$eventDato', '$eventStartTid', '$eventSlutTid', '$eventSted', $eventPris, '$eventAnsvarlig', '$eventAnsvTlf', '$createdBy')";

                    // Bruger try catch til at være sikker på at siden ikke dør
                    // hvis der er fejl i db og udskriver den
                    try {
                        // Executer sql queryen
                        $db_con->query($sql);
                        // Får id'et på det indsatte arrangement
                        $newID = $db_con->insert_id;
                        // Redirecter til det ny lavet arrangement
                        header("Location: " . $siteroot . "oprettetArrangement.php?EID=$newID");
                        exit();
                    } catch (\Throwable $th) {
                        echo $th;
                    }
                    
                } else {
                    // Giver en fejl meddelse hvis billet ikke blev uploadet
                    $message .= "Error while uploading";
                }
            } else{
                // Giver en fejl meddelse hvis billet ikke har det korrekte format
                $message .= "Invalid image format";
            }
        }
    }
    

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <link rel="stylesheet" href="<?=$siteroot?>css/bootstrap.min.css">
    <link rel="stylesheet" href="<?=$siteroot?>css/style.css" type="text/css">
    <meta name="description" content="Starup UIF arrangements kalender. Opret nye arrangementer - tilmeld dig arrangementer. Et godt sted at starte et aktivt og interessant fritidsliv.">
    <title>Starup UIF arrangementer</title>
</head>

<body>
    
    <?php include_once "include/navbar.php"?>

    <main class="container mb-5">
        
        <section>
            <p class="mt-5">&nbsp;</p>
            <h1 class="mt-5 mb-5">Opret arrangement</h1>
            <?php 
                // Udskriver fejlene i et pre tag til at kunne
                // have en god formertering for alle fejl
                if(strlen($message) > 0){
                    ?>
                    <pre class="text-danger"><?=$message?></pre>
                    <?php
                }
            ?>

            <article>
                <!-- Arrangement form -->
                <form class="event-create" method="post" enctype="multipart/form-data">
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventNavn" class="col-3">Navn på arrangement: </label>
                        <input type="text" value="<?=$keptValues['eventNavn']?>" name="eventNavn" class="col">
                   </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventCategory" class="col-3">Kategori</label>
                        <select name="eventCategory" class="col">
                            <?php 
                                if($keptValues['eventCategory'] === "Musik"){
                                    ?>
                                    <option selected value="Musik">Musik</option>
                                    <option value="Kunst">Kunst</option>
                                    <option value="Foredrag">Foredrag</option>
                                    <option value="Sport">Sport/idræt</option>
                                    <option value="Natur">Natur</option>
                                    <option value="Andet">Andet</option>
                                    <?php
                                } else if($keptValues['eventCategory'] === "Kunst"){
                                    ?>
                                    <option value="Musik">Musik</option>
                                    <option selected value="Kunst">Kunst</option>
                                    <option value="Foredrag">Foredrag</option>
                                    <option value="Sport">Sport/idræt</option>
                                    <option value="Natur">Natur</option>
                                    <option value="Andet">Andet</option>
                                    <?php
                                } else if($keptValues['eventCategory'] === "Foredrag"){
                                    ?>
                                    <option value="Musik">Musik</option>
                                    <option value="Kunst">Kunst</option>
                                    <option selected value="Foredrag">Foredrag</option>
                                    <option value="Sport">Sport/idræt</option>
                                    <option value="Natur">Natur</option>
                                    <option value="Andet">Andet</option>
                                    <?php
                                } else if($keptValues['eventCategory'] === "Sport"){
                                    ?>
                                    <option value="Musik">Musik</option>
                                    <option value="Kunst">Kunst</option>
                                    <option value="Foredrag">Foredrag</option>
                                    <option selected value="Sport">Sport/idræt</option>
                                    <option value="Natur">Natur</option>
                                    <option value="Andet">Andet</option>
                                    <?php
                                } else if($keptValues['eventCategory'] === "Natur"){
                                    ?>
                                    <option value="Musik">Musik</option>
                                    <option value="Kunst">Kunst</option>
                                    <option value="Foredrag">Foredrag</option>
                                    <option value="Sport">Sport/idræt</option>
                                    <option selected value="Natur">Natur</option>
                                    <option value="Andet">Andet</option>
                                    <?php
                                } else if($keptValues['eventCategory'] === "Andet"){
                                    ?>
                                    <option value="Musik">Musik</option>
                                    <option value="Kunst">Kunst</option>
                                    <option value="Foredrag">Foredrag</option>
                                    <option value="Sport">Sport/idræt</option>
                                    <option value="Natur">Natur</option>
                                    <option selected value="Andet">Andet</option>
                                    <?php
                                } else{
                                    ?>
                                        <option value="Musik">Musik</option>
                                        <option value="Kunst">Kunst</option>
                                        <option value="Foredrag">Foredrag</option>
                                        <option value="Sport">Sport/idræt</option>
                                        <option value="Natur">Natur</option>
                                        <option value="Andet">Andet</option>
                                    <?php
                                }
                            ?>
                        </select>
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventBeskrivelse" class="col-3">Beskrivelse af arrangementet:</label>
                        <textarea placeholder="Indtast beskrivelse..." rows="5" style="resize: none;" name="eventBeskrivelse" class="col"><?=$keptValues['eventBeskrivelse']?></textarea>
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventImage" class="col-3">Upload et billede til arrangementet:</label>
                        <input type="file" name="eventImage" class="col">
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventDato" class="col-3">Dato: </label>
                        <input type="date" value="<?=$keptValues['eventDato']?>" name="eventDato" min="2023-01-01" class="col">
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventStartTid" class="col-3">Start tidspunkt: </label>
                        <input type="time" value="<?=$keptValues['eventStartTid']?>" name="eventStartTid" class="col">
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventSlutTid" class="col-3">Slut tidspunkt (ikke påkrævet): </label>
                        <input type="time" value="<?=$keptValues['eventSlutTid']?>" name="eventSlutTid" class="col">
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventSted" class="col-3">Sted: </label>
                        <input type="text" value="<?=$keptValues['eventSted']?>" name="eventSted" class="col">
                    </p>
                    <p class="d-flex flex-row event-pris">
                        <label for="eventPris" class="col-3">Pris: </label>
                        <input type="number" value="<?=$keptValues['eventPris']?>" name="eventPris" class="col-2">
                        <span class="kroner">&nbsp; kr.</span>
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventAnsvarlig" class="col-3">Ansvarlig/kontaktperson: </label>
                        <input type="text" value="<?=$keptValues['eventAnsvarlig']?>" name="eventAnsvarlig" class="col">
                    </p>
                    <p class="d-flex flex-column flex-md-row">
                        <label for="eventAnsvTlf" class="col-3">Telefonnummer kontaktperson:</label>
                        <input type="text" value="<?=$keptValues['eventAnsvTlf']?>" name="eventAnsvTlf" class="col">
                    </p>

                    <input type="submit" value="Opret" name="eventSubmit">
                </form>

            </article>

        </section>
    </main>

    <?php include_once "include/footer.php"?>
    
    <script src="<?=$siteroot?>js/bootstrap.bundle.min.js"></script>
</body>
</html>