package nlib.bbs.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import nlib.bbs.service.ArticleVO;
import nlib.bbs.service.AttachFileService;
import nlib.bbs.service.AttachFileVO;
import nlib.bbs.service.QnaService;
import nlib.util.StringUtil;

/**
 * <pre>
 * @Class Name : AttachFileServiceImpl.java
 * 
 * @Description : 첨부파일을 관리하는 서비스 클래스 
 * 
 * 
 * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
 *
 * </pre>
 *
 * @ ------------    --------    ---------------------------
 * @ 수정일                     수정자             수정내용
 * @ ------------    --------    ---------------------------
 * @ 2021. 9. 16.    KNKIM       최초 생성
 *
 * 
 * @author 이씨플라자 * DIGITALSHIP KNKIM
 * @since 2021. 9. 16.
 * @version 1.0
 *
 */
@Service("attachFileService")
public class AttachFileServiceImpl implements AttachFileService
{
	static Logger log = LoggerFactory.getLogger(AttachFileServiceImpl.class);
	
	@Resource(name="attachFileDAO")
	AttachFileDAO attachFileDAO;
	
	@Resource(name = "qnaService")
	private QnaService qnaService;
	
	/**
	 * 첨부파일 목록을 조회한다.  
	 * 
	 * @param
	 * @return
	 * @throws Exception
	 */
	@Override
	public List<AttachFileVO> listAttachFiles(String attachFileId) throws Exception {
		return attachFileDAO.listAttachFiles(attachFileId);
	}

	/**
	 * 첨부파일그룹 등록한다.   
	 * 
	 * @param
	 * @return
	 * @throws Exception
	 */
	@Override
	public int insertAttachFileGroup(AttachFileVO attachFileVO) throws Exception {
		return attachFileDAO.insertAttachFileGroup(attachFileVO);
	}
	
	/**
	 * 첨부파일 등록한다.   
	 * 
	 * @param
	 * @return
	 * @throws Exception
	 */
	@Override
	public int insertAttachFile(AttachFileVO attachFileVO) throws Exception {
		return attachFileDAO.insertAttachFile(attachFileVO);
	}

	/**
	 * 첨부파일그룹을 삭제한다.   
	 * 
	 * @param
	 * @return
	 * @throws Exception
	 */
	@Override
	public int deleteAttachFileGroup(String attachFileId) throws Exception {
		int ret = attachFileDAO.deleteAttachFileGroup(attachFileId);
		attachFileDAO.deleteAllFilesOfAttachFileGroup(attachFileId);
		return ret;
	}
	
	/**
	 * 첨부파일 삭제한다.   
	 * 
	 * @param
	 * @return
	 * @throws Exception
	 */
	@Override
	public int deleteAttachFile(AttachFileVO attachFileVO) throws Exception {
		return attachFileDAO.deleteAttachFile(attachFileVO);
	}
	


	/**
	 * 첨부파일 정보를 조회한다.  
	 * 
	 * @param attachFileVO
	 * @return
	 * @throws Exception
	 */
	public AttachFileVO selectAttachFile(AttachFileVO attachFileVO) throws Exception {
		
		if(attachFileVO == null) return null;
		if(StringUtil.isEmpty(attachFileVO.getAttachFileId())) return null;
		if(attachFileVO.getFileSn() < 0) return null;
		
		return attachFileDAO.selectAttachFile(attachFileVO);
	}
	
	/**
	 * 다운로드 가능 여부를 확인하다.
	 * 
	 * @param attachFileVO
	 * @return
	 * @throws Exception
	 */
	public boolean checkAttachFileDownload(AttachFileVO attachFileVO) throws Exception {
		
		String bdType = attachFileVO.getBdType();
		if(StringUtil.isEmpty(bdType)) return false;
		
		String ret = "Y"; 
		ret = attachFileDAO.checkAttachFileDownload(attachFileVO);
		
		return StringUtil.isEmpty(ret) ? false : (ret.charAt(0) == 'Y');
	}
}