package com.palmnest.service.wechat;

import com.alibaba.fastjson.JSONObject;
import com.palmnest.application.core.util.Pages;
import com.palmnest.model.estateserve.SignBasics;
import com.palmnest.model.estateserve.SignContract;
import com.palmnest.model.estateserve.SignServiceInvoice;
import com.palmnest.model.property.TbBuild;
import com.palmnest.model.property.VirtualArchitecture;

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


/**
 * 签约微信端接口
 *
 * @author xiemin
 * @since 2017-05-18
 */

/**
 * @author Administrator
 */
public interface SignContractManager {

	/**
	 * 根据项目id,类型查询公司
	 *
	 * @param organizationId
	 * @return
	 */
	public List<VirtualArchitecture> findVirtualArchitectureList(String virtualName, Integer organizationId, String type);

	/**
	 * 添加签约企业信息
	 *
	 * @param map
	 * @return
	 */
	public JSONObject addVirtualArchitecture(Map<String, String> map);

	/**
	 * 添加签约信息
	 *
	 * @param map
	 * @return
	 */
	public JSONObject addSignContract(Map<String, String> map);

	/**
	 * 更新签名信息
	 *
	 * @param id
	 * @param imageUrl
	 * @return
	 */
	public JSONObject updateSignContract(String id, String imageUrl, String renewalContractId);

	/**
	 * 更新是否过期
	 *
	 * @param id
	 * @param imageUrl
	 * @return
	 */
	public int updateSignContractStatus(String id, String status);

	/**
	 * 添加发票信息
	 *
	 * @param map
	 * @return
	 */
	public JSONObject addSignServiceInvoice(Map<String, String> map);

	/**
	 * 根据企业Id查询签约协议记录信息集合
	 *
	 * @return
	 */
	public List<Map<String, Object>> getSignContractListByVirId(int virtualId);

	//public List<Map<String,Object>> getsignBasicsList();

	/**
	 * 根据签约ID查询押金信息明细表
	 *
	 * @param signid
	 * @return
	 */
	public List<Map<String, Object>> getSignContractListBySignid(String signid) throws Exception;


	/**
	 * 查询服务押金项信息
	 *
	 * @param id
	 * @return
	 */
	public SignBasics getSignBasicsObj(Integer id);

	/**
	 * 根据押金项ID和签约ID和主键ID查询该押金项是否已经存在
	 *
	 * @param signId
	 * @param basicsId
	 * @param id
	 * @return
	 */
	public Map<String, Object> getIsSignBasics(String signId, String basicsId, Integer id);

	/**
	 * 根据企业ID和发票类型查询该发票信息是否存在
	 *
	 * @param virtualId
	 * @param type
	 * @return
	 */
	public SignServiceInvoice getSignServiceInvoiceObj(Integer virtualId, String type);

	/**
	 * 根据签约ID查询意向商品
	 *
	 * @param id
	 * @return
	 */
	public List<Map<String, Object>> getIntentionalGoods(Integer id);

	/**
	 * 查询楼栋信息
	 *
	 * @param userId
	 * @return
	 */
	public List<TbBuild> findTbOrganizationById(String userId);

	/**
	 * 根据用户id查询签约信息
	 *
	 * @param userId
	 * @return
	 */
	public Pages<Map<String, String>> findContract(Map<String, String> map);


	/**
	 * 根据物业员工ID查询管理的项目列表
	 *
	 * @param userId
	 * @return
	 */
	public List<Map<String, Object>> getStaffByOrganztion(Integer userId);

	/**
	 * 根据企业ID查询发票信息
	 *
	 * @param type
	 * @return
	 */
	public List<SignServiceInvoice> getSignServiceInvoiceList(Integer virtualId);


	/**
	 * 根据企业ID查询企业签约服务信息
	 *
	 * @param virtualId
	 * @return
	 */
	public List<Map<String, Object>> getSignContractList(Integer virtualId);


	/**
	 * 根据签约ID查询押金信息明细表
	 *
	 * @param id
	 * @return
	 */
	public List<Map<String, Object>> getSignBasicsList(String id) throws Exception;

	/**
	 * 根据id查询签约信息
	 *
	 * @return
	 */
	public SignContract findSignContract(String signContractId);

	/**
	 * 根据id查询签约商品列表
	 *
	 * @param signContractId
	 * @return
	 */
	public List<Map<String, Object>> findProductSign(String signContractId);

	/**
	 * 根据id查询签约押金列表
	 *
	 * @param signContractId
	 * @return
	 */
	public List<Map<String, Object>> findSignBasics(String signContractId);

	/**
	 * 查询过期的签约信息
	 *
	 * @param signContractId
	 * @return
	 */
	public List<SignContract> findSignContractList();

}
