package com.ningdatech.pmapi.common.helper;

import com.ningdatech.pmapi.meta.model.bo.RegionContainsBO;

import java.util.List;

/**
 * @author liuxinxin
 * @date 2022/12/21 下午5:37
 * 区域限制帮助类
 */

public interface RegionLimitHelper {

    /**
     * 管理员 是否包含 专家层级校验
     *
     * @param expertUserId      /
     * @param expertAdminUserId /
     * @return /
     */
    Boolean regionContainsCheck(Long expertUserId, Long expertAdminUserId);

    /**
     * 校验层级包含关系
     *
     * @param regionContainsBOList /
     * @param regionCode           /
     * @param regionLevel          /
     * @return /
     */
    Boolean regionContains(List<RegionContainsBO> regionContainsBOList, String regionCode, Integer regionLevel);

    /**
     * 查询操作 包含区域包含列表装配
     *
     * @param queryRegionContainBo          查询区域范围列表
     * @param expertAdminContainsRegionList 专家管理员可管理的区域范围列表
     * @return /
     */
    List<RegionContainsBO> queryContainsRegionAssembler(RegionContainsBO queryRegionContainBo, List<RegionContainsBO> expertAdminContainsRegionList);

    /**
     * 根据 区域层级-区域编码 获取区域包含列表
     *
     * @param regionLevel 区域层级
     * @param regionCode  区域编码
     * @return /
     */
    RegionContainsBO getContainsRegionBo(Integer regionLevel, String regionCode);

    /**
     * 根据专家管理员用户id 获取专家管理员管辖区域列表
     *
     * @param expertAdminUserId 专家管理员用户id
     * @return /
     */
    List<RegionContainsBO> getExpertAdminContainsRegion(Long expertAdminUserId);
}
