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

export const taskService = {
  getEmployeeTasks: async (
    params: PaginationParams,
  ): Promise<ApiResponse<Task[]> & { meta: PaginationMeta }> => {
    const query = buildQueryParams(params);

    const res = await axiosClient.get(
      `/tasks/employee/tasks${query ? `?${query}` : ""}`,
    );

    return res.data;
  },

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

  approveTask: async (
    taskId: string,
    payload: TaskApprovalPayload,
  ): Promise<ApiResponse<any>> => {
    const res = await axiosClient.patch(`/tasks/${taskId}/approval`, payload);

    return res.data;
  },
  // NEW — final employee approval (after docs verified)
  approveTaskFully: async (
    taskId: string,
    payload: { remarks?: string },
  ): Promise<ApiResponse<any>> => {
    const res = await axiosClient.patch(`/tasks/${taskId}/approve`, payload);
    return res.data;
  },
};
