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; } }), createMaintenance: (payload) => handleRequest({ apiFn: async () => { // POST to base endpoint for creation const { data } = await api.post(ENDPOINTS.MAINTENANCE, payload); return data; } }), updateMaintenance: (id, payload) => handleRequest({ apiFn: async () => { // PUT to base endpoint/{id} for update const { data } = await api.put(`${ENDPOINTS.MAINTENANCE}/${id}`, payload); 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; } }), // --- 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; } }), // --- Update Vehicle Status (Inline Edit) --- updateVehicleStatus: (idVehicle, statusFrota) => handleRequest({ apiFn: async () => { const { data } = await api.put(`/status_frota/edit/${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; } }) };