package com.magistr.app.dto;

import com.magistr.app.model.ScheduleParity;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

public record RenderedLessonDto(
        Long scheduleRuleId,
        Long scheduleRuleSlotId,
        LocalDate date,
        Integer dayOfWeek,
        String dayName,
        Integer weekNumber,
        ScheduleParity parity,
        Long timeSlotId,
        Integer timeSlotOrder,
        LocalTime startTime,
        LocalTime endTime,
        Long subjectId,
        String subjectName,
        Long teacherId,
        String teacherName,
        Long classroomId,
        String classroomName,
        Long lessonTypeId,
        String lessonTypeName,
        String lessonFormat,
        Long subgroupId,
        String subgroupName,
        List<Long> subgroupIds,
        List<String> subgroupNames,
        List<Long> groupIds,
        List<String> groupNames,
        String activityType,
        Integer lessonTypeAcademicHours,
        Integer consumedLessonTypeAcademicHoursBeforeLesson,
        Integer remainingLessonTypeAcademicHoursAfterLesson,
        com.magistr.app.model.ScheduleParity ruleParity,
        Long scheduleOverrideId,
        String overrideAction,
        LocalDate originalLessonDate
) {
    public RenderedLessonDto(
            Long scheduleRuleId,
            Long scheduleRuleSlotId,
            LocalDate date,
            Integer dayOfWeek,
            String dayName,
            Integer weekNumber,
            ScheduleParity parity,
            Long timeSlotId,
            Integer timeSlotOrder,
            LocalTime startTime,
            LocalTime endTime,
            Long subjectId,
            String subjectName,
            Long teacherId,
            String teacherName,
            Long classroomId,
            String classroomName,
            Long lessonTypeId,
            String lessonTypeName,
            String lessonFormat,
            Long subgroupId,
            String subgroupName,
            List<Long> subgroupIds,
            List<String> subgroupNames,
            List<Long> groupIds,
            List<String> groupNames,
            String activityType,
            Integer lessonTypeAcademicHours,
            Integer consumedLessonTypeAcademicHoursBeforeLesson,
            Integer remainingLessonTypeAcademicHoursAfterLesson,
            com.magistr.app.model.ScheduleParity ruleParity
    ) {
        this(
                scheduleRuleId,
                scheduleRuleSlotId,
                date,
                dayOfWeek,
                dayName,
                weekNumber,
                parity,
                timeSlotId,
                timeSlotOrder,
                startTime,
                endTime,
                subjectId,
                subjectName,
                teacherId,
                teacherName,
                classroomId,
                classroomName,
                lessonTypeId,
                lessonTypeName,
                lessonFormat,
                subgroupId,
                subgroupName,
                subgroupIds,
                subgroupNames,
                groupIds,
                groupNames,
                activityType,
                lessonTypeAcademicHours,
                consumedLessonTypeAcademicHoursBeforeLesson,
                remainingLessonTypeAcademicHoursAfterLesson,
                ruleParity,
                null,
                null,
                null
        );
    }
}
