from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from core.models import ScheduleItem, Group
from users.models import Teacher
import calendar
from datetime import datetime, timedelta


@login_required
def schedule_view(request):
    """Общее расписание колледжа"""
    today = datetime.now().date()
    week_start = today - timedelta(days=today.weekday())

    dates = [week_start + timedelta(days=i) for i in range(7)]
    week_days = ['ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС']

    # Получаем расписание для всех групп
    schedule_items = ScheduleItem.objects.filter(date__gte=week_start, date__lte=week_start + timedelta(days=6))

    # Группируем по группам и датам
    schedule_by_group = {}
    for item in schedule_items:
        group_name = item.group.name
        if group_name not in schedule_by_group:
            schedule_by_group[group_name] = {date: [] for date in dates}
        schedule_by_group[group_name][item.date].append(item)

    return render(request, 'schedule.html', {
        'dates': dates,
        'week_days': week_days,
        'schedule_by_group': schedule_by_group,
        'today': today,
    })


@login_required
def teacher_schedule(request, teacher_id=None):
    """Расписание конкретного преподавателя"""
    if teacher_id:
        teacher = Teacher.objects.get(id=teacher_id)
    elif request.user.role == 'teacher':
        teacher = request.user.teacher
    else:
        teacher = None

    if not teacher:
        return redirect('schedule')

    today = datetime.now().date()
    week_start = today - timedelta(days=today.weekday())
    dates = [week_start + timedelta(days=i) for i in range(7)]

    schedule_items = ScheduleItem.objects.filter(
        teacher=teacher.user,
        date__gte=week_start,
        date__lte=week_start + timedelta(days=6)
    )

    schedule_by_date = {date: [] for date in dates}
    for item in schedule_items:
        schedule_by_date[item.date].append(item)

    return render(request, 'teacher_schedule.html', {
        'teacher': teacher,
        'dates': dates,
        'schedule_by_date': schedule_by_date,
    })