import type { PageParam, PageResult } from '@vben/request';

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

export namespace OaNoticeApi {
  export interface NoticeVO {
    id: number;
    title: string;
    content: string;
    type: number;
    status: number;
    sendScope: number;
    isTop: number;
    publishUserId: number;
    publishTime: string;
    createTime: string;
    userIds?: number[];
  }

  export interface NoticeSaveReqVO {
    id?: number;
    title: string;
    content: string;
    type: number;
    status: number;
    sendScope: number;
    isTop?: number;
    userIds?: number[];
  }
}

const BASE = '/bpm/oa/notice';

/** 分页查询通知公告 */
export function getNoticePage(params: PageParam) {
  return requestClient.get<PageResult<OaNoticeApi.NoticeVO>>(`${BASE}/page`, {
    params,
  });
}

/** 查询通知公告详情（调用即标记已读） */
export function getNotice(id: number) {
  return requestClient.get<OaNoticeApi.NoticeVO>(`${BASE}/get`, {
    params: { id },
  });
}

/** 创建通知公告 */
export function createNotice(data: OaNoticeApi.NoticeSaveReqVO) {
  return requestClient.post(`${BASE}/create`, data);
}

/** 修改通知公告 */
export function updateNotice(data: OaNoticeApi.NoticeSaveReqVO) {
  return requestClient.put(`${BASE}/update`, data);
}

/** 删除通知公告 */
export function deleteNotice(id: number) {
  return requestClient.delete(`${BASE}/delete`, { params: { id } });
}

/** 获取我的未读通知公告数量 */
export function getMyUnreadNoticeCount() {
  return requestClient.get<number>(`${BASE}/my-unread-count`);
}
