<?php
$message = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = ['project_id' => $_POST['project_id'] ?? null, 'title' => trim($_POST['title'] ?? ''), 'event_type' => $_POST['event_type'] ?? 'post', 'event_date' => $_POST['event_date'] ?? null, 'event_time' => $_POST['event_time'] ?: null, 'description' => trim($_POST['description'] ?? ''), 'color' => $_POST['color'] ?? '#4F46E5'];
    if (!empty($data['title']) && $data['event_date']) {
        try { $pdo->prepare("INSERT INTO " . DB_PREFIX . "calendar_events (project_id, title, event_type, event_date, event_time, description, color, created_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?)")->execute([$data['project_id'], $data['title'], $data['event_type'], $data['event_date'], $data['event_time'], $data['description'], $data['color'], $_SESSION['user_id']]); $message = ['type' => 'success', 'text' => 'Событие добавлено']; }
        catch (Exception $e) { $message = ['type' => 'error', 'text' => 'Ошибка']; }
    }
}
if (isset($_GET['delete']) && is_numeric($_GET['delete'])) { try { $pdo->prepare("DELETE FROM " . DB_PREFIX . "calendar_events WHERE id = ?")->execute([$_GET['delete']]); $message = ['type' => 'success', 'text' => 'Событие удалено']; } catch (Exception $e) { $message = ['type' => 'error', 'text' => 'Ошибка']; } }

