package incheon.uis.ums.file.service.impl;

import incheon.uis.ums.file.mapper.CmtFileMapper;
import incheon.uis.ums.file.service.CmtFileService;
import incheon.uis.ums.file.vo.CmtFileVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * 공통 파일 관리 서비스 구현
 */
@Service
public class CmtFileServiceImpl implements CmtFileService {
    
    @Autowired
    private CmtFileMapper cmtFileMapper;
    
    @Override
    public CmtFileVO getFileBySeq(BigDecimal fileSeq) {
        return cmtFileMapper.selectFileBySeq(fileSeq);
    }
    
    @Override
    public int insertFile(CmtFileVO vo) {
        return cmtFileMapper.insertFile(vo);
    }

    /*public CmtFileVO insertCmtFile(MultipartFile file, String gubun, String entity, HttpServletRequest request){
        Map<String, Object> result = new HashMap<>();

        CmtFileVO cmtFileInfo = new CmtFileVO();

        try {
            // 1. 파일 유효성 검사
            if (file == null || file.isEmpty()) {
                result.put("success", false);
                result.put("message", "업로드할 파일이 없습니다.");
                return ResponseEntity.badRequest().body(result);
            }

            // 2. 파일 크기 제한 (예: 10MB)
            long maxFileSize = propertyService.getLong("Globals.posblAtchFileSize");
            //long maxFileSize = 10 * 1024 * 1024; // 10MB
            if (file.getSize() > maxFileSize) {
                result.put("success", false);
                result.put("message", "파일 크기는 " + maxFileSize/1048576 + "MB를 초과할 수 없습니다.");
                return ResponseEntity.badRequest().body(result);
            }

            // 3. 파일 확장자 검증
            String originalFilename = file.getOriginalFilename();
            String extension = uisFileUtils.getFileExtension(originalFilename);

            *//*if (!uisFileUtils.isAllowedExtension(extension)) {
                result.put("success", false);
                result.put("message", "허용되지 않은 파일 형식입니다.");
                return ResponseEntity.badRequest().body(result);
            }*//*

            // 4. 파일 저장
            CmtFileVO fileVO = uisFileUtils.saveUploadedFile(file, gubun, entity, request);

            // 5. DB에 파일 정보 저장
            int insertResult = cmtFileService.insertFile(fileVO);

            if (insertResult > 0) {
                result.put("success", true);
                result.put("message", "파일이 성공적으로 업로드되었습니다.");
                result.put("fileSeq", fileVO.getFileSeq());
                result.put("fileName", fileVO.getDwnldFileNm());
                result.put("fileSize", fileVO.getOrgnlFileSz());
                return ResponseEntity.ok(result);
            } else {
                result.put("success", false);
                result.put("message", "파일 정보 저장에 실패했습니다.");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
            }

        } catch (Exception e) {
            result.put("success", false);
            result.put("message", "파일 업로드 중 오류가 발생했습니다: " + e.getMessage());
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
        }
    }*/
}
