package com.seer.teach.mp.app.service;

import com.seer.teach.common.PageListBean;
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationQueryReq;
import com.seer.teach.mp.app.controller.req.AppAgentEmployeeRelationReq;
import com.seer.teach.mp.app.controller.resp.AppAgentEmployeeRelationResp;

import java.util.List;

/**
 * <p>
 * App端代理商员工关系服务类
 * </p>
 *
 * @author Lingma
 * @since 2025-12-30
 */
public interface IAppAgentEmployeeRelationService {

    /**
     * 分页查询我的员工列表
     *
     * @param query 查询条件
     * @return 员工关联分页列表
     */
    PageListBean<AppAgentEmployeeRelationResp> pageList(AppAgentEmployeeRelationQueryReq query);

    /**
     * 新增员工
     *
     * @param request 员工关联请求对象
     * @return 操作是否成功
     */
    boolean addEmployee(AppAgentEmployeeRelationReq request);

    /**
     * 更新员工信息
     *
     * @param request 员工关联请求对象
     * @return 操作是否成功
     */
    boolean updateEmployee(AppAgentEmployeeRelationReq request);

    /**
     * 删除员工
     *
     * @param id 关联ID
     * @return 操作是否成功
     */
    boolean deleteEmployee(Integer id);

    /**
     * 根据ID获取详情
     *
     * @param id 关联ID
     * @return 关联详情
     */
    AppAgentEmployeeRelationResp getById(Integer id);

    /**
     * 根据代理商ID获取所有员工列表
     *
     * @param agentId 代理商ID
     * @return 员工关联列表
     */
    List<AppAgentEmployeeRelationResp> getAllEmployeesByAgentId(Integer agentId);

    /**
     * 验证员工是否属于指定代理商
     *
     * @param relationId 关联ID
     * @param agentId 代理商ID
     * @return 是否属于
     */
    boolean isEmployeeBelongsToAgent(Integer relationId, Integer agentId);
}