import { axiosInstance } from './client';
import type {
  OptimizationMove,
  OptimizationMoveCreate,
  OptimizationMoveUpdate,
} from '../types';

const baseUrl = '/api/company';

export async function getOptimizationMoves(
  companyId: string,
  params?: { status?: string }
): Promise<OptimizationMove[]> {
  const response = await axiosInstance.get(`${baseUrl}/${companyId}/optimization-moves`, { params });
  return response.data.optimization_moves;
}

export async function createOptimizationMove(
  companyId: string,
  data: OptimizationMoveCreate
): Promise<OptimizationMove> {
  const response = await axiosInstance.post(`${baseUrl}/${companyId}/optimization-moves`, data);
  return response.data.optimization_move;
}

export async function updateOptimizationMove(
  companyId: string,
  moveId: string,
  data: OptimizationMoveUpdate
): Promise<OptimizationMove> {
  const response = await axiosInstance.put(`${baseUrl}/${companyId}/optimization-moves/${moveId}`, data);
  return response.data.optimization_move;
}

export async function deleteOptimizationMove(
  companyId: string,
  moveId: string
): Promise<{ success: boolean }> {
  const response = await axiosInstance.delete(`${baseUrl}/${companyId}/optimization-moves/${moveId}`);
  return response.data;
}

export async function acceptOptimizationMove(
  companyId: string,
  moveId: string
): Promise<{ id: string; status: string }> {
  const response = await axiosInstance.patch(`${baseUrl}/${companyId}/optimization-moves/${moveId}/accept`);
  return response.data.optimization_move;
}

export async function rejectOptimizationMove(
  companyId: string,
  moveId: string
): Promise<{ id: string; status: string }> {
  const response = await axiosInstance.patch(`${baseUrl}/${companyId}/optimization-moves/${moveId}/reject`);
  return response.data.optimization_move;
}