$stmt = $pdo->query("SELECT id, name FROM " . DB_PREFIX . "projects WHERE status = 'active' ORDER BY name");
$projects = $stmt->fetchAll();
$month = (int)($_GET['month'] ?? date('m'));
$year = (int)($_GET['year'] ?? date('Y'));
$firstDay = mktime(0, 0, 0, $month, 1, $year);
$daysInMonth = date('t', $firstDay);
$startWeekday = date('w', $firstDay) ?: 7;
$monthName = ['', 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'][$month];
$prevMonth = $month - 1; $prevYear = $year; if ($prevMonth < 1) { $prevMonth = 12; $prevYear--; }
$nextMonth = $month + 1; $nextYear = $year; if ($nextMonth > 12) { $nextMonth = 1; $nextYear++; }
$startDate = "$year-" . str_pad($month, 2, '0', STR_PAD_LEFT) . "-01";
$endDate = "$year-" . str_pad($month, 2, '0', STR_PAD_LEFT) . "-$daysInMonth";
$stmt = $pdo->prepare("SELECT e.*, p.name as project_name FROM " . DB_PREFIX . "calendar_events e LEFT JOIN " . DB_PREFIX . "projects p ON e.project_id = p.id WHERE e.event_date BETWEEN ? AND ? ORDER BY e.event_date, e.event_time");
$stmt->execute([$startDate, $endDate]); $events = $stmt->fetchAll();
$eventsByDay = [];
foreach ($events as $event) { $day = (int)date('j', strtotime($event['event_date'])); if (!isset($eventsByDay[$day])) $eventsByDay[$day] = []; $eventsByDay[$day][] = $event; }
$eventTypes = ['post' => 'Публикация', 'story' => 'Stories', 'campaign' => 'Кампания', 'meeting' => 'Встреча', 'deadline' => 'Дедлайн'];
$eventColors = ['#4F46E5', '#10B981', '#F59E0B', '#EF4444', '#8B5CF6', '#EC4899', '#06B6D4', '#84CC16'];
?>

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

<div style="display: grid; grid-template-columns: 1fr 320px; gap: 24px;">
    <div class="card">
        <div class="card-header">
            <div style="display: flex; align-items: center; gap: 15px;">
                <a href="?page=calendar&month=<?php echo $prevMonth; ?>&year=<?php echo $prevYear; ?>" class="btn btn-icon"><i class="fas fa-chevron-left"></i></a>
                <h2 style="font-size: 20px; margin: 0;"><?php echo $monthName; ?> <?php echo $year; ?></h2>
                <a href="?page=calendar&month=<?php echo $nextMonth; ?>&year=<?php echo $nextYear; ?>" class="btn btn-icon"><i class="fas fa-chevron-right"></i></a>
            </div>
            <button class="btn btn-primary" onclick="openModal('eventModal')"><i class="fas fa-plus"></i> Добавить событие</button>
        </div>
        <div style="display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; font-weight: 600; font-size: 13px; color: var(--gray); padding: 10px 0; border-bottom: 1px solid var(--border);"><div>Пн</div><div>Вт</div><div>Ср</div><div>Чт</div><div>Пт</div><div>Сб</div><div>Вс</div></div>
        <div style="display: grid; grid-template-columns: repeat(7, 1fr);">
            <?php for ($i = 1; $i < $startWeekday; $i++): ?><div style="min-height: 100px; border: 1px solid #f3f4f6; background: #fafafa;"></div><?php endfor; ?>
            <?php for ($day = 1; $day <= $daysInMonth; $day++):
                $isToday = ($day == date('j') && $month == date('n') && $year == date('Y'));
                $dayEvents = $eventsByDay[$day] ?? [];
            ?>
            <div style="min-height: 100px; border: 1px solid var(--border); padding: 8px; position: relative; <?php echo $isToday ? 'background: #eff6ff;' : ''; ?>">
                <div style="font-weight: 600; font-size: 14px; margin-bottom: 4px; <?php echo $isToday ? 'color: var(--primary);' : ''; ?>"><?php echo $day; ?><?php if ($isToday): ?><span style="font-size: 10px; background: var(--primary); color: white; padding: 2px 6px; border-radius: 10px; margin-left: 4px;">Сегодня</span><?php endif; ?></div>
                <?php foreach (array_slice($dayEvents, 0, 3) as $event): ?>
                <div style="font-size: 11px; padding: 3px 6px; border-radius: 4px; margin-bottom: 2px; background: <?php echo $event['color']; ?>20; color: <?php echo $event['color']; ?>; border-left: 3px solid <?php echo $event['color']; ?>; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer;" title="<?php echo sanitize($event['title']); ?>"><?php echo $event['event_time'] ? date('H:i', strtotime($event['event_time'])) . ' ' : ''; ?><?php echo sanitize($event['title']); ?></div>
                <?php endforeach; ?>
                <?php if (count($dayEvents) > 3): ?><div style="font-size: 11px; color: var(--gray); text-align: center;">+<?php echo count($dayEvents) - 3; ?> ещё</div><?php endif; ?>
            </div>
            <?php endfor; ?>
        </div>
    </div>
    <div>
        <div class="card">
            <div class="card-header"><div class="card-title">События месяца</div></div>
            <div style="display: flex; flex-direction: column; gap: 10px;">
                <?php foreach ($events as $event): ?>
                <div style="display: flex; align-items: flex-start; gap: 10px; padding: 10px; border-radius: 8px; background: <?php echo $event['color']; ?>10; border-left: 3px solid <?php echo $event['color']; ?>">
                    <div style="font-size: 12px; font-weight: 600; color: <?php echo $event['color']; ?>; min-width: 40px;"><?php echo date('d', strtotime($event['event_date'])); ?></div>
                    <div style="flex: 1;"><div style="font-weight: 500; font-size: 13px;"><?php echo sanitize($event['title']); ?></div><div style="font-size: 11px; color: var(--gray);"><?php echo $eventTypes[$event['event_type']] ?? $event['event_type']; ?><?php echo $event['event_time'] ? ' • ' . date('H:i', strtotime($event['event_time'])) : ''; ?></div></div>
                    <a href="?page=calendar&delete=<?php echo $event['id']; ?>" style="color: var(--gray); font-size: 12px;" onclick="return confirm('Удалить?')"><i class="fas fa-times"></i></a>
                </div>
                <?php endforeach; ?>
                <?php if (empty($events)): ?><div style="text-align: center; color: var(--gray); padding: 20px;">Событий нет</div><?php endif; ?>
            </div>
        </div>
    </div>
</div>

<div class="modal-overlay" id="eventModal">
    <div class="modal">
        <div class="modal-header"><div class="modal-title">Новое событие</div><button class="modal-close" onclick="closeModal('eventModal')">&times;</button></div>
        <form method="POST">
            <div class="modal-body">
                <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 sanitize($project['name']); ?></option><?php endforeach; ?></select></div>
                <div class="form-group"><label>Название события *</label><input type="text" name="title" required></div>
                <div class="form-row"><div class="form-group"><label>Тип события</label><select name="event_type"><?php foreach ($eventTypes as $key => $label): ?><option value="<?php echo $key; ?>"><?php echo $label; ?></option><?php endforeach; ?></select></div><div class="form-group"><label>Цвет</label><div style="display: flex; gap: 8px; flex-wrap: wrap;"><?php foreach ($eventColors as $color): ?><label style="width: 28px; height: 28px; border-radius: 50%; background: <?php echo $color; ?>; cursor: pointer; border: 3px solid transparent;" class="color-opt"><input type="radio" name="color" value="<?php echo $color; ?>" style="display: none;" <?php echo $color === '#4F46E5' ? 'checked' : ''; ?>></label><?php endforeach; ?></div></div></div>
                <div class="form-row"><div class="form-group"><label>Дата *</label><input type="date" name="event_date" required></div><div class="form-group"><label>Время</label><input type="time" name="event_time"></div></div>
                <div class="form-group"><label>Описание</label><textarea name="description" rows="3"></textarea></div>
            </div>
            <div class="modal-footer"><button type="button" class="btn btn-secondary" onclick="closeModal('eventModal')">Отмена</button><button type="submit" class="btn btn-primary">Добавить</button></div>
        </form>
    </div>
</div>

<style>.color-opt:has(input:checked) { border-color: #1f2937 !important; box-shadow: 0 0 0 2px white, 0 0 0 4px #1f2937; }</style>
