import api from '@/services/api';
import { handleRequest } from '@/services/serviceUtils';

const ENDPOINT_MAINTENANCE = '/manutencao_frota';
const ENDPOINT_WORKSHOPS = '/oficinas_frota';

export const maintenanceService = {
  // --- Manutenção ---

  /**
   * Lista todas as manutenções.
   */
  getMaintenances: () => handleRequest({
    apiFn: async () => {
      const { data } = await api.get(`${ENDPOINT_MAINTENANCE}/apresentar`);
      return data;
    }
  }),

  /**
   * Cria uma nova ordem de manutenção.
   * Campos esperados:
   * - placa, oficina, responsavel, status, manutencao (Aberto/Fechado)
   * - datas: data_solicitacao, data_agendamento, previsão
   * - financeiro: orcamento_inicial, orcamento_final, condicao_pagamento
   * - detalhes: obs, motivo_atendimento, sla_oficina
   * - endereço prestador (snapshot): endereco_prestador, cidade, uf (se aplicável)
   */
  createMaintenance: (maintenanceData) => handleRequest({
    apiFn: async () => {
      const { data } = await api.post(ENDPOINT_MAINTENANCE, maintenanceData);
      return data;
    }
  }),

  /**
   * Atualiza uma manutenção.
   * @param {number} id - idmanutencao_frota
   */
  updateMaintenance: (id, maintenanceData) => handleRequest({
    apiFn: async () => {
      const { data } = await api.put(`${ENDPOINT_MAINTENANCE}/${id}`, maintenanceData);
      return data;
    }
  }),

  // --- Oficinas ---

  getWorkshops: () => handleRequest({
    apiFn: async () => {
      const { data } = await api.get(`${ENDPOINT_WORKSHOPS}/apresentar`);
      return data;
    }
  }),

  createWorkshop: (workshopData) => handleRequest({
    apiFn: async () => {
      const { data } = await api.post(ENDPOINT_WORKSHOPS, workshopData);
      return data;
    }
  }),

  /**
   * Atualiza uma oficina.
   * @param {number} id - idoficinas_frota
   */
  updateWorkshop: (id, workshopData) => handleRequest({
    apiFn: async () => {
      const { data } = await api.put(`${ENDPOINT_WORKSHOPS}/${id}`, workshopData);
      return data;
    }
  })
};
