package com.uas.platform.b2b.publicapi.service;

import com.uas.platform.b2b.model.EnterpriseBaseInfo;
import com.uas.platform.b2b.model.InvitationRecord;
import com.uas.platform.b2b.publicapi.model.Invitation;
import com.uas.search.b2b.model.PageParams;
import com.uas.search.b2b.model.SPage;
import org.springframework.ui.ModelMap;

import java.util.List;

/**
 *  用户邀请记录公共接口
 *
 * Created by hejq on 2018-03-22.
 */
public interface InviteRecordService {

    /**
     * 通过填写的名称检验企业是否已注册
     *
     * @param name 输入的企业名称
     * @return
     */
    List<EnterpriseBaseInfo> checkByName(String name);

    /**
     * 获取邀请记录
     *
     * @param params 分页参数
     * @param keyword 搜索关键词
     * @param enUU 企业UU
     * @param userUU 用户UU
     * @return
     */
    SPage<InvitationRecord> getInviteRecords(Long enUU, Long userUU, PageParams params, String keyword);

    /**
     * 分类获取邀请数量
     *
     * @param userUU 用户UU
     * @param enUU 企业UU
     * @return
     */
    ModelMap getInvationCount(Long userUU, Long enUU);

    /**
     * 分月获取邀请数量
     *
     * @param userUU 用户UU
     * @param enUU 企业UU
     * @param year 年份
     * @return
     */
    List<Invitation> getCountGroupByDate(Long userUU, Long enUU, String year);

    /**
     * 添加合作伙伴
     *
     * @param userUU 用户UU
     * @param enUU 企业UU
     * @param inviteEnUU 邀请企业的UU
     * @param inviteUserName 邀请的用户的姓名
     * @param inviteUserTel 邀请的用户的联系方式
     * @param app 应用
     * @return
     */
    ModelMap addPartner(Long userUU, Long enUU, Long inviteEnUU, String inviteUserName, String inviteUserTel, String app) throws Exception;

    /**
     * 增加注册记录
     *
     * @param record 注册记录
     * @return
     */
    ModelMap invite(InvitationRecord record);

    /**
     * 批量邀请注册
     *
     * @param enUU 企业UU
     * @param userUU 用户UU
     * @param records 邀请记录
     * @param source 数据来源
     * @return
     */
    ModelMap inviteByBatch(Long enUU, Long userUU, List<InvitationRecord> records, String source);

    /**
     * 更新邀请注册记录企业信息
     *
     * @param e 企业信息
     */
    void updateVendName(EnterpriseBaseInfo e);
}
