package incheon.res.rdm.oe.intusr.service.impl;

import incheon.res.rdm.oe.intusr.mapper.RmtAusrDtMapper;
import incheon.res.rdm.oe.intusr.service.RmtAusrDtService;
import incheon.res.rdm.oe.intusr.vo.RdmOeIntusrVO;
import incheon.res.rdm.oe.intusr.vo.RmtAusrDtVO;
import incheon.res.rdm.oe.requsr.vo.RdmOeRequsrVO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;


@Service
public class RmtAusrDtServiceImpl implements RmtAusrDtService {
	protected Log log = LogFactory.getLog(this.getClass());
	
	@Resource
	private RmtAusrDtMapper rmtAusrDtMapper;

	@Override
	public void insertRmtAusrDt(RmtAusrDtVO vo) throws Exception {
		rmtAusrDtMapper.insertRmtAusrDt(vo);
	}

	@Override
	public int updateRmtAusrDt(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrDt(vo);
	}
	@Override
	public int updateRmtAusrDt(RdmOeRequsrVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrDt(vo);
	}
	@Override
	public int updateRmtAusrDt(RdmOeIntusrVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrDt(vo);
	}

	/**
	 * @MethodDESC : 인증없이 사용자 정보 수정
	 */
	@Override
	public int updateRmtAusrDtWithoutPwd(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrDtWithoutPwd(vo);
	}
	@Override
	public int updateRmtAusrDtWithoutPwd(RdmOeRequsrVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrDtWithoutPwd(vo);
	}
	@Override
	public int updateRmtAusrDtWithoutPwd(RdmOeIntusrVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrDtWithoutPwd(vo);
	}

	/**
	 * @MethodDESC : 내부 사용자 등록 요청 상태 처리
	 */
	@Override
	public int requestUser(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.requestUser(vo);
	}

	/**
	 * @MethodDESC : 사용자 정보 상세 조회
	 */
	@Override
	public RmtAusrDtVO selectRmtAusrInfo(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.selectRmtAusrInfo(vo);
	}

	/**
	 * @MethodDESC : 정보 삭제
	 */
	@Override
	public int deleteRmtAusrDt(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.deleteRmtAusrDt(vo);
	}

	/**
	 * @MethodDESC : 사용 승인 처리
	 */
	@Override
	public int approveRequsr(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.approveRequsr(vo);
	}

	/**
	 * @MethodDESC : 사용자 정보 추가
	 */
	@Override
	public void approveRequsrInfo(RmtAusrDtVO vo) throws Exception {
		rmtAusrDtMapper.approveRequsrInfo(vo);
	}

	/**
	 * @MethodDESC : 사용승인 취소
	 */
	@Override
	public int rejectRequsr(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.rejectRequsr(vo);
	}

	/**
	 * @MethodDESC : 사용 승인 일괄 취소
	 */
	@Override
	public int rejectUsrBatch(RmtAusrDtVO vo) throws Exception {
		if(vo.getChkId() != null){
			String[] chkArray = vo.getChkId();
			int result = 0;
			for(int i = 0; i < chkArray.length; i++){
				RmtAusrDtVO radVO = new RmtAusrDtVO();
				radVO.setUserAcntMngNo(chkArray[i]);
				radVO.setCnclrId(vo.getCnclrId());
				result += rmtAusrDtMapper.rejectUsrBatch(radVO);
			}
			return result;
		}else{
			return 0;
		}
	}

	/**
	 * @MethodDESC : 사용자 추가
	 */
	@Override
	public void insertMngRmtUser(RmtAusrDtVO vo) throws Exception {
		rmtAusrDtMapper.insertMngRmtUser(vo);
	}
	
	/**
	 * @MethodDESC : 사용자 사용취소
	 */
	@Override
	public int updateRmtAusrCancelDt(RmtAusrDtVO vo) throws Exception {
		return rmtAusrDtMapper.updateRmtAusrCancelDt(vo);
	}

}
