package com.yunzhupaas.flowable.service;

import com.yunzhupaas.base.service.SuperService;
import com.yunzhupaas.flowable.entity.DelegateEntity;
import com.yunzhupaas.flowable.entity.DelegateInfoEntity;
import com.yunzhupaas.flowable.model.delegate.DelegateCrForm;
import com.yunzhupaas.flowable.model.delegate.DelegateListVO;
import com.yunzhupaas.flowable.model.delegate.DelegatePagination;
import com.yunzhupaas.flowable.model.delegate.DelegateUpForm;

import java.util.List;

/**
 * 类的描述
 *
 * @author YUNZHUPAASYUNZHUPAAS开发组
 * @version 5.0.x
 * @since 2024/9/2 13:40
 */
public interface DelegateInfoService extends SuperService<DelegateInfoEntity> {
    /**
     * 列表
     *
     * @param pagination 分页参数
     */
    List<DelegateListVO> getList(DelegatePagination pagination);

    /**
     * 列表
     *
     * @param delegateIds 委托主键集合
     */
    List<DelegateInfoEntity> getList(List<String> delegateIds);

    /**
     * 列表
     *
     * @param delegateId 委托主键
     */
    List<DelegateInfoEntity> getList(String delegateId);

    /**
     * 获取列表
     *
     * @param toUserId 被委托人/代理人id
     */
    List<DelegateInfoEntity> getByToUserId(String toUserId);

    /**
     * 获取列表
     *
     * @param toUserIds 被委托人/代理人id
     */
    List<DelegateInfoEntity> getByToUserIds(List<String> toUserIds);

    /**
     * 新增被 委托/代理 的用户
     *
     * @param fo             参数
     * @param delegateEntity 委托实体
     */
    void create(DelegateCrForm fo, DelegateEntity delegateEntity);

    /**
     * 更新
     *
     * @param fo             参数
     * @param delegateEntity 委托实体
     */
    void update(DelegateUpForm fo, DelegateEntity delegateEntity);

    /**
     * 删除
     *
     * @param delegateId 委托主键
     */
    void delete(String delegateId);
}
