<?php
$message = '';
$editTask = null;
if (isset($_GET['delete']) && is_numeric($_GET['delete'])) { try { $pdo->prepare("DELETE FROM " . DB_PREFIX . "tasks WHERE id = ?")->execute([$_GET['delete']]); $message = ['type' => 'success', 'text' => 'Задача удалена']; } catch (Exception $e) { $message = ['type' => 'error', 'text' => 'Ошибка']; } }
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $id = $_POST['task_id'] ?? null;
    $data = ['project_id' => $_POST['project_id'] ?? null, 'title' => trim($_POST['title'] ?? ''), 'description' => trim($_POST['description'] ?? ''), 'assigned_to' => $_POST['assigned_to'] ?: null, 'priority' => $_POST['priority'] ?? 'medium', 'status' => $_POST['status'] ?? 'pending', 'due_date' => $_POST['due_date'] ?: null];
    if (empty($data['title'])) { $message = ['type' => 'error', 'text' => 'Укажите название задачи']; }
    else { try { if ($id) { $pdo->prepare("UPDATE " . DB_PREFIX . "tasks SET project_id=?, title=?, description=?, assigned_to=?, priority=?, status=?, due_date=? WHERE id=?")->execute([$data['project_id'], $data['title'], $data['description'], $data['assigned_to'], $data['priority'], $data['status'], $data['due_date'], $id]); $message = ['type' => 'success', 'text' => 'Задача обновлена']; } else { $pdo->prepare("INSERT INTO " . DB_PREFIX . "tasks (project_id, title, description, assigned_to, priority, status, due_date, created_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?)")->execute([$data['project_id'], $data['title'], $data['description'], $data['assigned_to'], $data['priority'], $data['status'], $data['due_date'], $_SESSION['user_id']]); $message = ['type' => 'success', 'text' => 'Задача создана']; } } catch (Exception $e) { $message = ['type' => 'error', 'text' => 'Ошибка']; } }
}
if (isset($_GET['edit']) && is_numeric($_GET['edit'])) { $stmt = $pdo->prepare("SELECT * FROM " . DB_PREFIX . "tasks WHERE id = ?"); $stmt->execute([$_GET['edit']]); $editTask = $stmt->fetch(); }
$stmt = $pdo->query("SELECT id, name FROM " . DB_PREFIX . "projects WHERE status = 'active' ORDER BY name"); $projects = $stmt->fetchAll();
$stmt = $pdo->query("SELECT id, login FROM " . DB_PREFIX . "users WHERE status = 'active' ORDER BY login"); $users = $stmt->fetchAll();
$filter = $_GET['filter'] ?? 'all';
$sql = "SELECT t.*, p.name as project_name, u.login as assigned_name, c.login as creator_name FROM " . DB_PREFIX . "tasks t LEFT JOIN " . DB_PREFIX . "projects p ON t.project_id = p.id LEFT JOIN " . DB_PREFIX . "users u ON t.assigned_to = u.id LEFT JOIN " . DB_PREFIX . "users c ON t.created_by = c.id WHERE 1=1";
$params = [];
if ($filter !== 'all') { $sql .= " AND t.status = ?"; $params[] = $filter; }
$sql .= " ORDER BY t.due_date IS NULL, t.due_date ASC, t.priority DESC";
$stmt = $pdo->prepare($sql); $stmt->execute($params); $tasks = $stmt->fetchAll();
$priorityColors = ['low' => 'green', 'medium' => 'yellow', 'high' => 'orange', 'urgent' => 'red'];
$priorityLabels = ['low' => 'Низкий', 'medium' => 'Средний', 'high' => 'Высокий', 'urgent' => 'Срочный'];
?>

<?php if ($message): ?><div class="alert alert-<?php echo $message['type']; ?>"><?php echo $message['text']; ?></div><?php endif; ?>

