Files
simple-admin/src/pages/tours/lib/form.ts
Samandar Turgunboyev da46b6cac1 coutry crud added
2025-12-04 12:41:01 +05:00

162 lines
5.0 KiB
TypeScript

import z from "zod";
export const TourformSchema = z.object({
title: z.string().min(2, {
message: "Sarlavha kamida 2 ta belgidan iborat bo'lishi kerak",
}),
title_ru: z.string().min(2, {
message: "Sarlavha kamida 2 ta belgidan iborat bo'lishi kerak",
}),
hotel_info: z.string().optional(),
hotel_info_ru: z.string().optional(),
hotel_meals_info: z.string().optional(),
hotel_meals_info_ru: z.string().optional(),
price: z.number().min(1000, {
message: "Narx kamida 1000 UZS bo'lishi kerak.",
}),
passenger_count: z.string().min(1, {
message: "Kamida 1 yo'lovchi bo'lishi kerak.",
}),
min_person: z.string().min(1, {
message: "Kamida 1 yo'lovchi bo'lishi kerak.",
}),
max_person: z.string().min(1, {
message: "Kamida 1 yo'lovchi bo'lishi kerak.",
}),
departure: z.string().min(1, {
message: "Ketish joyi eng kamida 1 ta belgidan iborat bo'lishi kerak.",
}),
// departure_ru: z.string().min(2, {
// message: "Ketish joyi eng kamida 2 ta belgidan iborat bo'lishi kerak.",
// }),
destination: z.string().min(1, {
message: "Borish joyi eng kamida 1 ta belgidan iborat bo'lishi kerak.",
}),
// destination_ru: z.string().min(2, {
// message: "Borish joyi eng kamida 2 ta belgidan iborat bo'lishi kerak.",
// }),
location_name: z.string().min(2, {
message: "Eng kamida 2 ta belgidan iborat bo'lishi kerak.",
}),
location_name_ru: z.string().min(2, {
message: "Eng kamida 2 ta belgidan iborat bo'lishi kerak.",
}),
visa_required: z
.enum(["no", "yes"], { message: "Iltimos, visa talabliligini tanlang" })
.refine((val) => val === "no" || val === "yes", {
message: "Iltimos, visa talabliligini tanlang",
}),
departureDateTime: z.object({
date: z.date({ message: "Jo'nash vaqti majburiy" }),
}),
travelDateTime: z.object({
date: z.date({ message: "Jo'nash vaqti majburiy" }),
}),
languages: z.string().optional(),
duration: z.string().min(1, { message: "Kamida 1 kun bo'lishi kerak" }),
badges: z.array(z.number()).optional(),
tarif: z
.array(
z.object({
tariff: z.number().min(1, { message: "Transport ID majburiy" }),
price: z
.number()
.min(0, { message: "Narx 0 dan kichik bo'lishi mumkin emas" }),
}),
)
.optional(),
transport: z
.array(
z.object({
transport: z.number().min(1, { message: "Transport ID majburiy" }),
price: z
.number()
.min(0, { message: "Narx 0 dan kichik bo'lishi mumkin emas" }),
}),
)
.min(1, { message: "Majburiy maydon" }),
banner: z.any().nullable(),
images: z
.array(
z.object({
id: z.number().optional(),
image: z.union([z.instanceof(File), z.string()]).nullable(),
}),
)
.min(1, { message: "Kamida bitta rasm kiriting." }),
amenities: z.array(z.number()).optional(),
hotel_services: z
.array(
z.object({
id: z.number().optional(),
image: z.any().nullable(),
title: z.string().min(1, "Xizmat nomi majburiy"),
title_ru: z.string().min(1, { message: "Majburiy maydon" }),
description: z.string().min(1, "Tavsif majburiy"),
desc_ru: z.string().min(1, { message: "Majburiy maydon" }),
}),
)
.optional(),
hotel_meals: z
.array(
z.object({
id: z.number().optional(),
image: z.any().nullable(),
title: z.string().min(1, "Xizmat nomi majburiy"),
title_ru: z.string().min(1, "Majburiy maydon"),
description: z.string().min(1, "Tavsif majburiy"),
desc_ru: z.string().min(1, "Majburiy maydon"),
}),
)
.optional(),
ticket_itinerary: z
.array(
z.object({
id: z.number().optional(), // Edit uchun
ticket_itinerary_image: z.array(
z.union([
z.object({
image: z.union([z.instanceof(File), z.string()]),
}),
z.instanceof(File),
z.string(),
]),
),
title: z.string().min(1, "Sarlavha majburiy"),
title_ru: z.string().min(1, "Sarlavha (RU) majburiy"),
duration: z.number().min(1, { message: "Kamida 1 kun bo'lishi kerak" }),
ticket_itinerary_destinations: z.array(
z.object({
name: z.string().min(1, { message: "Majburiy maydon" }),
name_ru: z.string().min(1, { message: "Majburiy maydon" }),
}),
),
}),
)
.optional(),
extra_service: z
.array(
z.object({
name: z.string().min(1, { message: "Xizmat nomi majburiy" }),
name_ru: z.string().min(1, { message: "Xizmat nomi (RU) majburiy" }),
}),
)
.optional(),
paid_extra_service: z
.array(
z.object({
name: z.string().min(1, { message: "Xizmat nomi majburiy" }),
name_ru: z.string().min(1, { message: "Xizmat nomi (RU) majburiy" }),
price: z
.number()
.min(0, { message: "Narx manfiy bo'lishi mumkin emas." }),
}),
)
.optional(),
});