import type { PageParam, PageResult } from '#/packages/effects/request/src';

import { requestClient } from '#/api/request';

export namespace HrmEmployeeSocialSecurityApi {
  /** 员工社保公积金档案 */
  export interface EmployeeSocialSecurity {
    id?: number;
    userId?: number;
    userName?: string;
    deptName?: string;
    socialSecuritySchemeId?: number;
    schemeName?: string;
    socialSecurityBase?: number;
    housingFundBase?: number;
    effectiveDate?: string;
    status?: number;
    remark?: string;
    createTime?: string;
  }

  /** 员工社保公积金档案查询参数 */
  export interface EmployeeSocialSecurityPageParam extends PageParam {
    userName?: string;
    deptId?: number;
  }
}

/** 获取员工社保公积金档案分页列表 */
export function getEmployeeSocialSecurityPage(
  params: HrmEmployeeSocialSecurityApi.EmployeeSocialSecurityPageParam,
) {
  return requestClient.get<PageResult<HrmEmployeeSocialSecurityApi.EmployeeSocialSecurity>>(
    '/hrm/salary/employee-social-security/page',
    { params },
  );
}

/** 获取员工社保公积金档案详情 */
export function getEmployeeSocialSecurity(id: number) {
  return requestClient.get<HrmEmployeeSocialSecurityApi.EmployeeSocialSecurity>(
    `/hrm/salary/employee-social-security/get?id=${id}`,
  );
}

/** 获取员工社保公积金档案历史列表 */
export function getEmployeeSocialSecurityListByUser(userId: number) {
  return requestClient.get<HrmEmployeeSocialSecurityApi.EmployeeSocialSecurity[]>(
    `/hrm/salary/employee-social-security/list-by-user?userId=${userId}`,
  );
}

/** 获取员工最新生效的社保公积金档案 */
export function getLatestEmployeeSocialSecurity(userId: number) {
  return requestClient.get<HrmEmployeeSocialSecurityApi.EmployeeSocialSecurity>(
    `/hrm/salary/employee-social-security/get-latest?userId=${userId}`,
  );
}

/** 创建员工社保公积金档案 */
export function createEmployeeSocialSecurity(
  data: HrmEmployeeSocialSecurityApi.EmployeeSocialSecurity,
) {
  return requestClient.post('/hrm/salary/employee-social-security/create', data);
}

/** 更新员工社保公积金档案 */
export function updateEmployeeSocialSecurity(
  data: HrmEmployeeSocialSecurityApi.EmployeeSocialSecurity,
) {
  return requestClient.put('/hrm/salary/employee-social-security/update', data);
}

/** 删除员工社保公积金档案 */
export function deleteEmployeeSocialSecurity(id: number) {
  return requestClient.delete(`/hrm/salary/employee-social-security/delete?id=${id}`);
}