<div class="card">
    <div class="card-header">
        <div style="display: flex; gap: 10px; align-items: center;"><div class="tabs" style="margin-bottom: 0;"><a href="?page=tasks" class="tab <?php echo $filter === 'all' ? 'active' : ''; ?>">Все</a><a href="?page=tasks&filter=pending" class="tab <?php echo $filter === 'pending' ? 'active' : ''; ?>">В ожидании</a><a href="?page=tasks&filter=in_progress" class="tab <?php echo $filter === 'in_progress' ? 'active' : ''; ?>">В работе</a><a href="?page=tasks&filter=completed" class="tab <?php echo $filter === 'completed' ? 'active' : ''; ?>">Выполнено</a></div></div>
        <button class="btn btn-primary" onclick="openModal('taskModal')"><i class="fas fa-plus"></i> Новая задача</button>
    </div>
    <div style="display: flex; flex-direction: column; gap: 12px;">
        <?php foreach ($tasks as $task):
            $isOverdue = $task['due_date'] && strtotime($task['due_date']) < strtotime('today') && $task['status'] !== 'completed';
        ?>
        <div style="display: flex; align-items: flex-start; gap: 15px; padding: 16px; border: 1px solid var(--border); border-radius: 12px; <?php echo $isOverdue ? 'background: #fef2f2; border-color: #fecaca;' : ''; ?>">
            <div style="width: 4px; height: 50px; border-radius: 2px; background: var(--<?php echo $priorityColors[$task['priority']] ?? 'gray'; ?>); flex-shrink: 0;"></div>
            <div style="flex: 1;">
                <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 6px;">
                    <span style="font-weight: 600;"><?php echo sanitize($task['title']); ?></span>
                    <span style="font-size: 11px; padding: 2px 8px; border-radius: 10px; background: var(--<?php echo $priorityColors[$task['priority']] ?? 'gray'; ?>); color: white; font-weight: 500;"><?php echo $priorityLabels[$task['priority']] ?? $task['priority']; ?></span>
                    <span class="badge-status <?php echo $task['status']; ?>"><?php echo $task['status']; ?></span>
                    <?php if ($isOverdue): ?><span style="font-size: 11px; color: #dc2626; font-weight: 500;"><i class="fas fa-exclamation-circle"></i> Просрочено</span><?php endif; ?>
                </div>
                <div style="font-size: 13px; color: var(--gray); margin-bottom: 4px;"><?php echo sanitize($task['description'] ?: 'Нет описания'); ?></div>
                <div style="display: flex; gap: 15px; font-size: 12px; color: var(--gray);"><span><i class="fas fa-briefcase"></i> <?php echo sanitize($task['project_name'] ?: '—'); ?></span><span><i class="fas fa-user"></i> <?php echo sanitize($task['assigned_name'] ?: 'Не назначен'); ?></span><span><i class="fas fa-calendar"></i> <?php echo $task['due_date'] ? date('d.m.Y', strtotime($task['due_date'])) : 'Без срока'; ?></span></div>
            </div>
            <div style="display: flex; gap: 5px;"><a href="?page=tasks&edit=<?php echo $task['id']; ?>" class="btn btn-sm btn-secondary"><i class="fas fa-edit"></i></a><a href="?page=tasks&delete=<?php echo $task['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('Удалить задачу?')"><i class="fas fa-trash"></i></a></div>
        </div>
        <?php endforeach; ?>
        <?php if (empty($tasks)): ?><div style="text-align: center; padding: 60px; color: var(--gray);"><i class="fas fa-check-circle" style="font-size: 48px; margin-bottom: 15px; opacity: 0.3;"></i><p>Задач не найдено</p></div><?php endif; ?>
    </div>
</div>

<div class="modal-overlay" id="taskModal">
    <div class="modal">
        <div class="modal-header"><div class="modal-title"><?php echo $editTask ? 'Редактировать задачу' : 'Новая задача'; ?></div><button class="modal-close" onclick="closeModal('taskModal')">&times;</button></div>
        <form method="POST">
            <div class="modal-body">
                <input type="hidden" name="task_id" value="<?php echo $editTask['id'] ?? ''; ?>">
                <div class="form-group"><label>Проект</label><select name="project_id"><option value="">Выберите проект</option><?php foreach ($projects as $project): ?><option value="<?php echo $project['id']; ?>" <?php echo ($editTask['project_id'] ?? '') == $project['id'] ? 'selected' : ''; ?>><?php echo sanitize($project['name']); ?></option><?php endforeach; ?></select></div>
                <div class="form-group"><label>Название задачи *</label><input type="text" name="title" value="<?php echo sanitize($editTask['title'] ?? ''); ?>" required></div>
                <div class="form-group"><label>Описание</label><textarea name="description" rows="3"><?php echo sanitize($editTask['description'] ?? ''); ?></textarea></div>
                <div class="form-row"><div class="form-group"><label>Исполнитель</label><select name="assigned_to"><option value="">Не назначен</option><?php foreach ($users as $user): ?><option value="<?php echo $user['id']; ?>" <?php echo ($editTask['assigned_to'] ?? '') == $user['id'] ? 'selected' : ''; ?>><?php echo sanitize($user['login']); ?></option><?php endforeach; ?></select></div><div class="form-group"><label>Приоритет</label><select name="priority"><option value="low" <?php echo ($editTask['priority'] ?? '') === 'low' ? 'selected' : ''; ?>>Низкий</option><option value="medium" <?php echo ($editTask['priority'] ?? 'medium') === 'medium' ? 'selected' : ''; ?>>Средний</option><option value="high" <?php echo ($editTask['priority'] ?? '') === 'high' ? 'selected' : ''; ?>>Высокий</option><option value="urgent" <?php echo ($editTask['priority'] ?? '') === 'urgent' ? 'selected' : ''; ?>>Срочный</option></select></div></div>
                <div class="form-row"><div class="form-group"><label>Статус</label><select name="status"><option value="pending" <?php echo ($editTask['status'] ?? 'pending') === 'pending' ? 'selected' : ''; ?>>В ожидании</option><option value="in_progress" <?php echo ($editTask['status'] ?? '') === 'in_progress' ? 'selected' : ''; ?>>В работе</option><option value="review" <?php echo ($editTask['status'] ?? '') === 'review' ? 'selected' : ''; ?>>На проверке</option><option value="completed" <?php echo ($editTask['status'] ?? '') === 'completed' ? 'selected' : ''; ?>>Выполнено</option></select></div><div class="form-group"><label>Срок выполнения</label><input type="date" name="due_date" value="<?php echo $editTask['due_date'] ?? ''; ?>"></div></div>
            </div>
            <div class="modal-footer"><button type="button" class="btn btn-secondary" onclick="closeModal('taskModal')">Отмена</button><button type="submit" class="btn btn-primary"><?php echo $editTask ? 'Сохранить' : 'Создать'; ?></button></div>
        </form>
    </div>
</div>

<?php if ($editTask): ?><script>openModal('taskModal');</script><?php endif; ?>
