import { getAuthHeaders } from '@/api/authHeaders';
import { request } from '@/api/request';
import type {
  TenantEmployeeOptionListRequest,
  TenantEmployeeOptionListResponse,
  TenantOrgCreateRequest,
  TenantOrgCreateResponse,
  TenantOrgDeleteRequest,
  TenantOrgDeleteResponse,
  TenantOrgToggleStatusRequest,
  TenantOrgToggleStatusResponse,
  TenantOrgTreeRequest,
  TenantOrgTreeResponse,
  TenantOrgUpdateBody,
  TenantOrgUpdateRequest,
  TenantOrgUpdateResponse,
} from './types';

/** 组织树。 */
export const getOrgTree = (params: TenantOrgTreeRequest = {}) =>
  request<TenantOrgTreeRequest, TenantOrgTreeResponse>({
    url: '/tenant/organizations/tree',
    method: 'GET',
    params,
    headers: getAuthHeaders(),
  });

/** 创建组织。 */
export const createOrg = (data: TenantOrgCreateRequest) =>
  request<TenantOrgCreateRequest, TenantOrgCreateResponse>({
    url: '/tenant/organizations',
    method: 'POST',
    data,
    headers: getAuthHeaders(),
  });

/** 更新组织。 */
export const updateOrg = ({ id, ...data }: TenantOrgUpdateRequest) =>
  request<TenantOrgUpdateBody, TenantOrgUpdateResponse>({
    url: `/tenant/organizations/${id}`,
    method: 'PUT',
    data,
    headers: getAuthHeaders(),
  });

/** 删除组织。 */
export const deleteOrg = ({ id }: TenantOrgDeleteRequest) =>
  request<TenantOrgDeleteRequest, TenantOrgDeleteResponse>({
    url: `/tenant/organizations/${id}`,
    method: 'DELETE',
    headers: getAuthHeaders(),
  });

/** 启用 / 停用组织。 */
export const toggleOrgStatus = ({ id }: TenantOrgToggleStatusRequest) =>
  request<TenantOrgToggleStatusRequest, TenantOrgToggleStatusResponse>({
    url: `/tenant/organizations/${id}/toggle-status`,
    method: 'PUT',
    headers: getAuthHeaders(),
  });

/** 员工列表，用于负责人下拉选项。 */
export const getLeaderOptions = (params: TenantEmployeeOptionListRequest = { page: 1, size: 200 }) =>
  request<TenantEmployeeOptionListRequest, TenantEmployeeOptionListResponse>({
    url: '/tenant/employees',
    method: 'GET',
    params,
    headers: getAuthHeaders(),
  });
