import { axiosInstance } from './client';
import type {
  Forecast,
  ForecastCreate,
  ForecastUpdate,
  ForecastSyncResult,
} from '../types';

const baseUrl = '/api/company';

export async function getForecasts(
  companyId: string,
  params?: { type?: string; period?: string }
): Promise<Forecast[]> {
  const response = await axiosInstance.get(`${baseUrl}/${companyId}/forecasts`, { params });
  return response.data.forecasts;
}

export async function createForecast(
  companyId: string,
  data: ForecastCreate
): Promise<Forecast> {
  const response = await axiosInstance.post(`${baseUrl}/${companyId}/forecasts`, data);
  return response.data.forecast;
}

export async function updateForecast(
  companyId: string,
  forecastId: string,
  data: ForecastUpdate
): Promise<Forecast> {
  const response = await axiosInstance.put(`${baseUrl}/${companyId}/forecasts/${forecastId}`, data);
  return response.data.forecast;
}

export async function deleteForecast(
  companyId: string,
  forecastId: string
): Promise<{ success: boolean }> {
  const response = await axiosInstance.delete(`${baseUrl}/${companyId}/forecasts/${forecastId}`);
  return response.data;
}

export async function syncForecasts(
  companyId: string
): Promise<ForecastSyncResult> {
  const response = await axiosInstance.post(`${baseUrl}/${companyId}/forecasts/sync`);
  return response.data.result;
}

export async function getForecastSyncStatus(
  companyId: string
): Promise<{ last_sync: string | null; next_sync: string | null }> {
  const response = await axiosInstance.get(`${baseUrl}/${companyId}/forecasts/sync-status`);
  return response.data;
}
