package incheon.ags.uis.code.service.impl;

import incheon.ags.uis.code.mapper.CodeDetailMapper;
import incheon.ags.uis.code.service.CodeDetailService;
import incheon.ags.uis.code.vo.CodeDetailVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class CodeDetailServiceImpl implements CodeDetailService {

    private final CodeDetailMapper codeDetailMapper;

    public CodeDetailServiceImpl(CodeDetailMapper codeDetailMapper) {
        this.codeDetailMapper = codeDetailMapper;
    }

    @Override
    public List<CodeDetailVO> selectCodeDetailListByGroupCd(String groupCd) {
        return codeDetailMapper.selectCodeDetailListByGroupCd(groupCd);
    }

    @Override
    public CodeDetailVO selectCodeDetail(String groupCd, String cd) {
        return codeDetailMapper.selectCodeDetail(groupCd, cd);
    }

    @Transactional
    @Override
    public void insertCodeDetail(CodeDetailVO vo) {
        if (vo.getFrstRegId() == null || vo.getFrstRegId().isEmpty()) {
            vo.setFrstRegId(vo.getLOGIN_USER_ID());
        }
        if (vo.getLastMdfcnId() == null || vo.getLastMdfcnId().isEmpty()) {
            vo.setLastMdfcnId(vo.getLOGIN_USER_ID());
        }
        codeDetailMapper.insertCodeDetail(vo);
    }

    @Transactional
    @Override
    public void updateCodeDetail(CodeDetailVO vo) {
        if (vo.getLastMdfcnId() == null || vo.getLastMdfcnId().isEmpty()) {
            vo.setLastMdfcnId(vo.getLOGIN_USER_ID());
        }
        codeDetailMapper.updateCodeDetail(vo);
    }

    @Transactional
    @Override
    public void deleteCodeDetail(String groupCd, String cd) {
        codeDetailMapper.deleteCodeDetail(groupCd, cd);
    }
}
