91 lines
2.1 KiB
TypeScript
91 lines
2.1 KiB
TypeScript
// src/models/tour.ts
|
|
|
|
// Ilovada foydalaniladigan barcha modellar
|
|
export type TicketAmenity = {
|
|
name: string;
|
|
icon_name: string; // Misol uchun: "wifi", "pool"
|
|
};
|
|
|
|
export type IncludedService = {
|
|
image: string;
|
|
title: string;
|
|
description: string;
|
|
};
|
|
|
|
export type HotelMeal = {
|
|
image: string;
|
|
name: string;
|
|
description: string;
|
|
};
|
|
|
|
export type HotelData = {
|
|
name: string; // Joylashadigan manzil nomi
|
|
rating: number; // Yulduz
|
|
meal_plan: string; // Ovqatlanish rejasi
|
|
// Bu malumotlar API orqali keladi deb faraz qilinadi
|
|
hotel_type_id: number;
|
|
hotel_amenity_ids: number[];
|
|
hotel_feature_ids: number[];
|
|
};
|
|
|
|
export type TourFormData = {
|
|
// Etap 1: Asosiy Tur Ma'lumotlari
|
|
title: string;
|
|
price: number;
|
|
departure: string;
|
|
destination: string;
|
|
departure_time: string;
|
|
travel_time: string;
|
|
passenger_count: number;
|
|
languages: string;
|
|
duration_days: number;
|
|
hotel_meals_option: string; // 'nonushta', 'yarmpansion'
|
|
tariff: string; // 'econom', 'business'
|
|
badge: string; // 'hot', 'new'
|
|
visa_required: boolean;
|
|
banner_image: File[];
|
|
transport: string; // 'airplane', 'bus'
|
|
|
|
// Qo'shimcha Modellar
|
|
tickets_images: string[]; // Bilet rasmlari URL massivi
|
|
tickets_amenities: TicketAmenity[];
|
|
tickets_included_services: IncludedService[];
|
|
tickets_hotel_meals: HotelMeal[];
|
|
|
|
// Etap 2: Mehmonxona Ma'lumotlari (yoki uni qismi)
|
|
hotel_info: string; // Asosiy matn
|
|
hotel_data: HotelData;
|
|
};
|
|
|
|
// Forma holatini boshqarish uchun boshlang'ich qiymat
|
|
export const initialTourData: TourFormData = {
|
|
title: "",
|
|
price: 0,
|
|
departure: "",
|
|
destination: "",
|
|
departure_time: "",
|
|
travel_time: "",
|
|
passenger_count: 1,
|
|
languages: "O'zbek, Rus",
|
|
duration_days: 1,
|
|
hotel_meals_option: "Nonushta",
|
|
tariff: "Econom",
|
|
badge: "New",
|
|
visa_required: false,
|
|
banner_image: [],
|
|
transport: "Samolyot",
|
|
tickets_images: [],
|
|
tickets_amenities: [{ name: "Wi-Fi", icon_name: "Wifi" }],
|
|
tickets_included_services: [],
|
|
tickets_hotel_meals: [],
|
|
hotel_info: "",
|
|
hotel_data: {
|
|
name: "",
|
|
rating: 5,
|
|
meal_plan: "Nonushta",
|
|
hotel_type_id: 1,
|
|
hotel_amenity_ids: [],
|
|
hotel_feature_ids: [],
|
|
},
|
|
};
|