package com.uas.account.dao;

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;


public interface PartnershipRecordDao {

	PartnershipRecord save(PartnershipRecord record);

	/**
	 * 分页查询所有已发出的申请
	 * 
	 * @param pageNumber
	 * @param pageSize
	 * @param name
	 * @param businessCode
	 * @param status
	 * @return
	 */
	Page<PartnershipRecord> findAllSendView(int pageNumber, String businessCode, String custUserName, int pageSize,
			String name, String custuid, String custusercode, Integer status);

	/**
	 * 分页查询所有已收到的申请
	 * 
	 * @param pageNumber
	 * @param pageSize
	 * @param name
	 * @param businessCode
	 * @param status
	 * @return
	 */
	Page<PartnershipRecord> findAllReceivedView(int pageNumber, String businessCode, String custUserName, int pageSize,
			String name, String venduid, Integer status);

	/**
	 * 通过id查找详情
	 * 
	 * @param id
	 * @return
	 */
	PartnershipRecord findById(Long id);

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

	/**
	 * 发出请求的数量
	 * 
	 * @return
	 */
	ModelMap getSendRequestCount(String custuid);

	/**
	 * 收到请求的数量
	 * 
	 * @return
	 */
	ModelMap getReceivedRequestCount(String venduid);

	/**
	 * 发出的总数（企业）
	 * 
	 * @param custusercode
	 * @param custuid
	 * @return
	 */
	int getAllSendCount(String custuid);

	/**
	 * 收到的总数（企业）
	 * 
	 * @param venduid
	 * @return
	 */
	int getAllReceivedCount(String venduid);

	/**
	 * 通过营业执照和状态查询当前企业的列表
	 * 
	 * @param custuid
	 * @param value
	 * @return
	 */
	public Page<PartnershipRecord> findBySpaceUidAndStatusCode(String businessCode, Integer status, String keyword,
			int pageNumber, int pageSize);

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

	Page<PartnershipRecord> findBySpaceUidAndStatusCodeFilterByPartnerUUs(String businessCode, Integer statusCode, String keyword,  List<Long> partnerUUs, int pageNumber, int pageSize);

	/**
	 * 记录邀请注册记录
	 * 
	 * @param record
	 */
	void saveInvitation(InvitationRecord record);

	/**
	 * 通过当前注册企业名称查询邀请记录进行添加合作伙伴操作
	 * 
	 * @param vendname
	 * @return
	 */
	List<InvitationRecord> findByVendname(String vendname);
}
