import { useState, useEffect } from 'react';
import PHXFuncGetLoggedInfo from '../getLoginInfo';
import { PHXClientQueryV3 } from '../GRPC/PHXGrpcClientV3';
import { queryDepartmentByUserId, queryDepartmentIsManager } from '../../../query/department-manager';
export default function PHXGetListDepartmentManager() {
    const userInfo = PHXFuncGetLoggedInfo();
    const [listDepartments, setListDepartments] = useState();
    const getResOfDepartment = (departmentInfo, user_id) => {
        const departmentUsers = (departmentInfo === null || departmentInfo === void 0 ? void 0 : departmentInfo.department_users) || [];
        // Danh sách ID nhân sự mình quản lý trực tiếp
        let managedStaffIds = departmentUsers.filter((user) => user.user_manager_id === user_id).map((user) => user.user_id);
        // Lấy thêm các cấp dưới của cấp dưới (gián tiếp 1 cấp)
        const indirectStaffIds = departmentUsers
            .filter((user) => managedStaffIds.includes(user.user_manager_id))
            .map((user) => user.user_id);
        // Gộp trực tiếp + gián tiếp
        managedStaffIds = [...managedStaffIds, ...indirectStaffIds];
        return {
            ...departmentInfo,
            managedStaffIds,
        };
    };
    const fetchData = async () => {
        var _a, _b;
        try {
            const user_id = userInfo === null || userInfo === void 0 ? void 0 : userInfo.id;
            const { data: listDepartmentByStaff } = await PHXClientQueryV3({
                query: queryDepartmentByUserId,
                variables: {
                    user_id,
                },
            });
            // Danh sách phòng ban theo user
            const listDepartmentByUser = ((_a = listDepartmentByStaff === null || listDepartmentByStaff === void 0 ? void 0 : listDepartmentByStaff.department_user) === null || _a === void 0 ? void 0 : _a.map((item) => getResOfDepartment(item.department, user_id))) || [];
            const listId = listDepartmentByUser.map((item) => item.id);
            if (listId.length > 0) {
                const { data: resManager } = await PHXClientQueryV3({
                    query: queryDepartmentIsManager,
                    variables: {
                        department_manager_id: `{${listId.join(',')}}`,
                    },
                });
                // Lấy các phòng ban cấp dưới phòng ban đó
                const allDepartmentIsManager = (_b = resManager === null || resManager === void 0 ? void 0 : resManager.find_department) === null || _b === void 0 ? void 0 : _b.map((item) => getResOfDepartment(item.department, user_id));
                const listDepartmentFilter = [...listDepartmentByUser, ...allDepartmentIsManager];
                setListDepartments(listDepartmentFilter);
            }
            else {
                setListDepartments([]);
            }
        }
        catch (err) {
            console.log(err, 'Không lấy được danh sách phòng ban theo user_id');
        }
    };
    useEffect(() => {
        fetchData();
    }, []);
    return listDepartments;
}
//# sourceMappingURL=getListDepartmentManager.js.map