package com.njcn.rdms.module.project.service.team;

import java.util.Collection;
import java.util.List;
import java.util.Set;

public interface TeamDashboardAccessService {

    /**
     * 校验当前用户具备团队视角权限。
     */
    void validateTeamDashboardPermission(String permission);

    /**
     * 获取当前登录用户全部有效下属（不含本人）。
     *
     * @return 下属 ID 列表
     */
    List<Long> getAllSubordinateUserIds();

    /**
     * 校验并解析团队查询的目标用户 ID。
     *
     * @param candidateUserIds 前端传入的目标用户 ID；为空表示全部下属
     * @return 校验后的目标用户 ID（不含本人）
     */
    List<Long> resolveRequestedSubordinateUserIds(Collection<Long> candidateUserIds, String permission);

    /**
     * 判断当前登录用户是否可读取指定工作报告/加班申请所属人员的数据。
     *
     * @param userId 目标人员 ID
     * @return 是否可读
     */
    boolean canReadSubordinateUser(Long userId, String permission);

    /**
     * 获取当前登录用户下属集合。
     *
     * @return 下属集合
     */
    Set<Long> getSubordinateUserIdSet();
}
