package com.gic.haoban.manage.service.service;

import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.HandoverExternalDTO;
import com.gic.haoban.manage.api.dto.HandoverStaffFriendCountDTO;
import com.gic.haoban.manage.service.entity.TabHandoverExternal;
import com.gic.haoban.manage.service.entity.TabHandoverStaff;
import com.gic.haoban.manage.service.entity.TabHandoverTransfer;
import com.gic.wechat.api.dto.qywx.QywxTransferCustomerInfoDTO;
import com.gic.wechat.api.dto.qywx.QywxUnassignedInfoDTO;

import java.util.List;

/**
 * Created 2021/6/15.
 *
 * @author hua
 */
public interface HandoverService {
    /**
     * 保存离职基础的好友
     *
     * @param infoList
     * @return
     */
    public boolean saveHandover(String wxEnterpriseId, List<QywxUnassignedInfoDTO> infoList);

    /**
     * 分配列表
     *
     * @param wxEnterpriseId
     * @param storeId
     * @return
     */
    public List<TabHandoverStaff> listByStoreId(String wxEnterpriseId, String storeId);

    /**
     * 分配的客户列表
     *
     * @param wxEnterpriseId
     * @param staffIds
     * @return
     */
    public Page<HandoverExternalDTO> pageByStaffIds(String wxEnterpriseId, String search, List<String> staffIds, List<String> transferIds, BasePageInfo pageInfo, Integer status);

    /**
     * 查询待分配列表
     *
     * @param ids
     * @return
     */
    public List<TabHandoverExternal> listByIds(String wxEnterpriseId, List<String> ids);

    /**
     * 保存分配记录
     *
     * @param transfer
     * @return id 主键
     */
    public String saveHandoverTransfer(TabHandoverTransfer transfer, List<String> handoverExternalIds);

    /**
     * 分配记录列表
     *
     * @param wxEnterpriseId
     * @param storeId
     * @return
     */
    public List<TabHandoverTransfer> listTransferByStoreId(String wxEnterpriseId, String storeId);


    /**
     * 分配记录列表
     *
     * @param wxEnterpriseId
     * @param handoverStaffId
     * @return
     */
    public List<TabHandoverTransfer> listTransferByHandoverStaffId(String wxEnterpriseId, String handoverStaffId);

    /**
     * 继承记录列表
     *
     * @param wxEnterpriseId
     * @param takeoverStaffId
     * @return
     */
    public List<TabHandoverTransfer> listTransferByTakeoverStaffId(String wxEnterpriseId, String takeoverStaffId);

    /**
     * 分配记录列表
     *
     * @param wxEnterpriseId
     * @param ids
     * @return
     */
    public List<TabHandoverTransfer> listTransferByIds(String wxEnterpriseId, List<String> ids);

    /**
     * 继承记录列表 企业下所有
     *
     * @param wxEnterpriseId
     * @return
     */
    public List<TabHandoverTransfer> listTransferByWxEnterpriseId(String wxEnterpriseId, String date);

    /**
     * 处理结果
     *
     * @param list
     * @return
     */
    public boolean dealResult(String wxEnterpriseId, String transferId, List<QywxTransferCustomerInfoDTO> list);

    /**
     * 还未分配的客户数量
     *
     * @param wxEnterpriseId
     * @return
     */
    public List<HandoverStaffFriendCountDTO> listFriendCountByWxStaffIds(String wxEnterpriseId, List<String> staffIds);
    Boolean filterHandoverStaff(String wxEnterpriseId, String wxUserId);

    public void delHandoverStaff(String wxEnterpriseId, List<String> wxUserIds) ;

    List<HandoverExternalDTO> listAllByStaffIds(String wxEnterpriseId, String search, List<String> staffIds);
}
