// /js/daily-report-viewer.js

import { fetchReportData } from './report-viewer-api.js';
import { renderReport, processReportData, showLoading, showError } from './report-viewer-ui.js';
import { exportToExcel, printReport } from './report-viewer-export.js';
import { getUser } from './auth.js';

// 전역 상태: 현재 화면에 표시된 데이터
let currentProcessedData = null;

/**
 * 날짜를 기준으로 보고서를 검색하고 화면에 렌더링합니다.
 */
async function searchReports() {
  const dateInput = document.getElementById('reportDate');
  const selectedDate = dateInput.value;
    
    if (!selectedDate) {
    showError('날짜를 선택해주세요.');
        return;
    }
    
  showLoading(true);
  currentProcessedData = null; // 새 검색이 시작되면 이전 데이터 초기화

  try {
    const rawData = await fetchReportData(selectedDate);
    currentProcessedData = processReportData(rawData, selectedDate);
    renderReport(currentProcessedData);
    } catch (error) {
    showError(error.message);
    renderReport(null); // 에러 발생 시 데이터 없는 화면 표시
    } finally {
        showLoading(false);
  }
}

/**
 * 페이지의 모든 이벤트 리스너를 설정합니다.
 */
function setupEventListeners() {
  document.getElementById('searchBtn')?.addEventListener('click', searchReports);
  document.getElementById('todayBtn')?.addEventListener('click', () => {
    const today = new Date().toISOString().split('T')[0];
    document.getElementById('reportDate').value = today;
    searchReports();
  });
  
  document.getElementById('reportDate')?.addEventListener('keypress', (e) => {
    if (e.key === 'Enter') searchReports();
  });

  document.getElementById('exportExcelBtn')?.addEventListener('click', () => {
    exportToExcel(currentProcessedData);
  });
  
  document.getElementById('printBtn')?.addEventListener('click', printReport);
}

/**
 * 페이지가 처음 로드될 때 실행되는 초기화 함수
 */
function initializePage() {
    // auth.js를 사용하여 인증 상태 확인
    const user = getUser();
    if (!user) {
        showError('로그인이 필요합니다. 2초 후 로그인 페이지로 이동합니다.');
        setTimeout(() => window.location.href = '/login', 2000);
        return;
    }
    
    setupEventListeners();

    // 페이지 로드 시 오늘 날짜로 자동 검색
    const dateInput = document.getElementById('reportDate');
    dateInput.value = new Date().toISOString().split('T')[0];
    searchReports();
}

// DOM이 로드되면 페이지 초기화를 시작합니다.
document.addEventListener('DOMContentLoaded', initializePage);