<?php
// Uzsāk sesiju
session_start();

// Pievieno datu bāzes savienojumu
include '../database/db.php';

// Pārbauda, vai lietotājs ir pieslēdzies
if (!isset($_SESSION['user_id'])) {
    // Ja nav pieslēdzies, pāradresē uz login lapu
    header("Location: ../users/login.php");
    exit();
}

// Saglabā pieslēgtā lietotāja ID
$user_id = $_SESSION['user_id'];

// Pārbauda, vai URL ir padots task_id parametrs
if (!isset($_GET['task_id'])) {
    // Ja task_id nav padots, pāradresē uz uzdevumu lapu
    header("Location: tasks.php");
    exit();
}

// Saglabā rediģējamā uzdevuma ID
$task_id = $_GET['task_id'];

// Sagatavo vaicājumu konkrētā uzdevuma iegūšanai
$stmt = $pdo->prepare("SELECT * FROM tasks WHERE id = ? AND user_id = ?");

// Izpilda vaicājumu ar uzdevuma ID un lietotāja ID
$stmt->execute([$task_id, $user_id]);

// Iegūst uzdevuma datus
$task = $stmt->fetch(PDO::FETCH_ASSOC);

// Ja uzdevums netika atrasts
if (!$task) {
    // Pāradresē atpakaļ uz uzdevumu lapu
    header("Location: tasks.php");
    exit();
}

// Pārbauda, vai lietotājs ir kalendāra īpašnieks
$owner_check = $pdo->prepare("SELECT id FROM calendars WHERE id = ? AND user_id = ?");
$owner_check->execute([$task['calendar_id'], $user_id]);
$is_owner = $owner_check->fetch();

