package com.example.volunteer.web;

import com.example.volunteer.repository.EventRepository;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * ============================================================================
 * (c) Controller — 页面控制器
 * ============================================================================
 *
 * 【题目 / Question (c)】
 * EN — Write the Controller code for the use case Display Events and their Volunteers. (2 marks)
 * 中 — 写出“显示活动及其志愿者”用例的 Controller 代码。（2 分）
 *
 * 【三件事 / Three things the 2 marks are for】
 * EN — ① inject the repository  ② put the data into the Model  ③ return the view name.
 * 中 — ① 注入 Repository ② 把数据放进 Model ③ 返回视图名（而不是 "events.html"）。
 *
 * 【注意 / Note】
 * EN — @Controller (not @RestController): the method returns a view name that Thymeleaf
 *      resolves to src/main/resources/templates/events.html.
 *       The attribute name "events" must match ${events} in the template.
 * 中 — 用 @Controller（不是 @RestController）：返回的是视图名，由 Thymeleaf 解析成
 *      templates/events.html。Model 里的键名 "events" 必须和模板里的 ${events} 一致。
 */
@Controller
public class EventController {

    private final EventRepository eventRepository;

    public EventController(EventRepository eventRepository) {
        this.eventRepository = eventRepository;
    }

    @GetMapping("/events")
    public String list(Model model) {
        model.addAttribute("events", eventRepository.findAllWithSignupsAndVolunteers());
        return "events";                       // → templates/events.html
    }
}
