// /js/report-viewer-export.js

/**
 * 주어진 데이터를 CSV 형식의 문자열로 변환합니다.
 * @param {object} reportData - 요약 및 작업자별 데이터
 * @returns {string} - CSV 형식의 문자열
 */
function convertToCsv(reportData) {
  let csvContent = "\uFEFF"; // UTF-8 BOM
  csvContent += "작업자명,프로젝트명,작업유형,작업상태,에러유형,작업시간,입력자\n";

  reportData.workers.forEach(worker => {
    worker.entries.forEach(entry => {
      const row = [
        worker.worker_name,
        entry.project_name,
        entry.work_type_name,
        entry.work_status_name,
        entry.error_type_name,
        entry.work_hours,
        entry.created_by_name
      ].map(field => `"${String(field || '').replace(/"/g, '""')}"`).join(',');
      csvContent += row + "\n";
    });
  });
  return csvContent;
}

/**
 * 가공된 보고서 데이터를 CSV 파일로 다운로드합니다.
 * @param {object|null} reportData - UI에 표시된 가공된 데이터
 */
export function exportToExcel(reportData) {
  if (!reportData || !reportData.workers || reportData.workers.length === 0) {
    alert('내보낼 데이터가 없습니다.');
    return;
  }

  try {
    const csv = convertToCsv(reportData);
    const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
    const link = document.createElement('a');
    const url = URL.createObjectURL(blob);
    
    const fileName = `작업보고서_${reportData.summary.date}.csv`;
    
    link.setAttribute('href', url);
    link.setAttribute('download', fileName);
    link.style.visibility = 'hidden';
    
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    URL.revokeObjectURL(url);
    
  } catch (error) {
    console.error('Excel 내보내기 실패:', error);
    alert('Excel 파일을 생성하는 중 오류가 발생했습니다.');
  }
}

/**
 * 현재 페이지의 인쇄 기능을 호출합니다.
 */
export function printReport() {
  try {
    window.print();
  } catch (error) {
    console.error('인쇄 실패:', error);
    alert('인쇄 중 오류가 발생했습니다.');
  }
} 