<?php

include "classes/html.class.php";

$html = new html("ADD ERRANDS");

$db = new db();

$whereFarm = ($_SESSION['farm_id'] == 9) ? "record_id = {$_SESSION['farm_id']} OR record_id = 10" : "record_id = {$_SESSION['farm_id']}";

$whereFarm = ($_SESSION['farm_id'] == 0) ? "1" : "record_id = {$_SESSION['farm_id']}";


$whereFarmUser = ($_SESSION['farm_id'] == 9) ? "1" : "farm_id = {$_SESSION['farm_id']} OR farm_id = 10";
$whereFarmUser = ($_SESSION['farm_id'] == 0) ? "1" : "farm_id = {$_SESSION['farm_id']}";


$farms_res = $db->exec_query('farms', ["*"], '', '', '', '', $whereFarm);
if ($whereFarm == "1") {

    $farm_list = '<option></option>';
} else {
    $farm_list = '<option></option>';

}

while ($farm = $farms_res->fetch_assoc()) {

    $farm_list = $farm_list . "<option value='{$farm['record_id']}'>{$farm['farm_name']}</option>";

    $sections_res = $db->exec_query('farm_sections', ['*'], '', '', '', '', "farm_id = {$farm['record_id']}", '', false);

    $sections_selects = $sections_selects . "<select id='section_id_{$farm['record_id']}' hidden name='section_id' onchange='show_blocks(this.value)' class='form_input'><option></option>";

    while ($sections = $sections_res->fetch_assoc()) {

        $sections_selects = $sections_selects . "<option value='{$sections['record_id']}'>{$sections['name']}</option>";

        $block_res = $db->exec_query('farm_blocks', ['*'], '', '', '', '', "section_id = {$sections['record_id']}");

        $table_blocks = $table_blocks . "<table hidden name='blocks_tables' style='width:100%; text-align: center;' id='blocks_{$sections['record_id']}'>";
        $block_arr = [];
        while ($block = $block_res->fetch_assoc()) {
            $block_arr[] = $block['name'];
        }
        $cluster_array = $block_arr;
        $cluster_count = count($cluster_array);
        $cluster_per_col = ceil($cluster_count / 3);
        for ($i = 0; $i < $cluster_per_col; $i++) {
            $table_blocks = $table_blocks . "<tr>";
            for ($j = 0; $j < 3; $j++) {
                $index = $i + ($j * $cluster_per_col);
                if (isset($cluster_array[$index])) {
                    $table_blocks = $table_blocks . "<td><input type='checkbox' name='cluster[]' value='{$cluster_array[$index]}' class='check_box'><label for='' value='{$cluster_array[$index]}'>{$cluster_array[$index]}</label></td>";
                }
            }
            $table_blocks = $table_blocks . "</tr>";
        }

        $table_blocks = $table_blocks . "</table>";

    }
    $sections_selects = $sections_selects . "</select>";
}


$farm_list = $farm_list . "<option value='{$farms['record_id']}'>{$farms['farm_name']}</option>";
$farming_name = "";
$farming_type_options = "";
$farming_type_res = $db->exec_query('farming_types', ['*']);
while ($farming_type = $farming_type_res->fetch_assoc()) {
    $farming_type_options = $farming_type_options . "<option value='{$farming_type['record_id']}'>{$farming_type['name']}</option>";

    $farming_name = $farming_name . "<select id='farming_action' hidden name='farming_action' class='form_input'><option></option>";

    $farming_action_res = $db->exec_query("farming_action", ['*'], '', '', '', '', "farming_type_id = {$farming_type['record_id']}");

    while ($farming_action = $farming_action_res->fetch_assoc()) {
        $farming_name = $farming_name . "<option value='{$farming_action['record_id']}'>{$farming_action['name']}</option>";
    }

    $farming_name = $farming_name . "</select>";
}

$user_res = $db->exec_query('users', ['*'], '', '', '', '', "user_type = 'MANAGER' AND $whereFarmUser");

$user_list = '<option></option>';

while ($users = $user_res->fetch_assoc()) {
    $user_list = $user_list . "<option value='{$users['record_id']}'>{$users['username']}</option>";
}

$cluster_res = $db->exec_query('clusters', ['*']);

?>

