package itn.let.cop.bbs.service;

import javax.annotation.Resource;

import org.aspectj.lang.JoinPoint;

/**
 * 게시판 변경이력 생성을 위한 ASPECT 클래스
 * @author ITN
 * @since 2018.08.17
 * @version 1.0
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2018.08.17  ITN          최초 생성
 *
 * </pre>
 */
public class EgovBBSChgHstAspect {

	@Resource(name = "EgovBBSManageService")
	private EgovBBSManageService bbsMngService;

	/**
	 * 게시물 생성 정보를 생성한다.
	 * EgovBBSManageService.insertBoardArticle Method
	 *
	 * @param
	 * @return void
	 * @throws Exception
	 */
	public void insertBBSChgHst(JoinPoint joinPoint, Object returnVal) throws Throwable {
        String methodName = joinPoint.getSignature().getName();

		if (returnVal instanceof Board) {
			Board board = (Board) returnVal;
			String histSe = "";
			String bbsChgNm = board.getLastUpdusrNm();
			String bbsChgId = board.getLastUpdusrId();
			String bbsNttSj = board.getNttSj();
			String bbsNttCn = board.getNttCn();
			
			if (methodName.equals("insertBoardArticle")) {
				histSe = "C";
				bbsChgNm = board.getNtcrNm();
				bbsChgId = board.getFrstRegisterId();
			} else if (methodName.equals("updateBoardArticle")) {
				histSe = "U";
			} else if (methodName.equals("deleteBoardArticle")) {
				histSe = "D";
				bbsNttSj = "삭제된 게시글입니다.";
				bbsNttCn = "삭제된 게시글입니다.";
			}
			
			BoardChgHst param = new BoardChgHst();
			param.setNttId(board.getNttId());
			param.setBbsId(board.getBbsId());
			int histId = bbsMngService.selectBoardChgHstId(param);
			
			BoardChgHst boardChgHst = new BoardChgHst();
			boardChgHst.setNttId(board.getNttId());
			boardChgHst.setBbsId(board.getBbsId());
			boardChgHst.setHistId(histId);
			boardChgHst.setHistSe(histSe);
			boardChgHst.setNttSj(bbsNttSj);
			boardChgHst.setNttCn(bbsNttCn);
			boardChgHst.setFrstRegisterNm(bbsChgNm);
			boardChgHst.setFrstRegisterId(bbsChgId);
			boardChgHst.setNtcrIp(board.getNtcrIp());
	        bbsMngService.insertBoardChgHst(boardChgHst);
		}
	}
	
}
