package com.palmnest.dao.estateserve;

import java.util.List;
import java.util.Map;

import com.palmnest.application.bean.Page;
import com.palmnest.dao.GenericDao;
import com.palmnest.model.ContractIinformation;
import com.palmnest.model.ContractIinformationOrder;

/**
 * 一键服务订单接口层
 *
 * @author HJY
 */
public interface ContractIinformationOrderDao extends GenericDao<ContractIinformationOrder, Integer> {

	/**
	 * 查询服务订单信息
	 *
	 * @param pageSize
	 * @param pageNo
	 * @param orgId
	 * @param virtualArchitectureId
	 * @return
	 */
	public Page ContractIinformationOrderPage(Integer pageSize, Integer pageNo, String orgId, String virtualArchitectureId) throws Exception;

	/**
	 * 查询该服务是否已经签约了当前企业
	 *
	 * @param id
	 * @return
	 */
	public ContractIinformation findContractIinformationObj(Integer id);

	/**
	 * 查询企业签约记录集合
	 *
	 * @return
	 */
	public List<ContractIinformation> getContractIinformationList();

	/**
	 * 查询企业签约记录
	 *
	 * @param pageSize
	 * @param pageNo
	 * @param orgId
	 * @param virtualArchitectureId
	 * @return
	 * @throws Exception
	 */
	public Page ContractIinformationPage(Integer pageSize, Integer pageNo, String orgId, String virtualArchitectureId) throws Exception;

	/**
	 * 查询企业签约详情信息
	 *
	 * @param id
	 * @return
	 */
	public Map<String, Object> businessRecordDetails(Integer id);

	/**
	 * 根据用户ID查询该用户的订购记录
	 */
	public List<Map<String, Object>> getBusinessRecordBuyUser(String userId);

	/**
	 * 根据用户ID查询该用户的订购记录
	 */
	public List<ContractIinformationOrder> getBusinessRecordBuyUser(Integer userId);

	/**
	 * 查询该企业是否有签约记录
	 *
	 * @param virtualArchitectureId
	 * @return
	 */
	public ContractIinformation getContractIinformation(Integer virtualArchitectureId);

	/**
	 * 查询用户的预约记录
	 *
	 * @param userId    用户ID
	 * @param orderType 服务类型
	 * @return
	 */
	public ContractIinformationOrder getContractIinformationOrder(int userId, String orderType);

	/**
	 * 查询用户的预约记录
	 *
	 * @param userId    用户ID
	 * @param orderType 服务类型
	 * @return
	 */
	public List<ContractIinformation> getContractIinformationByOrgId(int organizationId);

	/**
	 * 查询正在使用平台的企业数
	 *
	 * @return
	 */
	public Integer getContractIinformationCount();

}
