- Aggiornamento Viaggi

This commit is contained in:
Surya Paolo
2025-12-30 11:36:37 +01:00
parent cd123ac363
commit 169f4d6baf
40 changed files with 8129 additions and 1395 deletions

View File

@@ -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,
};
}