import api from '@/services/api';


/**
 * Envia o formulário inicial de dados do motorista e retorna o ID da submissão.
 * @param {Object} formData Objeto com os campos do formulário
 * @returns {Promise<{submission_id: string, message: string}>}
 */
export const submitDriverRegistration = async (formData) => {
  try {
    const response = await api.post('/cadastro/drivers/externo', formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    });
    return response.data;
  } catch (error) {
    throw error;
  }
};

/**
 * Envia os arquivos anexos vinculados a uma submissão existente.
 * @param {string} submissionId ID retornado pela submissão anterior
 * @param {FormData} fileFormData FormData contendo os arquivos
 * @returns {Promise<{status: string, message: string}>}
 */
export const uploadDriverFiles = async (submissionId, fileFormData) => {
  try {
    const response = await api.post(`/cadastro/files/${submissionId}`, fileFormData, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    });
    return response.data;
  } catch (error) {
    throw error;
  }
};

/**
 * Faz o download da planilha de motoristas aprovados.
 * Dispara o download automaticamente no browser.
 * @returns {Promise<void>}
 */
export const downloadAprovados = async () => {
  const response = await api.get('/drivers/download-aprovados', {
    responseType: 'blob',
  });

  const contentDisposition = response.headers?.['content-disposition'] ?? '';
  const fileNameMatch = contentDisposition.match(/filename[^;=\n]*=(["']?)([^"'\n]*?)\1(?:;|$)/);
  const fileName = fileNameMatch?.[2]?.trim() || `motoristas-aprovados-${new Date().toISOString().split('T')[0]}.xlsx`;

  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', fileName);
  document.body.appendChild(link);
  link.click();
  link.remove();
  window.URL.revokeObjectURL(url);
};
