package com.uas.account.service;

import java.util.List;

import org.springframework.ui.ModelMap;

import com.uas.account.core.Page;
import com.uas.account.entity.InvitationRecord;
import com.uas.account.entity.PartnershipRecord;
import com.uas.account.entity.RequsetStatus;

public interface PartnershipService {

	/**
	 * 通过id发送请求
	 * 
	 * @param id
	 *            （id 是ac$us$detail中的id）
	 */
	void sendRequestById(Long id);

	/**
	 * 查询发出的申请<br>
	 * 待审核
	 * 
	 * @param name
	 * @param businessCode
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findAllSendUnAudit(String name, String businessCode, String custUserName, int pageNumber,
			int pageSize);

	/**
	 * 查询发出的申请<br>
	 * 已通过
	 * 
	 * @param name
	 * @param businessCode
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findAllSendEnable(String name, String businessCode, String custUserName, int pageNumber,
			int pageSize);

	/**
	 * 查询发出的申请<br>
	 * 未通过
	 * 
	 * @param name
	 * @param businessCode
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findAllSendUnApply(String name, String businessCode, String custUserName, int pageNumber,
			int pageSize);

	/**
	 * 查询收到的申请<br>
	 * 待审核
	 * 
	 * @param name
	 * @param businessCode
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findAllReceivedUnAudit(String name, String businessCode, String custUserName,
			int pageNumber, int pageSize);

	/**
	 * 查询收到的申请<br>
	 * 已通过
	 * 
	 * @param name
	 * @param businessCode
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findAllReceivedEnable(String name, String businessCode, String custUserName, int pageNumber,
			int pageSize);

	/**
	 * 查询收到的申请<br>
	 * 未通过
	 * 
	 * @param name
	 * @param businessCode
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findAllReceivedUnApply(String name, String businessCode, String custUserName,
			int pageNumber, int pageSize);

	/**
	 * 发出的请求详情
	 * 
	 * @param id
	 * @return
	 */
	PartnershipRecord findSendRequestById(Long id);

	/**
	 * 收到的请求的详情
	 * 
	 * @param id
	 * @return
	 */
	PartnershipRecord findReceivedRequestById(Long id);

	/**
	 * 审核通过
	 * 
	 * @param id
	 * @return
	 */
	void enable(Long id);

	/**
	 * 审核不通过
	 * 
	 * @param id
	 * @param reason
	 */
	void disable(Long id, String reason);

	/**
	 * 再次申请
	 * 
	 * @param id
	 */
	void resendRequestById(Long id);

	/**
	 * 通过申请企业和客户的执照查询信息
	 * 
	 * @param custuid
	 * @param venduid
	 * @return
	 */
	PartnershipRecord findBycustUIDAndVendUID(String custuid, String venduid);

	/**
	 * 发出的请求统计
	 * 
	 * @return
	 */
	ModelMap getsendRequestCount();

	/**
	 * 收到的请求统计
	 * 
	 * @return
	 */
	ModelMap getreceivedRequestCount();

	/**
	 * 通过营业执照查询收到的申请
	 * 
	 * @param businessCode
	 * @param status
	 * @param keyword
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	public Page<PartnershipRecord> findBySpaceUidAndStatusCode(String businessCode, Integer status, String keyword,
			int pageNumber, int pageSize);

	/**
	 * 通过营业执照查询收到的申请,过滤掉已存在合作关系的企业
	 *
	 * @param businessCode
	 * @param status
	 * @param keyword
	 * @param pageNumber
	 * @param pageSize
	 * @return
	 */
	Page<PartnershipRecord> findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword, List<Long> partnerUUs, int pageNumber, int pageSize);

	/**
	 * 增加一条合作关系记录
	 * 
	 * @param record
	 * @return
	 */
	public ModelMap addPartner(PartnershipRecord record);

	ModelMap synchronizePartner(PartnershipRecord record);

	/**
	 * 同意请求
	 * 
	 * @param id
	 * @param vendUid
	 * @return
	 */
	public ModelMap acceptRequest(Long id, String vendUserTel, String appId);

	/**
	 * 拒绝请求
	 * 
	 * @param id
	 * @param vendUid
	 * @return
	 */
	public ModelMap rejectRequest(Long id, String vendUserTel, String reason, String appId);

	/**
	 * 通过当前企业号和企业列表中的企业号查询申请状态
	 * 
	 * @param custUid
	 * @param vendUid
	 * @return
	 */
	public RequsetStatus getRequestByCustUidAndVendUid(String custUid, String vendUid);

	/**
	 * 获取收到的待处理请求
	 * 
	 * @param businessCode
	 * @return
	 */
	public ModelMap getRequestTodo(String businessCode);

	/**
	 * 保存邀请记录
	 * 
	 * @param record
	 */
	public void invite(InvitationRecord record);

}
