package com.magistr.app.controller;

import com.magistr.app.config.auth.RequireRoles;
import com.magistr.app.dto.LessonTypeResponse;
import com.magistr.app.model.LessonType;
import com.magistr.app.model.Role;
import com.magistr.app.repository.LessonTypesRepository;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Comparator;
import java.util.List;

@RestController
@RequestMapping("/api/lesson-types")
@RequireRoles({Role.ADMIN, Role.EDUCATION_OFFICE, Role.DEPARTMENT, Role.SCHEDULE_VIEWER})
public class LessonTypeController {

    private final LessonTypesRepository lessonTypesRepository;

    public LessonTypeController(LessonTypesRepository lessonTypesRepository) {
        this.lessonTypesRepository = lessonTypesRepository;
    }

    @GetMapping
    public List<LessonTypeResponse> getAllLessonTypes() {
        return lessonTypesRepository.findAll().stream()
                .sorted(Comparator.comparing(LessonType::getLessonType))
                .map(lessonType -> new LessonTypeResponse(lessonType.getId(), lessonType.getLessonType()))
                .toList();
    }
}
