import { api } from "@/lib/api-client";
import type { Assignment, AssignmentState, AssignmentCreateRequest, PaginatedResponse, PaginationParams, ApiSuccessResponse } from "@/types";

export interface AssignmentListParams extends PaginationParams {
  state?: AssignmentState;
  entity_id?: number;
}

export const assignmentsService = {
  async list(params?: AssignmentListParams): Promise<PaginatedResponse<Assignment>> {
    return api.get<PaginatedResponse<Assignment>>("/assignments", params as Record<string, string | number | boolean | undefined>);
  },

  async getById(id: number): Promise<Assignment> {
    return api.get<Assignment>(`/assignments/${id}`);
  },

  async create(data: AssignmentCreateRequest): Promise<Assignment> {
    return api.post<Assignment>("/assignments", data);
  },

  async update(id: number, data: Partial<AssignmentCreateRequest>): Promise<Assignment> {
    return api.patch<Assignment>(`/assignments/${id}`, data);
  },

  async delete(id: number): Promise<ApiSuccessResponse> {
    return api.delete<ApiSuccessResponse>(`/assignments/${id}`);
  },

  async archive(id: number): Promise<Assignment> {
    return api.post<Assignment>(`/assignments/${id}/archive`);
  },

  async start(id: number): Promise<Assignment> {
    return api.post<Assignment>(`/assignments/${id}/start`);
  },
};
