import os
import shutil
from pathlib import Path
from typing import Optional

class TemplateService:
    """PDF模板管理服务"""
    
    def __init__(self, template_dir: str = "templates/pdf"):
        self.template_dir = Path(template_dir)
        self.template_dir.mkdir(parents=True, exist_ok=True)
        
        # 默认模板名称
        self.default_template = "be_u_template.pdf"
    
    def get_template_path(self, template_name: Optional[str] = None) -> Path:
        """获取模板文件路径"""
        if template_name is None:
            template_name = self.default_template
        
        template_path = self.template_dir / template_name
        
        if not template_path.exists():
            raise FileNotFoundError(f"模板文件不存在: {template_path}")
        
        return template_path
    
    def save_template(self, source_path: str, template_name: Optional[str] = None) -> str:
        """
        保存模板文件到系统
        
        Args:
            source_path: 源文件路径
            template_name: 模板名称（可选）
            
        Returns:
            保存后的模板路径
        """
        source_path = Path(source_path)
        
        if not source_path.exists():
            raise FileNotFoundError(f"源文件不存在: {source_path}")
        
        if template_name is None:
            template_name = self.default_template
        
        dest_path = self.template_dir / template_name
        
        # 复制文件
        shutil.copy2(source_path, dest_path)
        
        print(f"✓ 模板已保存: {dest_path}")
        return str(dest_path)
    
    def template_exists(self, template_name: Optional[str] = None) -> bool:
        """检查模板是否存在"""
        if template_name is None:
            template_name = self.default_template
        
        return (self.template_dir / template_name).exists()
    
    def list_templates(self) -> list:
        """列出所有可用模板"""
        if not self.template_dir.exists():
            return []
        
        return [f.name for f in self.template_dir.glob("*.pdf")]
