import { hrApi } from "@/auth/http"; import type { Appraisal, AppraisalCycle, AppraisalGoal, AppraisalStatus, AppraisalTemplate, } from "./types"; interface Page { items: T[]; total: number; page: number; pageCount: number; } export const listTemplates = async (): Promise => { const response = await hrApi.get("/appraisal/templates"); return response.data; }; export const createTemplate = async (payload: Record) => { const response = await hrApi.post( "/appraisal/templates", payload, ); return response.data; }; export const listCycles = async (): Promise => { const response = await hrApi.get("/appraisal/cycles"); return response.data; }; export const createCycle = async (payload: Record) => { const response = await hrApi.post("/appraisal/cycles", payload); return response.data; }; export const openCycle = async (id: string, employeeIds?: string[]) => { const response = await hrApi.post<{ cycle: AppraisalCycle; created: number; skipped: number; }>(`/appraisal/cycles/${id}/open`, { employeeIds }); return response.data; }; export const closeCycle = async (id: string) => { const response = await hrApi.patch( `/appraisal/cycles/${id}/close`, ); return response.data; }; export const getCycleProgress = async (id: string) => { const response = await hrApi.get>( `/appraisal/cycles/${id}/progress`, ); return response.data; }; export const getMyAppraisals = async (): Promise => { const response = await hrApi.get("/appraisal/mine"); return response.data; }; export const getAwaitingMe = async (): Promise => { const response = await hrApi.get("/appraisal/awaiting-me"); return response.data; }; export const listAppraisals = async (params?: { cycleId?: string; status?: AppraisalStatus; page?: number; limit?: number; }) => { const response = await hrApi.get>("/appraisal", { params }); return response.data; }; export const getAppraisal = async (id: string): Promise => { const response = await hrApi.get(`/appraisal/${id}`); return response.data; }; export const submitSelf = async ( id: string, payload: { ratings: { code: string; score: number; comment?: string }[]; comment?: string; }, ) => { const response = await hrApi.post(`/appraisal/${id}/self`, payload); return response.data; }; export const submitManager = async ( id: string, payload: { ratings: { code: string; score: number; comment?: string }[]; goals?: { id: string; achievementPercent?: number; comment?: string }[]; comment?: string; }, ) => { const response = await hrApi.post(`/appraisal/${id}/manager`, payload); return response.data; }; export const acknowledge = async (id: string, comment?: string) => { const response = await hrApi.patch(`/appraisal/${id}/acknowledge`, { comment, }); return response.data; }; export const addGoal = async ( id: string, payload: { title: string; description?: string; target?: string; weight?: string }, ) => { const response = await hrApi.post(`/appraisal/${id}/goals`, payload); return response.data; };