package incheon.ags.ias.cntn.cntnPrst.service.impl;

import incheon.ags.ias.cntn.cntnPrst.mapper.CntnPrstMapper;
import incheon.ags.ias.cntn.cntnPrst.service.CntnPrstService;
import incheon.ags.ias.cntn.cntnPrst.vo.CntnPrstVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * 접속 현황 관리 서비스 구현체
 *
 * CNTN_PRST_SMRY 테이블을 활용한 접속 현황 통계 조회 서비스입니다.
 *
 * @author IAS Team
 * @since 1.0.0
 */
@Slf4j
@Service("cntnPrstService")
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class CntnPrstServiceImpl extends EgovAbstractServiceImpl implements CntnPrstService {
    private final CntnPrstMapper cntnPrstMapper;
    @Override
    public CntnPrstVO selectCntnPrstLatestHourStats() {
        return cntnPrstMapper.selectCntnPrstLatestHourStats();
    }

    @Override
    public List<Map<String, Object>> selectCntnPrstHourlyStats() {
        List<Map<String, Object>> result = cntnPrstMapper.selectCntnPrstHourlyStats();
        log.info("=== Mapper 차트 데이터 조회 결과 ===");
        log.info("result size: {}", result != null ? result.size() : 0);
        if (result != null && !result.isEmpty()) {
            log.info("첫 번째 Map keys: {}", result.get(0).keySet());
            log.info("첫 번째 Map values: {}", result.get(0));
        }
        return result;
    }

    @Override
    public List<Map<String, Object>> selectCntnPrstServerStats() {
            return cntnPrstMapper.selectCntnPrstServerStats();
    }

    @Override
    public List<Map<String, Object>> selectCntnPrstDailyStats(CntnPrstVO vo) {
        // 기본값: 90일
        if (vo.getDays() == null) {
            vo.setDays(90);
        }
        return cntnPrstMapper.selectCntnPrstDailyStats(vo);
    }
}