package gc.mda.kcg.domain.event;

import gc.mda.kcg.permission.annotation.RequirePermission;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 알림 조회 API.
 * 예측 이벤트에 대해 발송된 알림(SMS, 푸시 등) 이력을 제공.
 */
@RestController
@RequestMapping("/api/alerts")
@RequiredArgsConstructor
public class AlertController {

    private final PredictionAlertRepository alertRepository;

    /**
     * 알림 목록 조회 (페이징). eventId 파라미터로 특정 이벤트의 알림만 필터 가능.
     */
    @GetMapping
    @RequirePermission(resource = "monitoring", operation = "READ")
    public Object getAlerts(
            @RequestParam(required = false) Long eventId,
            @RequestParam(defaultValue = "0") int page,
            @RequestParam(defaultValue = "20") int size
    ) {
        if (eventId != null) {
            return alertRepository.findByEventIdOrderBySentAtDesc(eventId);
        }
        return alertRepository.findAllByOrderBySentAtDesc(
                PageRequest.of(page, size)
        );
    }
}
