package com.ruoyi.bst.area.service;

import java.util.Arrays;
import java.util.List;

public interface AreaValidator {

    /**
     * 当前用户是否可以编辑运营区
     * @param areaId 运营区ID
     * @return 是否可以编辑
     */
    boolean canEdit(Long areaId);

    /**
     * 当前用户是否可以删除运营区
     * @param areaIds 运营区ID列表
     * @return 是否可以删除
     */
    boolean canDeleteAll(List<Long> areaIds);

    /**
     * 当前用户是否可以新增子区域
     * @param areaId 运营区ID
     * @return 是否可以新增
     */
    boolean canAddSubArea(Long areaId);

    /**
     * 当前用户是否可以查看运营区
     * @param areaId 运营区ID
     * @return 是否可以查看
     */
    default boolean canViewArea(Long areaId) {
        return canView(Arrays.asList(areaId));
    }

    /**
     * 当前用户是否可以查看运营区
     * @param areaIds 运营区ID列表
     * @return 是否可以查看
     */
    boolean canView(List<Long> areaIds);

    /**
     * 判断当前用户是否可以选择指定运营区为加盟运营区
     * @param areaId 运营区ID
     * @return 是否允许
     */
    boolean canCheckForJoin(Long areaId);

    /**
     * 是否允许添加客服
     * @param areaId
     * @return
     */
    boolean canAddCustomerService(Long areaId);

    /**
     * 校验运营区分成
     * @param id 运营区ID
     */
    void checkPoint(Long id);
}
