package com.palmnest.service.dorm.manager;

import com.palmnest.application.bean.Page;
import com.palmnest.application.dto.DormImportDto;
import com.palmnest.application.dto.input.DormRoomerListDto;
import com.palmnest.model.dorm.DormRoomerInfo;
import com.palmnest.service.GenericManager;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

/**
 * 宿舍管理信息manager类
 *
 * @author longmeizhen
 */
public interface DormRoomerManager extends GenericManager<DormRoomerInfo, Long> {
	/**
	 * 获取宿舍管理信息列表
	 *
	 * @param dto界面上的参数
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws Exception
	 */
	public Page findList(DormRoomerListDto dto, int pageNo, int pageSize) throws Exception;

	/**
	 * 导入宿舍管理数据
	 *
	 * @param ins
	 * @param orgId 项目id
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> importDormRoomer(InputStream ins, String orgId) throws Exception;

	/**
	 * 操作导入的宿舍管理数据
	 *
	 * @param dormList
	 * @param userId   操作人
	 * @param orgId    所属项目
	 * @return
	 */
	public Map<String, Object> operateDormRoomerList(List<DormImportDto> dormList, String userId, String orgId);

	/**
	 * 根据电话号码和身份证
	 *
	 * @param mobile电话
	 * @param idCard身份证
	 * @param orgId项目
	 * @return
	 */
	public DormRoomerInfo getDormRoomerByMobileAndIdcard(String mobile, String idCard, String orgId);

	/**
	 * 根据openId获取登录的员工入宿信息
	 *
	 * @param openId
	 * @return
	 */
	public DormRoomerInfo getDormInfoByOpenId(String openId, String orgId);

	/**
	 * 根据公寓、楼宇、楼层、房间号以及项目获取全部舍友
	 * (如果维护了id之后可直接根据房间号id获取对应的数据，现无法满足2018-09-26)
	 * 备注：避免不同楼宇楼层房间名称一样的情况，因此需要这些参数一起做校验
	 *
	 * @param orgId     项目
	 * @param apartment 公寓
	 * @param build     楼宇
	 * @param floor     楼层
	 * @param room      房间
	 * @return
	 */
	public List<DormRoomerInfo> getRoomerByRoomInfo(Long id, String orgId, String apartment, String build, String floor, String room);
}
