import { axiosClient } from "@/lib/axios";
import { ApiResponse } from "@/types/api.types";
import {
  PaginationMeta,
  PaginationParams,
  buildQueryParams,
} from "@/lib/pagination";
import { Task } from "../types";

export const taskService = {
  getManagerTasks: async (
    params: PaginationParams,
  ): Promise<ApiResponse<Task[]> & { meta: PaginationMeta }> => {
    const query = buildQueryParams(params);
    const res = await axiosClient.get(
      `/tasks/manager/tasks${query ? `?${query}` : ""}`,
    );
    return res.data;
  },

  getManagerTask: async (taskId: string): Promise<ApiResponse<Task>> => {
    const res = await axiosClient.get(`/tasks/manager/tasks/${taskId}`);
    return res.data;
  },

  approveTask: async (
    taskId: string,
    payload: { remarks?: string },
  ): Promise<ApiResponse<any>> => {
    const res = await axiosClient.patch(
      `/tasks/manager/${taskId}/approve`,
      payload,
    );
    return res.data;
  },

  decideTask: async (
    taskId: string,
    payload: { status: "APPROVED" | "REJECTED"; remarks?: string },
  ): Promise<ApiResponse<any>> => {
    const res = await axiosClient.patch(
      `/tasks/manager/${taskId}/approve`,
      payload,
    );
    return res.data;
  },
};
