import { z } from "zod"; import { flattenFieldDefinitions } from "@/eventRouters/schemas/zodSchemas"; interface AppendersData { uu_id: string; service_uu_id: string; event_uu_id: string; is_confirmed: boolean; active: boolean; deleted?: boolean; created_at?: string; updated_at?: string; } const errorMessages = { en: { serviceUuIdRequired: "Service UUID is required", eventUuIdRequired: "Event UUID is required", }, tr: { serviceUuIdRequired: "Servis UUID'si gereklidir", eventUuIdRequired: "Etkinlik UUID'si gereklidir", }, }; const getServiceBaseSchema = (lang: "en" | "tr" = "en") => z.object({ uu_id: z.string().optional(), service_uu_id: z.string().min(1, errorMessages[lang].serviceUuIdRequired), event_uu_id: z.string().min(1, errorMessages[lang].eventUuIdRequired), is_confirmed: z.boolean().default(false), active: z.boolean().default(true), deleted: z.boolean().default(false), created_at: z.string().optional(), updated_at: z.string().optional(), }); const AppenderBaseSchema = getServiceBaseSchema("en"); const AppenderBaseTranslationTr = { uu_id: "UUID", service_uu_id: "Servis UUID'si", event_uu_id: "Etkinlik UUID'si", is_confirmed: "Onaylandı", active: "Active", deleted: "Deleted", created_at: "Created At", updated_at: "Updated At", }; const AppenderBaseTranslationEn = { uu_id: "UUID", service_uu_id: "Service UUID", event_uu_id: "Event UUID", is_confirmed: "Confirmed", active: "Active", deleted: "Deleted", created_at: "Created At", updated_at: "Updated At", }; const serviceBaseFieldDefinitions = { identificationInfo: { title: "Service Information", order: 1, fields: { uu_id: { type: "text", label: { tr: AppenderBaseTranslationTr.uu_id, en: AppenderBaseTranslationEn.uu_id, }, readOnly: true, required: false, }, service_uu_id: { type: "text", label: { tr: AppenderBaseTranslationTr.service_uu_id, en: AppenderBaseTranslationEn.service_uu_id, }, readOnly: false, required: true, }, event_uu_id: { type: "text", label: { tr: AppenderBaseTranslationTr.event_uu_id, en: AppenderBaseTranslationEn.event_uu_id, }, readOnly: false, required: true, }, }, }, statusInfo: { title: "Status Information", order: 3, fields: { active: { type: "checkbox", label: { tr: AppenderBaseTranslationTr.active, en: AppenderBaseTranslationEn.active, }, readOnly: false, required: false, defaultValue: true, }, deleted: { type: "checkbox", label: { tr: AppenderBaseTranslationTr.deleted, en: AppenderBaseTranslationEn.deleted, }, readOnly: true, required: false, defaultValue: false, }, is_confirmed: { type: "checkbox", label: { tr: AppenderBaseTranslationTr.is_confirmed, en: AppenderBaseTranslationEn.is_confirmed, }, readOnly: false, required: true, }, }, }, systemInfo: { title: "System Information", order: 4, fields: { created_at: { type: "date", label: { tr: AppenderBaseTranslationTr.created_at, en: AppenderBaseTranslationEn.created_at, }, readOnly: true, required: false, }, updated_at: { type: "date", label: { tr: AppenderBaseTranslationTr.updated_at, en: AppenderBaseTranslationEn.updated_at, }, readOnly: true, required: false, }, }, }, }; const ViewAppenderSchema = AppenderBaseSchema; const AppenderSchema = AppenderBaseSchema; const appenderFlatFieldDefinitions = flattenFieldDefinitions( serviceBaseFieldDefinitions ); type AppenderFieldDefinitionsType = typeof appenderFlatFieldDefinitions; const appenderFieldsByMode = { view: Object.keys(serviceBaseFieldDefinitions), }; export type { AppendersData, AppenderFieldDefinitionsType }; export { AppenderSchema, appenderFlatFieldDefinitions, AppenderBaseTranslationEn, AppenderBaseTranslationTr, appenderFieldsByMode, };