testes/src/features/prafrot/services/prafrotService.js

411 lines
12 KiB
JavaScript

import api from '@/services/api';
import { handleRequest } from '@/services/serviceUtils';
// Endpoints definidos pelo usuário
const ENDPOINTS = {
VEHICLES: '/cadastro_frota',
MAINTENANCE: '/manutencao_frota',
AVAILABILITY: '/disponibilidade_frota',
MOKI: '/moki_frota',
STATUS: '/status_frota',
MONITORING: '/monitoramento_frota',
CLAIMS: '/sinistro_devolucao_venda_frota',
WORKSHOPS: '/oficinas_frota',
AUTH: '/auth_monitoramento'
};
export const prafrotService = {
// --- Autenticação ---
login: (credentials) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.AUTH, credentials);
return data;
}
}),
// --- Cadastro de Frota (Veículos) ---
getVehicles: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.VEHICLES}/apresentar`);
return data;
}
}),
createVehicle: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.VEHICLES, payload);
return data;
}
}),
updateVehicle: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.VEHICLES}/${id}`, payload);
return data;
}
}),
deleteVehicle: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.VEHICLES}/delete/${id}`);
return data;
}
}),
// --- Manutenção ---
getMaintenance: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.MAINTENANCE}/apresentar`);
return data;
}
}),
calcularDifOrcamento: (orcamento_inicial, orcamento_final) => handleRequest({
apiFn: async () => {
const { data } = await api.post(`${ENDPOINTS.MAINTENANCE}/calcular_dif_orcamento`, {
orcamento_inicial,
orcamento_final
});
return data;
}
}),
createMaintenance: (payload, files = null) => handleRequest({
apiFn: async () => {
// Envia previsao_entrega diretamente
const body = { ...payload };
if (files && (files.pdf_orcamento || files.nota_fiscal)) {
const form = new FormData();
form.append('data_json', JSON.stringify(body));
if (files.pdf_orcamento instanceof File) form.append('pdf_orcamento', files.pdf_orcamento);
if (files.nota_fiscal instanceof File) form.append('nota_fiscal', files.nota_fiscal);
const { data } = await api.post(ENDPOINTS.MAINTENANCE, form, {
headers: { 'Content-Type': 'multipart/form-data' }
});
return data;
}
const { data } = await api.post(ENDPOINTS.MAINTENANCE, body);
return data;
}
}),
updateMaintenance: (id, payload, files = null) => handleRequest({
apiFn: async () => {
// Envia previsao_entrega diretamente (o backend deve estar atualizado ou o frontend deve padronizar)
const body = { ...payload };
if (files && (files.pdf_orcamento || files.nota_fiscal)) {
const form = new FormData();
form.append('data_json', JSON.stringify(body));
if (files.pdf_orcamento instanceof File) form.append('pdf_orcamento', files.pdf_orcamento);
if (files.nota_fiscal instanceof File) form.append('nota_fiscal', files.nota_fiscal);
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/${id}`, form, {
headers: { 'Content-Type': 'multipart/form-data' }
});
return data;
}
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/${id}`, body);
return data;
}
}),
updateMaintenanceBatch: (ids, status) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/edit/em_lote`, { ids, status });
return data;
}
}),
deleteMaintenance: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/delete/${id}`);
return data;
}
}),
// Fechar/Abrir manutenção
fecharManutencao: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/fechar_manutencao/${id}`);
return data;
}
}),
abrirManutencao: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/abrir_manutencao/${id}`);
return data;
}
}),
getAbertoFechado: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.MAINTENANCE}/aberto_fechado/apresentar`);
return data;
}
}),
// Histórico de manutenção
getHistoricoCompleto: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/historico/completo');
return data;
}
}),
getHistoricoDetalhado: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/historico/detalhado');
return data;
}
}),
getHistoricoResumido: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/historico/resumido');
return data;
}
}),
getHistoricoEstatisticas: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/historico/estatisticas');
return data;
}
}),
getHistoricoPeriodo: (params) => handleRequest({
apiFn: async () => {
const { data } = await api.get('/historico/periodo', { params });
return data;
}
}),
getHistoricoTop: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/historico/top');
return data;
}
}),
getHistoricoPorPlaca: (placa) => handleRequest({
apiFn: async () => {
const { data } = await api.get(`/historico/placa/${placa}`);
return data;
}
}),
// --- Disponibilidade ---
getAvailability: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.AVAILABILITY}/apresentar`);
return data;
}
}),
createAvailability: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.AVAILABILITY, payload);
return data;
}
}),
updateAvailability: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.AVAILABILITY}/${id}`, payload);
return data;
}
}),
deleteAvailability: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.AVAILABILITY}/delete/${id}`);
return data;
}
}),
// --- Moki (Checklists) ---
getMoki: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.MOKI}/apresentar`);
return data;
}
}),
createMoki: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.MOKI, payload);
return data;
}
}),
updateMoki: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MOKI}/${id}`, payload);
return data;
}
}),
deleteMoki: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MOKI}/delete/${id}`);
return data;
}
}),
// --- Status Frota ---
getStatus: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.STATUS}/apresentar`);
return data;
}
}),
createStatus: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.STATUS, payload);
return data;
}
}),
updateStatus: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.STATUS}/${id}`, payload);
return data;
}
}),
updateStatusBatch: (ids, statusFrota) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.STATUS}/edit/em_lote`, { ids, status_frota: statusFrota });
return data;
}
}),
deleteStatus: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.STATUS}/delete/${id}`);
return data;
}
}),
// --- Monitoramento ---
getMonitoring: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.MONITORING}/apresentar`);
return data;
}
}),
createMonitoring: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.MONITORING, payload);
return data;
}
}),
updateMonitoring: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MONITORING}/${id}`, payload);
return data;
}
}),
deleteMonitoring: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.MONITORING}/delete/${id}`);
return data;
}
}),
// --- Sinistro / Devolução ---
getClaims: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.CLAIMS}/apresentar`);
return data;
}
}),
createClaims: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.CLAIMS, payload);
return data;
}
}),
updateClaims: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.CLAIMS}/${id}`, payload);
return data;
}
}),
deleteClaim: (id) => handleRequest({
apiFn: async () => {
// Usando a rota específica fornecida pelo usuário para exclusão de sinistro
const { data } = await api.put(`/sinistro_frota/delete/${id}`);
return data;
}
}),
// --- Oficinas ---
getWorkshops: () => handleRequest({
apiFn: async () => {
const { data } = await api.get(`${ENDPOINTS.WORKSHOPS}/apresentar`);
return data;
}
}),
createWorkshop: (payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(ENDPOINTS.WORKSHOPS, payload);
return data;
}
}),
updateWorkshop: (id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.WORKSHOPS}/${id}`, payload);
return data;
}
}),
deleteWorkshop: (id) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`${ENDPOINTS.WORKSHOPS}/delete/${id}`);
return data;
}
}),
// --- Motoristas (Drivers) ---
getDrivers: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/motoristas/listagem');
return data;
}
}),
// --- Listas de Configuração (Config Lists) ---
getListasConfig: () => handleRequest({
apiFn: async () => {
const { data } = await api.get('/listas_frota/config');
return data;
}
}),
getListasByRoute: (route) => handleRequest({
apiFn: async () => {
const { data } = await api.get(`/listas_frota/${route}`);
return data;
}
}),
createLista: (route, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.post(`/listas_frota/${route}`, payload);
return data;
}
}),
updateLista: (route, id, payload) => handleRequest({
apiFn: async () => {
const { data } = await api.put(`/listas_frota/${route}/${id}`, payload);
return data;
}
}),
deleteLista: (route, id) => handleRequest({
apiFn: async () => {
const { data } = await api.delete(`/listas_frota/${route}/${id}`);
return data;
}
}),
// --- Update Vehicle Status (Inline Edit) ---
updateVehicleStatus: (idVehicle, statusFrota) => handleRequest({
apiFn: async () => {
const { data } = await api.put('/status_frota/edit/em_lote', {
ids: [idVehicle],
status_frota: statusFrota
});
return data;
}
}),
// --- Update Status Batch (Bulk Edit) ---
updateStatusBatch: (ids, statusFrota) => handleRequest({
apiFn: async () => {
const { data } = await api.put('/status_frota/edit/em_lote', {
ids,
status_frota: statusFrota
});
return data;
}
})
};