<div class='form'>
    <br>
    <label for="farming type" style="font-size:1.5vw">FARMING TYPE:</label><br>
    <select id='farming_type' onchange="show_action(this.value)" class='form_input'>
        <option></option>
        <?
        echo $farming_type_options;
        ?>
    </select>
    <br><br>

    <label for="farming action" style="font-size:1.5vw" id="action_label" hidden>FARMING ACTION:</label><br>
    <?php echo $farming_name; ?>
    <br><br>

    <label for="action date" style="font-size:1.5vw">START DATE:</label><br>
    <input type="DateTime-Local" name="action_date" id="action_date" class="form_input">
    <br><br>

    <label for="farm" style="font-size:1.5vw">FARM:</label><br>
    <select id='farm_id' onchange="show_section(this.value)" class='form_input'>
        <?
        echo $farm_list;
        ?>
    </select>

    <?php echo $sections_selects; ?>
    <br><br>
    <hr>
    <br><br>

    <label for="blocks" style="font-size:1.5vw; ">BLOCKS:</label><br><br>

    <br><br>
    <?php echo $table_blocks; ?>

    <hr>
    <br><br>
    <label for="rating" style="font-size:1.5vw">RATING:</label><br>
    <select id='rating' class='form_input' onchange="rating_color(rating)">
        <option></option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10">10</option>
    </select>
    <br><br>

    <label for="manager" style="font-size:1.5vw">MANAGER:</label><br>
    <select id='user_id' class='form_input'>
        <?php echo $user_list; ?>
    </select>
    <br><br>
    <div id="images">
        <label for="image" style="font-size:1.5vw">UPLOAD IMAGE:</label><br>
        <button class="form_input" id="image_index" value="0" onclick="add_image()">ADD IMAGE</button><br><br>
        <script>
            function add_image() {
                var index = document.getElementById('image_index').value;
                var image = document.getElementById('images');
                image.innerHTML += '<input type="file" id="image_' + index + '" name="image_' + index + '" accept="image/*" class="form_input" capture><br><br><img id="uploadedImage" style="display:none; width: 80%; height: auto; margin: 0 auto;" />';
                console.log(index);
                index++;
                document.getElementById('image_index').value = index;
            }

        </script>
    </div>
    <br><br>

    <label for="instruction" style="font-size:1.5vw">INSTRUCTIONS:</label><br>
    <textarea type='text' style="width: 80%;" id='instruction' class='form_input'
        oninput="this.style.height = ''; this.style.height = this.scrollHeight + 'px'"></textarea>

    <br><br>
    <input type='submit' value='ADD' class='form_btn'
        onclick='this.disabled=true; this.value="LOADING..."; setTimeout(function(){ document.querySelector(".form_btn").disabled=false; document.querySelector(".form_btn").value="ADD"; }, 3000); ajax_func()' />
    <br><br>

    <script>

        function show_blocks(section_id) {
            for (var i = 0; i < document.getElementsByName("blocks_tables").length; i++) {
                document.getElementsByName("blocks_tables")[i].hidden = true;
            }

            document.getElementById("blocks_" + section_id).hidden = false;
        }

        function rating_color() {
            var rating = document.getElementById('rating').value;

            if (rating == 10) {
                document.getElementById('rating').style.backgroundColor = 'red';
            } else if (rating >= 7) {
                document.getElementById('rating').style.backgroundColor = 'rgba(255, 0, 0, 0.4)';
            } else if (rating >= 4) {
                document.getElementById('rating').style.backgroundColor = '#ffa50091';
            } else if (rating < 3) {
                document.getElementById('rating').style.backgroundColor = 'lightgreen';
            }
        }

        function show_section(farm_id) {
            for (var i = 0; i < document.getElementsByName("section_id").length; i++) {
                document.getElementsByName("section_id")[i].hidden = true;
            }
            for (var i = 0; i < document.getElementsByName("blocks_tables").length; i++) {
                document.getElementsByName("blocks_tables")[i].hidden = true;
            }
            // alert("section_id_" + farm_id);/
            document.getElementById("section_id_" + farm_id).hidden = false;

        }

        function getCheckedValue() {
            // Select all checked checkboxes
            const checkboxes = document.querySelectorAll('input[type="checkbox"]:checked');
            // Extract values from the checked checkboxes
            const values = Array.from(checkboxes).map(checkbox => checkbox.value);
            // Join values into a string
            const resultString = values.join(',');
            console.log(resultString);
            return resultString;
        }

        function show_action(id) {
            for (var i = 0; i < document.getElementsByName("farming_action").length; i++) {
                document.getElementsByName("farming_action")[i].hidden = true;
            }
            var action_label = document.getElementById('action_label');
            var select = document.getElementsByName("farming_action")[id - 1];
            action_label.hidden = false;
            select.hidden = false;

        }

        function ajax_func() {

            var farming_type = document.getElementById('farming_type').value;
            var farming_action = document.getElementsByName('farming_action')[farming_type - 1].value;
            var rating = document.getElementById('rating').value;
            var cluster = getCheckedValue()
            var user_id = document.getElementById('user_id').value;
            var instruction = document.getElementById('instruction').value;
            var farm_id = document.getElementById('farm_id').value;
            var action_date = document.getElementById('action_date').value.replace("T", " ");
            var image_index = document.getElementById('image_index').value;

            if (farming_action < 1) {
                alert("PLEASE SELECT A FARMING ACTION");
            } else {
                if (farming_type.length < 1) {
                    alert("PLEASE SELECT A FARMING TYPE");
                } else {
                    if (user_id.length < 1) {
                        alert("PLEASE SELECT A MANAGER");
                    } else {

                        if (rating.length < 1) {
                            alert("PLEASE SELECT A RATING");
                        } else {

                            var formData = new FormData();
                            formData.append("farming_action", farming_action);
                            formData.append("farming_type", farming_type);
                            formData.append("cluster_ids", cluster);
                            formData.append("rating", rating);
                            formData.append("user_id", user_id);
                            formData.append("instruction", instruction);
                            formData.append("farm_id", farm_id);
                            formData.append("action_date", action_date);
                            formData.append("image_index", image_index);


                            for (var i = 0; i < image_index; i++) {
                                // alert(i);
                                var imageElement = document.getElementById('image_' + i);
                                if (imageElement && imageElement.files.length > 0) {
                                    var image = imageElement.files[0];
                                    console.log("Processing image " + i);
                                    formData.append("image_" + i, image);
                                    console.log(image);
                                }
                            }

                            // Create an XMLHttpRequest object
                            const xhttp = new XMLHttpRequest();
                            // Define a callback function
                            xhttp.onload = function () {
                                // alert(this.responseText);
                                // Here you can use the Data
                                if (this.responseText != 1) {

                                    alert(this.responseText);

                                } else {
                                    alert('ERREND ADDED');
                                    window.location.href = "management.php";
                                }
                            }

                            xhttp.open("POST", "ajax/new_errend.ajax.php");
                            xhttp.send(formData);
                        }
                    }
                }
            }
        }

    </script>