package com.palmnest.service.dorm.service;

import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.bean.Page;
import com.palmnest.application.dto.input.DormCheckOutDto;
import com.palmnest.application.dto.input.DormRoomerListDto;
import com.palmnest.model.dorm.DormRoomerInfo;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import java.util.Map;

/**
 * 退宿申请单service类
 *
 * @author longmeizhen
 */
public interface DormCheckOutService {
	/**
	 * 获取退宿申请列表
	 *
	 * @param dto      查询条件
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page getDormCheckOutList(DormRoomerListDto dto, int pageNo, int pageSize);

	/**
	 * 根据id获取员工申请的退宿信息详情
	 *
	 * @param id
	 * @return
	 */
	public Map<String, Object> getDormCheckById(Long id);

	/**
	 * 审批退宿申请单
	 *
	 * @param map
	 * @return
	 */
	public AppResultDto auditDormCheckOut(Map<String, Object> map, MultipartHttpServletRequest request);

	/**
	 * 获取验证码并且校验用户输入的身份信息是否存在
	 *
	 * @param userMobile 电话号码
	 * @param idCard身份证
	 * @param orgId      项目
	 * @return
	 */
	public AppResultDto getDormAuthCode(String type, String userMobile, String idCard, String orgId, String openId);

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

	/**
	 * 判断所填写的code和该号码获取到的是否同一个
	 *
	 * @param mobile
	 * @param code
	 * @return
	 * @throws Exception
	 */
	public int isExistence(String mobile, String code) throws Exception;

	/**
	 * 登录员工信息获取员工入宿信息
	 *
	 * @param userMobile 电话号码
	 * @param idCard身份证
	 * @param code验证码
	 * @param orgId项目
	 * @param openId
	 * @return
	 */
	public AppResultDto login(String type, String userMobile, String idCard, String code, String orgId, String openId);

	/**
	 * 提交退宿信息
	 *
	 * @param checkDto
	 * @return
	 */
	public AppResultDto applyCheckOut(DormCheckOutDto checkDto, MultipartHttpServletRequest request);

	/**
	 * 获取登录微信用户的申请列表信息
	 *
	 * @param openId
	 * @return
	 */
	public AppResultDto getCheckOutList(String openId, String orgId);

	/**
	 * 退出登录
	 *
	 * @param openId
	 * @return
	 */
	public String exitLogin(String openId, String orgId);

	/**
	 * 获取二维码信息
	 *
	 * @param id
	 * @return
	 */
	public AppResultDto getQRCode(Long id);
}
