package incheon.res.mng.cd.code.service.impl;

import incheon.res.mng.cd.code.mapper.MngCdCodeMapper;
import incheon.res.mng.cd.code.service.MngCdCodeService;
import incheon.res.mng.cd.code.vo.MngCdCodeVO;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class MngCdCodeServiceImpl implements MngCdCodeService {
    @Resource
    private MngCdCodeMapper mngCdCodeMapper;

    /**
     * @MethodDESC : 공통코드 리스트 검색
     */
    public List selectCodeList(MngCdCodeVO vo) throws Exception{
        return mngCdCodeMapper.selectCodeList(vo);
    }

    /**
     * @MethodDESC : 코드설명 리스트
     */
    public List selectCdeexpList(MngCdCodeVO vo) throws Exception{
        return mngCdCodeMapper.selectCdeexpList(vo);
    }

    /**
     * @MethodDESC : 공통코드 count
     */
    public int countCode(MngCdCodeVO vo) throws Exception{
        return mngCdCodeMapper.countCode(vo);
    }

    /**
     * @MethodDESC : 공통코드 등록
     */
    public int insertCode(MngCdCodeVO vo) throws Exception{
        //코드값 구하기
        String cdeValStr = mngCdCodeMapper.cdeVal(vo);
        vo.setVlCdStr(cdeValStr);
        //코드값 형변환
        int cdeValInt = Integer.parseInt(cdeValStr);
        vo.setVlCdInt(cdeValInt);
        vo.setCdFldNm(vo.getSmbolCd()+"_CDE");
        vo.setWholCd(vo.getSmbolCd()+vo.getVlCdStr());

        return mngCdCodeMapper.insertCode(vo);
    }

    /**
     * @MethodDESC : 공통코드 삭제
     */
    public int deleteCode(MngCdCodeVO vo) throws Exception{
        String tblNamStr = vo.getUseTblNm();
        String allCdeStr = vo.getWholCd();
        String [] tblNam = tblNamStr.split(",");
        String [] allCde = allCdeStr.split(",");

        int result = 0;

        for(int i = 0;i<tblNam.length;i++){
            vo.setUseTblNm(tblNam[i]);
            vo.setWholCd(allCde[i]);
            mngCdCodeMapper.deleteCode(vo);
            result++;
        }
        return result;
    }
}
