import { z } from "zod";
import {
  numberFromForm,
  nonNegativeNumberFromForm,
  intIdFromForm,
} from "./common";

const ScopeSectionSchema = z.object({
  title: z.string().max(255).nullish(),
  title_cz: z.string().max(255).nullish(),
  content: z.string().max(8000).nullish(),
  position: nonNegativeNumberFromForm.optional(),
});

export const CreateScopeTemplateSchema = z.object({
  name: z.string().max(255).nullish(),
  title: z.string().max(255).nullish(),
  description: z.string().max(8000).nullish(),
  sections: z.array(ScopeSectionSchema).optional(),
});

export const CreateItemTemplateSchema = z.object({
  id: intIdFromForm.optional(),
  name: z.string().max(255).nullish(),
  description: z.string().max(8000).nullish(),
  default_price: numberFromForm.optional().default(0),
  category: z.string().max(255).nullish(),
});

export const UpdateScopeTemplateSchema = z.object({
  name: z.string().max(255).optional(),
  title: z.string().max(255).optional(),
  description: z.string().max(8000).optional(),
  sections: z.array(ScopeSectionSchema).optional(),
});

export type CreateScopeTemplateInput = z.infer<
  typeof CreateScopeTemplateSchema
>;
export type CreateItemTemplateInput = z.infer<typeof CreateItemTemplateSchema>;
export type UpdateScopeTemplateInput = z.infer<
  typeof UpdateScopeTemplateSchema
>;
