mirror of
https://github.com/mblanke/holiday-travel-app.git
synced 2026-03-01 13:30:20 -05:00
Initial commit: Holiday Travel App with resort comparison, trip management, and multi-provider search
This commit is contained in:
106
lib/trips.ts
Normal file
106
lib/trips.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
// Trip planning database
|
||||
export type TripPlan = {
|
||||
id: number;
|
||||
name: string;
|
||||
destination: string;
|
||||
region: string;
|
||||
departureDate?: string;
|
||||
returnDate?: string;
|
||||
tripLength?: number;
|
||||
budget?: number;
|
||||
currency: string;
|
||||
status: "planning" | "booked" | "completed";
|
||||
preferences?: {
|
||||
beach?: number;
|
||||
pool?: number;
|
||||
golf?: number;
|
||||
spa?: number;
|
||||
food?: number;
|
||||
nightlife?: number;
|
||||
shopping?: number;
|
||||
culture?: number;
|
||||
outdoor?: number;
|
||||
family?: number;
|
||||
};
|
||||
resorts?: string[];
|
||||
notes?: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
};
|
||||
|
||||
// Sample trips
|
||||
export const TRIP_PLANS: Record<number, TripPlan> = {
|
||||
1: {
|
||||
id: 1,
|
||||
name: "Jan 2026 Caribbean Holiday",
|
||||
destination: "Mexico & Dominican Republic",
|
||||
region: "Caribbean",
|
||||
departureDate: "2026-01-15",
|
||||
tripLength: 7,
|
||||
budget: 5500,
|
||||
currency: "CAD",
|
||||
status: "planning",
|
||||
preferences: {
|
||||
food: 10,
|
||||
pool: 9,
|
||||
beach: 8,
|
||||
nightlife: 7,
|
||||
golf: 6,
|
||||
spa: 5,
|
||||
outdoor: 4
|
||||
},
|
||||
resorts: [
|
||||
"Dreams Onyx Resort & Spa",
|
||||
"Excellence Riviera Cancun",
|
||||
"Secrets Maroma Beach",
|
||||
"Hyatt Ziva Cancun",
|
||||
"Moon Palace Cancun",
|
||||
"Barcelo Maya Riviera",
|
||||
"Grand Sirenis Riviera Maya",
|
||||
"Hotel Xcaret Mexico"
|
||||
],
|
||||
notes: "All-inclusive beach vacation. Prefer adults-only or adult-focused resorts.",
|
||||
createdAt: "2025-10-29T00:00:00Z",
|
||||
updatedAt: "2025-10-29T00:00:00Z"
|
||||
},
|
||||
2: {
|
||||
id: 2,
|
||||
name: "Fall 2026 Japan Adventure",
|
||||
destination: "Tokyo, Kyoto, Osaka",
|
||||
region: "Asia",
|
||||
departureDate: "2026-10-15",
|
||||
tripLength: 14,
|
||||
budget: 8000,
|
||||
currency: "CAD",
|
||||
status: "planning",
|
||||
preferences: {
|
||||
culture: 10,
|
||||
food: 10,
|
||||
shopping: 8,
|
||||
outdoor: 7,
|
||||
nightlife: 6
|
||||
},
|
||||
notes: "Cherry blossom season alternative. Focus on temples, food tours, and cultural experiences.",
|
||||
createdAt: "2025-10-29T00:00:00Z",
|
||||
updatedAt: "2025-10-29T00:00:00Z"
|
||||
}
|
||||
};
|
||||
|
||||
export function getAllTrips(): TripPlan[] {
|
||||
return Object.values(TRIP_PLANS);
|
||||
}
|
||||
|
||||
export function getTripById(id: number | string): TripPlan | undefined {
|
||||
const numId = typeof id === 'string' ? parseInt(id, 10) : id;
|
||||
return TRIP_PLANS[numId];
|
||||
}
|
||||
|
||||
export function getTripsByStatus(status: "planning" | "booked" | "completed"): TripPlan[] {
|
||||
return Object.values(TRIP_PLANS).filter(trip => trip.status === status);
|
||||
}
|
||||
|
||||
export function getTripsByRegion(region: string): TripPlan[] {
|
||||
return Object.values(TRIP_PLANS).filter(trip =>
|
||||
trip.region.toLowerCase().includes(region.toLowerCase())
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user