package com.zioinfo.kintex.congestion;

import com.zioinfo.kintex.common.ApiResponse;
import com.zioinfo.kintex.common.error.ApiException;
import com.zioinfo.kintex.common.error.ErrorCode;
import com.zioinfo.kintex.congestion.dto.CongestionDtos.CongestionOverviewDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 공개/관람객 혼잡 안내 API (F-C3) — 비인증 공개({@code /api/public/**} permitAll).
 * <p>관람객 웹/앱(공개 또는 로그인)에서 조회 가능. 입장 게이트·주차·인기 공간 혼잡을 3단계로 안내.
 * <p>M14 현장운영 혼잡 실집계(체크인 파생)를 재사용하되, 관람객 관점 요약만 노출한다(운영 상세 미노출).
 */
@RestController
@RequestMapping("/api/public/congestion")
public class PublicCongestionController {

    private final CongestionService service;

    public PublicCongestionController(CongestionService service) {
        this.service = service;
    }

    /** GET /api/public/congestion?eventId= — 관람객 혼잡 요약(전체 + 게이트/주차/인기 공간). */
    @GetMapping
    public ApiResponse<CongestionOverviewDto> congestion(@RequestParam String eventId) {
        if (eventId == null || eventId.isBlank()) {
            throw new ApiException(ErrorCode.VALIDATION, "행사 식별자가 필요합니다.");
        }
        return ApiResponse.ok(service.getPublicCongestion(eventId));
    }
}