// Ja lietotājs nav kalendāra īpašnieks
if (!$is_owner) {
    // Pārbauda, vai lietotājam ir rediģēšanas tiesības šim kalendāram
    $access_check = $pdo->prepare("
        SELECT can_edit FROM calendar_access 
        WHERE calendar_id = ? AND user_id = ? AND can_edit = 1
    ");
    $access_check->execute([$task['calendar_id'], $user_id]);

    // Ja nav rediģēšanas tiesību, pāradresē ar kļūdas paziņojumu
    if (!$access_check->fetch()) {
        header("Location: tasks.php?error=no_permission");
        exit();
    }
}

// Sagatavo vaicājumu, lai iegūtu visus kalendārus, kurus lietotājs drīkst rediģēt
$calendars_stmt = $pdo->prepare("
    SELECT DISTINCT c.id, c.name
    FROM calendars c
    WHERE c.user_id = ?

    UNION

    SELECT DISTINCT c.id, c.name
    FROM calendars c
    JOIN calendar_access ca ON c.id = ca.calendar_id
    WHERE ca.user_id = ? AND ca.can_edit = 1

    ORDER BY name ASC
");

// Izpilda vaicājumu ar lietotāja ID
$calendars_stmt->execute([$user_id, $user_id]);

// Iegūst visus pieejamos kalendārus
$calendars = $calendars_stmt->fetchAll(PDO::FETCH_ASSOC);

// Masīvs ar atļautajām uzdevuma krāsām
$allowed_colors = [
    '#1E90FF' => '🔵 Work',
    '#FF4500' => '🔴 Urgent',
    '#32CD32' => '🟢 Personal',
    '#FFD700' => '🟡 Pending',
    '#8A2BE2' => '🟣 Project',
    '#2F4F4F' => '⚫ Other'
];

// Pārbauda, vai forma ir nosūtīta
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Iegūst un attīra uzdevuma nosaukumu
    $title = trim($_POST['title']);

    // Iegūst un attīra uzdevuma aprakstu
    $description = trim($_POST['description'] ?? '');

    // Iegūst sākuma datumu un laiku
    $start_datetime = $_POST['start_datetime'];

    // Iegūst beigu datumu un laiku
    $end_datetime = $_POST['end_datetime'];

    // Iegūst izvēlēto kalendāra ID
    $calendar_id = $_POST['calendar_id'];

    // Iegūst izvēlēto krāsu
    $color = $_POST['color'];

    // Pārbauda, vai izvēlētā krāsa ir atļauto krāsu sarakstā
    if (!array_key_exists($color, $allowed_colors)) {
        $error = "Invalid color selected!";

    // Pārbauda, vai obligātie lauki ir aizpildīti
    } elseif ($title && $start_datetime && $end_datetime && $calendar_id) {

        // Pārbauda, vai lietotājam ir tiesības izmantot izvēlēto kalendāru
        $calendar_permission = $pdo->prepare("
            SELECT id FROM calendars WHERE id = ? AND user_id = ?

            UNION

            SELECT calendar_id FROM calendar_access
            WHERE calendar_id = ? AND user_id = ? AND can_edit = 1
        ");
        $calendar_permission->execute([$calendar_id, $user_id, $calendar_id, $user_id]);

        // Ja lietotājam nav tiesību rediģēt šo kalendāru
        if (!$calendar_permission->fetch()) {
            header("Location: tasks.php?error=no_permission");
            exit();
        }

        // Sagatavo vaicājumu uzdevuma atjaunināšanai
        $update_stmt = $pdo->prepare("
            UPDATE tasks 
            SET title = ?, description = ?, start_datetime = ?, end_datetime = ?, calendar_id = ?, color = ?
            WHERE id = ? AND user_id = ?
        ");

        // Izpilda uzdevuma atjaunināšanu ar jaunajiem datiem
        $update_stmt->execute([
            $title,
            $description,
            $start_datetime,
            $end_datetime,
            $calendar_id,
            $color,
            $task_id,
            $user_id
        ]);

        // Pāradresē uz uzdevumu lapu ar veiksmīgas atjaunināšanas paziņojumu
        header("Location: tasks.php?updated=1");
        exit();

    } else {
        // Ja kāds no obligātajiem laukiem nav aizpildīts
        $error = "Please fill in all required fields!";
    }
}
?>

<!-- Norāda, ka dokuments ir HTML5 formātā -->
<!DOCTYPE html>

<!-- HTML dokumenta sākums, valoda iestatīta uz angļu -->
<html lang="en">
<head>
    <!-- Iestata simbolu kodējumu uz UTF-8 -->
    <meta charset="UTF-8">

    <!-- Nodrošina lapas pielāgošanos dažādiem ekrāna izmēriem -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Lapas nosaukums pārlūkprogrammas cilnē -->
    <title>Edit Task</title>

    <!-- Pievieno kalendāra CSS stila failu -->
    <link rel="stylesheet" href="../css/calendar.css">
</head>
<body>

<!-- Navigācijas izvēlne -->
<nav>
    <ul>
        <!-- Saite uz galveno paneli -->
        <li><a href="../dashboard.php">Dashboard</a></li>

        <!-- Saite uz kalendāra lapu -->
        <li><a href="../calendar/calendar.php">Calendar</a></li>

        <!-- Saite uz visu uzdevumu lapu -->
        <li><a href="../tasks/tasks.php">All Tasks</a></li>

        <!-- Saite uz komandu lapu -->
        <li><a href="../teams/teams.php">Teams</a></li>

        <!-- Saite uz draugu lapu -->
        <li><a href="../friends/add_friend.php">Friends</a></li>

        <!-- Saite uz profila lapu -->
        <li><a href="../profile/profile.php">Profile</a></li>

        <!-- Saite lietotāja izrakstīšanai -->
        <li><a href="../users/logout.php">Logout</a></li>
    </ul>
</nav>

<!-- Konteiners uzdevuma rediģēšanas formai -->
<div class="edit-container">

    <!-- Lapas virsraksts -->
    <h2>Edit Task</h2>

    <!-- Ja pastāv kļūdas paziņojums, tas tiek parādīts -->
    <?php if (isset($error)): ?>
        <p class="error"><?= htmlspecialchars($error) ?></p>
    <?php endif; ?>

    <!-- Forma uzdevuma datu rediģēšanai -->
    <form method="POST">

        <!-- Uzdevuma nosaukuma lauka nosaukums -->
        <label for="title">Title*</label>

        <!-- Uzdevuma nosaukuma ievades lauks ar esošo vērtību -->
        <input type="text" id="title" name="title" value="<?= htmlspecialchars($task['title']) ?>" required>

        <!-- Uzdevuma apraksta lauka nosaukums -->
        <label for="description">Description</label>

        <!-- Uzdevuma apraksta ievades lauks ar esošo aprakstu -->
        <textarea id="description" name="description"><?= htmlspecialchars($task['description']) ?></textarea>

        <!-- Sākuma datuma un laika lauka nosaukums -->
        <label for="start_datetime">Start Date/Time*</label>

        <!-- Sākuma datuma un laika ievades lauks ar esošo vērtību -->
        <input type="datetime-local" id="start_datetime" name="start_datetime"
               value="<?= date('Y-m-d\TH:i', strtotime($task['start_datetime'])) ?>" required>

        <!-- Beigu datuma un laika lauka nosaukums -->
        <label for="end_datetime">End Date/Time*</label>

        <!-- Beigu datuma un laika ievades lauks ar esošo vērtību -->
        <input type="datetime-local" id="end_datetime" name="end_datetime"
               value="<?= date('Y-m-d\TH:i', strtotime($task['end_datetime'])) ?>" required>

        <!-- Kalendāra izvēles lauka nosaukums -->
        <label for="calendar_id">Calendar*</label>

        <!-- Izvēlne kalendāra izvēlei -->
        <select id="calendar_id" name="calendar_id" required>
            <!-- Izvada visus lietotājam pieejamos kalendārus -->
            <?php foreach ($calendars as $calendar): ?>
                <!-- Kalendāra opcija; pašreizējais kalendārs tiek atzīmēts kā izvēlēts -->
                <option value="<?= $calendar['id'] ?>" <?= $calendar['id'] == $task['calendar_id'] ? 'selected' : '' ?>>
                    <?= htmlspecialchars($calendar['name']) ?>
                </option>
            <?php endforeach; ?>
        </select>

        <!-- Krāsas izvēles lauka nosaukums -->
        <label for="color">Task Color*</label>

        <!-- Izvēlne uzdevuma krāsas izvēlei -->
        <select id="color" name="color" required>
            <!-- Izvada visas atļautās krāsas -->
            <?php foreach ($allowed_colors as $hex => $label): ?>
                <!-- Krāsas opcija; pašreizējā uzdevuma krāsa tiek atzīmēta kā izvēlēta -->
                <option value="<?= $hex ?>" <?= $task['color'] == $hex ? 'selected' : '' ?>>
                    <?= $label ?>
                </option>
            <?php endforeach; ?>
        </select>

        <!-- Poga formas nosūtīšanai un izmaiņu saglabāšanai -->
        <button type="submit">Save Changes</button>
    </form>

    <!-- Saite rediģēšanas atcelšanai un atgriešanai uz uzdevumu lapu -->
    <a class="cancel-link" href="tasks.php">Cancel</a>
</div>

</body>
</html>