import ApiService from "./ApiService";

// Company Settings interfaces
export interface CompanySettings {
  working_hours_per_day: number;
  working_days_per_month: number;
  break_minutes_per_day: number;
  last_day_to_fill_mis_report: number | null;
  notes: string;
  final_approval_by?: number;
  final_approval_name?: string;
  company_name?: string;
  website?: string;
  hr_email?: string;
  address?: string;
  footer?: string;
  logo?: string;
}

export interface UpdateCompanySettingsData {
  working_hours_per_day?: number;
  working_days_per_month?: number;
  break_minutes_per_day?: number;
  last_day_to_fill_mis_report?: number | null;
  notes?: string;
  basic_salary_percentage?: number;
  final_approval_by?: number;
  [key: string]: any; // Allow dynamic keys
}

export type UpdateCompanySettingsPayload = UpdateCompanySettingsData | FormData;

export interface CompanySettingsResponse {
  success?: boolean;
  message?: string;
  data: CompanySettings;
}

export interface UpdateCompanySettingsResponse {
  success?: boolean;
  message?: string;
  data?: CompanySettings;
}

// Get Company Settings
export async function getCompanySettings() {
  return ApiService.request<CompanySettingsResponse>({
    url: "/companies/settings/company-settings",
    method: "get",
  });
}

// Update Company Settings
export async function updateCompanySettings(
  data: UpdateCompanySettingsPayload,
) {
  const headers: Record<string, string> = {};

  // If data is FormData, don't set Content-Type (let browser set it with boundary)
  if (!(data instanceof FormData)) {
    headers["Content-Type"] = "application/json";
  }

  return ApiService.request<UpdateCompanySettingsResponse>({
    url: "/companies/settings/company-settings",
    method: "post",
    data,
    headers,
  });
}
