176 lines
4.3 KiB
TypeScript
176 lines
4.3 KiB
TypeScript
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,
|
||
};
|