- Aggiornamento Viaggi
This commit is contained in:
@@ -14,6 +14,8 @@ import type {
|
||||
Location,
|
||||
} from '../types';
|
||||
|
||||
const STOR_TRASP_CITIE = 'trasp_ride_filters';
|
||||
|
||||
// ============================================================
|
||||
// STATE
|
||||
// ============================================================
|
||||
@@ -41,13 +43,45 @@ const pagination = reactive({
|
||||
pages: 0,
|
||||
});
|
||||
|
||||
const filters = reactive<RideSearchFilters>({
|
||||
type: undefined,
|
||||
from: '',
|
||||
to: '',
|
||||
date: '',
|
||||
seats: 1,
|
||||
});
|
||||
// Carica filtri da localStorage
|
||||
const loadFiltersFromStorage = (): RideSearchFilters => {
|
||||
try {
|
||||
const stored = localStorage.getItem(STOR_TRASP_CITIE);
|
||||
if (stored) {
|
||||
return JSON.parse(stored);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Errore caricamento filtri da localStorage:', error);
|
||||
}
|
||||
|
||||
// Default
|
||||
return {
|
||||
type: undefined,
|
||||
from: '',
|
||||
to: '',
|
||||
date: '',
|
||||
seats: 1,
|
||||
};
|
||||
};
|
||||
|
||||
const filters = reactive<RideSearchFilters>(loadFiltersFromStorage());
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// WATCHERS
|
||||
// ------------------------------------------------------------
|
||||
|
||||
// Salva filtri in localStorage quando cambiano
|
||||
watch(
|
||||
filters,
|
||||
(newFilters) => {
|
||||
try {
|
||||
localStorage.setItem(STOR_TRASP_CITIE, JSON.stringify(newFilters));
|
||||
} catch (error) {
|
||||
console.error('Errore salvataggio filtri in localStorage:', error);
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
// ============================================================
|
||||
// COMPOSABLE
|
||||
@@ -140,7 +174,7 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nel recupero dei viaggi';
|
||||
error.value = err.data?.message || err.message || 'Errore nel recupero dei viaggi';
|
||||
rides.value = []; // ✅ Reset to empty array on error
|
||||
throw err;
|
||||
} finally {
|
||||
@@ -182,7 +216,7 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nella ricerca';
|
||||
error.value = err.data?.message || err.message || 'Errore nella ricerca';
|
||||
rides.value = []; // ✅ Reset to empty array on error
|
||||
throw err;
|
||||
} finally {
|
||||
@@ -211,7 +245,7 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nel recupero del viaggio';
|
||||
error.value = err.data?.message || err.message || 'Errore nel recupero del viaggio';
|
||||
throw err;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -240,7 +274,8 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nella creazione del viaggio';
|
||||
error.value =
|
||||
err.data?.message || err.message || 'Errore nella creazione del viaggio';
|
||||
throw err;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -274,7 +309,8 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||"Errore nell'aggiornamento del viaggio";
|
||||
error.value =
|
||||
err.data?.message || err.message || "Errore nell'aggiornamento del viaggio";
|
||||
throw err;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -289,9 +325,13 @@ export function useRides() {
|
||||
loading.value = true;
|
||||
error.value = null;
|
||||
|
||||
const response = (await Api.SendReqWithData(`/api/viaggi/rides/${rideId}`, 'DELETE', {
|
||||
reason,
|
||||
})) as ApiResponse<void>;
|
||||
const response = (await Api.SendReqWithData(
|
||||
`/api/viaggi/rides/${rideId}`,
|
||||
'DELETE',
|
||||
{
|
||||
reason,
|
||||
}
|
||||
)) as ApiResponse<void>;
|
||||
|
||||
if (response.success) {
|
||||
// Rimuovi dalla lista
|
||||
@@ -303,7 +343,8 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nella cancellazione del viaggio';
|
||||
error.value =
|
||||
err.data?.message || err.message || 'Errore nella cancellazione del viaggio';
|
||||
throw err;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -335,7 +376,8 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nel completamento del viaggio';
|
||||
error.value =
|
||||
err.data?.message || err.message || 'Errore nel completamento del viaggio';
|
||||
throw err;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -375,7 +417,8 @@ export function useRides() {
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
error.value = err.data?.message || err.message ||'Errore nel recupero dei tuoi viaggi';
|
||||
error.value =
|
||||
err.data?.message || err.message || 'Errore nel recupero dei tuoi viaggi';
|
||||
throw err;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -417,6 +460,9 @@ export function useRides() {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Reset filtri
|
||||
*/
|
||||
/**
|
||||
* Reset filtri
|
||||
*/
|
||||
@@ -427,6 +473,13 @@ export function useRides() {
|
||||
filters.date = '';
|
||||
filters.seats = 1;
|
||||
filters.passingThrough = '';
|
||||
|
||||
// Rimuovi da localStorage
|
||||
try {
|
||||
localStorage.removeItem(STOR_TRASP_CITIE);
|
||||
} catch (error) {
|
||||
console.error('Errore rimozione filtri da localStorage:', error);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -523,7 +576,7 @@ export function useRides() {
|
||||
* Verifica se il viaggio è nel passato
|
||||
*/
|
||||
const isPastRide = (ride: Ride) => {
|
||||
return new Date(ride.dateTime) < new Date();
|
||||
return new Date(ride.departureDate) < new Date();
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -538,6 +591,20 @@ export function useRides() {
|
||||
return true;
|
||||
};
|
||||
|
||||
// Aggiungi il metodo
|
||||
const fetchCancelledRides = async (page = 1, limit = 20) => {
|
||||
try {
|
||||
const response = await Api.SendReqWithData(
|
||||
`/api/viaggi/rides/cancelled?page=${page}&limit=${limit}`,
|
||||
'GET'
|
||||
);
|
||||
return response;
|
||||
} catch (error: any) {
|
||||
console.error('Error fetching cancelled rides:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// RETURN
|
||||
// ------------------------------------------------------------
|
||||
@@ -582,5 +649,6 @@ export function useRides() {
|
||||
getStatusLabel,
|
||||
isPastRide,
|
||||
canBook,
|
||||
fetchCancelledRides,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user