package sgc.portal.mobile.persistence;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import sgc.portal.mobile.dto.RoomSearchVo;
import sgc.portal.mobile.model.CodeVo;
import sgc.portal.mobile.model.ZehrRomDisplVo;
import sgc.portal.mobile.model.ZehrRomInfoVo;
import sgc.portal.mobile.model.ZehrRomLoctnVo;
import sgc.portal.mobile.model.ZehrRomResrvtnVo;

/**
 * 회의실 예약 Mapper
 * 
 * @author 5364
 * @since 2022-09-19
 */
@Mapper
public interface RoomMapper {

	/**
	 * 회의실 위치 목록
	 * 
	 * @param vo
	 * @return
	 */
	List<ZehrRomLoctnVo> selectLocationList(RoomSearchVo vo);

	/**
	 * 회의실 정보 목록
	 * 
	 * @param search
	 * @return
	 */
	List<ZehrRomInfoVo> selectRomInfoList(RoomSearchVo search);

	/**
	 * 회의실 시간대별 사용 현황 리스트
	 * 
	 * @param search
	 * @return
	 */
	List<ZehrRomDisplVo> selectRomDayList(RoomSearchVo search);

	/**
	 * 회의실 시간대별 사용 현황 리스트
	 * 
	 * @param search
	 * @return
	 */
	List<ZehrRomDisplVo> selectRomDisplList(RoomSearchVo search);

	/**
	 * 회의실 예약정보 리스트
	 * 
	 * @param search
	 * @return
	 */
	List<ZehrRomResrvtnVo> selectRomResrvList(RoomSearchVo search);

	/**
	 * 회의실 예약정보 보기
	 * 
	 * @param search
	 * @return
	 */
	ZehrRomResrvtnVo selectRomResrvView(RoomSearchVo search);

	/**
	 * 회의실 예약정보 Histr 백업
	 * 
	 * @param search
	 * @return
	 */
	void insertRomHistr(RoomSearchVo search);

	/**
	 * 회의실 예약정보 Insert
	 * 
	 * @param search
	 * @return
	 */
	void insertRomResrvtn(RoomSearchVo search);

	/**
	 * 회의실 예약 Display Colunm 명
	 * 
	 * @param search
	 * @return
	 */
	String getReservationDisName(RoomSearchVo search);

	/**
	 * 회의실 예약 상태 업데이트
	 * 
	 * @param search
	 * @return
	 */
	void updateRomResrvtn(RoomSearchVo search);

	/**
	 * 회의실 예약 Disp 업데이트
	 * 
	 * @param vo
	 * @return
	 */
	void updateRomDispl(ZehrRomDisplVo vo);

	/**
	 * 승인 요청 메일 리스트
	 * 
	 * @param search
	 * @return
	 */
	List<CodeVo> selectApprovalEmailList(RoomSearchVo search);

	/**
	 * 승인 요청 메일 리스트
	 * 
	 * @param search
	 * @return
	 */
	List<CodeVo> selectRequestEmailList(RoomSearchVo search);

	/**
	 * 기존 예약 정보 가져오기
	 * 
	 * @param search
	 * @return
	 */
	ZehrRomResrvtnVo selectReservationCheck(RoomSearchVo search);

	/**
	 * 회의실) 회의실 코드 리스트
	 * @return
	 */
	List<CodeVo> selectCodeRoomList(RoomSearchVo vo);
	
}
