style: run prettier on entire codebase

This commit is contained in:
BOHA
2026-03-24 19:59:14 +01:00
parent 872be42107
commit 3c167cf5c4
148 changed files with 26740 additions and 13990 deletions

View File

@@ -1,4 +1,4 @@
import { z } from 'zod';
import { z } from "zod";
export const AttendanceNotesSchema = z.object({
notes: z.string().nullish(),
@@ -6,44 +6,73 @@ export const AttendanceNotesSchema = z.object({
export const AttendanceUpdateAddressSchema = z.object({
address: z.string().max(500).nullish(),
punch_action: z.string().optional().default('arrival'),
punch_action: z.string().optional().default("arrival"),
});
export const AttendanceSwitchProjectSchema = z.object({
project_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
project_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
});
export const AttendanceBalancesSchema = z.object({
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
year: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
user_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
year: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
action_type: z.string(),
vacation_total: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vacation_used: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
sick_used: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vacation_total: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
vacation_used: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
sick_used: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export const AttendanceBulkSchema = z.object({
month: z.string().regex(/^\d{4}-\d{2}$/, 'Měsíc je povinný (formát YYYY-MM)'),
user_ids: z.array(z.number()).min(1, 'Vyberte alespoň jednoho zaměstnance'),
arrival_time: z.string().optional().default('08:00'),
departure_time: z.string().optional().default('16:30'),
break_start_time: z.string().optional().default('12:00'),
break_end_time: z.string().optional().default('12:30'),
month: z.string().regex(/^\d{4}-\d{2}$/, "Měsíc je povinný (formát YYYY-MM)"),
user_ids: z.array(z.number()).min(1, "Vyberte alespoň jednoho zaměstnance"),
arrival_time: z.string().optional().default("08:00"),
departure_time: z.string().optional().default("16:30"),
break_start_time: z.string().optional().default("12:00"),
break_end_time: z.string().optional().default("12:30"),
});
export const AttendanceLeaveSchema = z.object({
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
date_from: z.string().min(1, 'Datum je povinné'),
user_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
date_from: z.string().min(1, "Datum je povinné"),
date_to: z.string().optional(),
leave_type: z.string().optional().default('vacation'),
leave_hours: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
leave_type: z.string().optional().default("vacation"),
leave_hours: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
notes: z.string().nullish(),
});
const ProjectLogSchema = z.object({
project_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
hours: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
minutes: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
project_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
hours: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 0)
.optional()
.default(0),
minutes: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 0)
.optional()
.default(0),
});
export const AttendancePunchSchema = z.object({
@@ -55,22 +84,49 @@ export const AttendancePunchSchema = z.object({
});
export const CreateAttendanceSchema = z.object({
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
user_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
shift_date: z.string(),
arrival_time: z.string().nullish(),
arrival_lat: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
arrival_lng: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
arrival_accuracy: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
arrival_lat: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
arrival_lng: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
arrival_accuracy: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
arrival_address: z.string().nullish(),
departure_time: z.string().nullish(),
departure_lat: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
departure_lng: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
departure_accuracy: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
departure_lat: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
departure_lng: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
departure_accuracy: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
departure_address: z.string().nullish(),
notes: z.string().nullish(),
project_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
leave_type: z.string().optional().default('work'),
leave_hours: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
project_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
leave_type: z.string().optional().default("work"),
leave_hours: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
project_logs: z.array(ProjectLogSchema).optional(),
});
@@ -87,8 +143,12 @@ export const UpdateAttendanceSchema = z.object({
});
export type AttendanceNotesInput = z.infer<typeof AttendanceNotesSchema>;
export type AttendanceUpdateAddressInput = z.infer<typeof AttendanceUpdateAddressSchema>;
export type AttendanceSwitchProjectInput = z.infer<typeof AttendanceSwitchProjectSchema>;
export type AttendanceUpdateAddressInput = z.infer<
typeof AttendanceUpdateAddressSchema
>;
export type AttendanceSwitchProjectInput = z.infer<
typeof AttendanceSwitchProjectSchema
>;
export type AttendanceBalancesInput = z.infer<typeof AttendanceBalancesSchema>;
export type AttendanceBulkInput = z.infer<typeof AttendanceBulkSchema>;
export type AttendanceLeaveInput = z.infer<typeof AttendanceLeaveSchema>;

View File

@@ -1,19 +1,19 @@
import { z } from 'zod';
import { z } from "zod";
export const LoginSchema = z.object({
username: z.string().min(1, 'Uživatelské jméno je povinné'),
password: z.string().min(1, 'Heslo je povinné'),
username: z.string().min(1, "Uživatelské jméno je povinné"),
password: z.string().min(1, "Heslo je povinné"),
remember_me: z.boolean().optional().default(false),
});
export const TotpVerifySchema = z.object({
login_token: z.string().min(1, 'Token je povinný'),
totp_code: z.string().length(6, 'Kód musí mít 6 číslic'),
login_token: z.string().min(1, "Token je povinný"),
totp_code: z.string().length(6, "Kód musí mít 6 číslic"),
});
export const TotpBackupSchema = z.object({
login_token: z.string().min(1, 'Token je povinný'),
backup_code: z.string().min(1, 'Záložní kód je povinný'),
login_token: z.string().min(1, "Token je povinný"),
backup_code: z.string().min(1, "Záložní kód je povinný"),
});
export type LoginInput = z.infer<typeof LoginSchema>;

View File

@@ -1,4 +1,4 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateBankAccountSchema = z.object({
account_name: z.string().nullish(),
@@ -6,9 +6,13 @@ export const CreateBankAccountSchema = z.object({
account_number: z.string().nullish(),
iban: z.string().nullish(),
bic: z.string().nullish(),
currency: z.string().optional().default('CZK'),
currency: z.string().optional().default("CZK"),
is_default: z.any().optional().default(false),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(0),
});
export const UpdateBankAccountSchema = z.object({
@@ -19,7 +23,10 @@ export const UpdateBankAccountSchema = z.object({
bic: z.string().nullish(),
currency: z.string().optional(),
is_default: z.any().optional(),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export type CreateBankAccountInput = z.infer<typeof CreateBankAccountSchema>;

View File

@@ -1,12 +1,17 @@
import { ZodSchema, z } from 'zod';
import { ZodSchema, z } from "zod";
export function parseBody<T>(schema: ZodSchema<T>, body: unknown): { data: T } | { error: string } {
export function parseBody<T>(
schema: ZodSchema<T>,
body: unknown,
): { data: T } | { error: string } {
try {
return { data: schema.parse(body) };
} catch (e) {
if (e instanceof z.ZodError) {
return { error: e.issues.map((err: z.ZodIssue) => err.message).join(', ') };
return {
error: e.issues.map((err: z.ZodIssue) => err.message).join(", "),
};
}
return { error: 'Neplatný požadavek' };
return { error: "Neplatný požadavek" };
}
}

View File

@@ -1,4 +1,4 @@
import { z } from 'zod';
import { z } from "zod";
export const UpdateCompanySettingsSchema = z.object({
company_name: z.string().nullish(),
@@ -12,10 +12,15 @@ export const UpdateCompanySettingsSchema = z.object({
default_currency: z.string().nullish(),
order_type_code: z.string().nullish(),
invoice_type_code: z.string().nullish(),
default_vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
default_vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
require_2fa: z.any().optional(),
custom_fields: z.array(z.any()).optional(),
supplier_field_order: z.array(z.any()).optional(),
});
export type UpdateCompanySettingsInput = z.infer<typeof UpdateCompanySettingsSchema>;
export type UpdateCompanySettingsInput = z.infer<
typeof UpdateCompanySettingsSchema
>;

View File

@@ -1,7 +1,7 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateCustomerSchema = z.object({
name: z.string().min(1, 'Název zákazníka je povinný'),
name: z.string().min(1, "Název zákazníka je povinný"),
street: z.string().nullish(),
city: z.string().nullish(),
postal_code: z.string().nullish(),

View File

@@ -1,21 +1,46 @@
import { z } from 'zod';
import { z } from "zod";
const InvoiceItemSchema = z.object({
description: z.string().nullish(),
quantity: z.union([z.number(), z.string()]).transform(v => Number(v) || 1).optional().default(1),
quantity: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 1)
.optional()
.default(1),
unit: z.string().nullish(),
unit_price: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
unit_price: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 0)
.optional()
.default(0),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(21.0),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export const CreateInvoiceSchema = z.object({
invoice_number: z.string().nullish(),
order_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
status: z.string().optional().default('issued'),
currency: z.string().optional().default('CZK'),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
order_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
customer_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
status: z.string().optional().default("issued"),
currency: z.string().optional().default("CZK"),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(21.0),
apply_vat: z.any().optional().default(true),
payment_method: z.string().nullish(),
constant_symbol: z.string().nullish(),
@@ -44,7 +69,10 @@ export const UpdateInvoiceSchema = z.object({
bank_account: z.string().nullish(),
issued_by: z.string().nullish(),
customer_id: z.union([z.number(), z.string(), z.null()]).optional(),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
apply_vat: z.any().optional(),
issue_date: z.union([z.string(), z.null()]).optional(),
due_date: z.union([z.string(), z.null()]).optional(),

View File

@@ -1,14 +1,14 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateLeaveRequestSchema = z.object({
leave_type: z.string().min(1, 'Typ nepřítomnosti je povinný'),
date_from: z.string().min(1, 'Datum od je povinné'),
date_to: z.string().min(1, 'Datum do je povinné'),
leave_type: z.string().min(1, "Typ nepřítomnosti je povinný"),
date_from: z.string().min(1, "Datum od je povinné"),
date_to: z.string().min(1, "Datum do je povinné"),
notes: z.string().nullish(),
});
export const ReviewLeaveRequestSchema = z.object({
status: z.string().min(1, 'Stav je povinný'),
status: z.string().min(1, "Stav je povinný"),
reviewer_note: z.string().nullish(),
});

View File

@@ -1,33 +1,58 @@
import { z } from 'zod';
import { z } from "zod";
const QuotationItemSchema = z.object({
description: z.string().nullish(),
item_description: z.string().nullish(),
quantity: z.union([z.number(), z.string()]).transform(v => Number(v) || 1).optional().default(1),
quantity: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 1)
.optional()
.default(1),
unit: z.string().nullish(),
unit_price: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
unit_price: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 0)
.optional()
.default(0),
is_included_in_total: z.any().optional().default(true),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
const ScopeSectionSchema = z.object({
title: z.string().nullish(),
title_cz: z.string().nullish(),
content: z.string().nullish(),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export const CreateQuotationSchema = z.object({
quotation_number: z.string().nullish(),
project_code: z.string().nullish(),
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
customer_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
valid_until: z.string().nullish(),
currency: z.string().optional().default('CZK'),
language: z.string().optional().default('cs'),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
currency: z.string().optional().default("CZK"),
language: z.string().optional().default("cs"),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(21.0),
apply_vat: z.any().optional().default(true),
exchange_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(1.0),
status: z.string().optional().default('active'),
exchange_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(1.0),
status: z.string().optional().default("active"),
scope_title: z.string().nullish(),
scope_description: z.string().nullish(),
items: z.array(QuotationItemSchema).optional(),
@@ -37,13 +62,22 @@ export const CreateQuotationSchema = z.object({
export const UpdateQuotationSchema = z.object({
quotation_number: z.string().optional(),
project_code: z.string().nullish(),
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
customer_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
valid_until: z.union([z.string(), z.null()]).optional(),
currency: z.string().optional(),
language: z.string().optional(),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
apply_vat: z.any().optional(),
exchange_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
exchange_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
status: z.string().optional(),
scope_title: z.string().nullish(),
scope_description: z.string().nullish(),

View File

@@ -1,38 +1,66 @@
import { z } from 'zod';
import { z } from "zod";
const OrderItemSchema = z.object({
description: z.string().nullish(),
item_description: z.string().nullish(),
quantity: z.union([z.number(), z.string()]).transform(v => Number(v) || 1).optional().default(1),
quantity: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 1)
.optional()
.default(1),
unit: z.string().nullish(),
unit_price: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
unit_price: z
.union([z.number(), z.string()])
.transform((v) => Number(v) || 0)
.optional()
.default(0),
is_included_in_total: z.any().optional().default(true),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
const OrderSectionSchema = z.object({
title: z.string().nullish(),
title_cz: z.string().nullish(),
content: z.string().nullish(),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export const CreateOrderFromQuotationSchema = z.object({
quotationId: z.union([z.number(), z.string()]).transform(v => Number(v)),
customerOrderNumber: z.string().optional().default(''),
quotationId: z.union([z.number(), z.string()]).transform((v) => Number(v)),
customerOrderNumber: z.string().optional().default(""),
});
export const CreateOrderSchema = z.object({
order_number: z.string().nullish(),
customer_order_number: z.string().nullish(),
quotation_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
status: z.string().optional().default('prijata'),
currency: z.string().optional().default('CZK'),
language: z.string().optional().default('cs'),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
quotation_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
customer_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
status: z.string().optional().default("prijata"),
currency: z.string().optional().default("CZK"),
language: z.string().optional().default("cs"),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(21.0),
apply_vat: z.any().optional().default(true),
exchange_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(1.0),
exchange_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(1.0),
scope_title: z.string().nullish(),
scope_description: z.string().nullish(),
notes: z.string().nullish(),
@@ -50,12 +78,17 @@ export const UpdateOrderSchema = z.object({
scope_description: z.string().nullish(),
notes: z.string().nullish(),
customer_id: z.union([z.number(), z.string(), z.null()]).optional(),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
apply_vat: z.any().optional(),
items: z.array(OrderItemSchema).optional(),
sections: z.array(OrderSectionSchema).optional(),
});
export type CreateOrderFromQuotationInput = z.infer<typeof CreateOrderFromQuotationSchema>;
export type CreateOrderFromQuotationInput = z.infer<
typeof CreateOrderFromQuotationSchema
>;
export type CreateOrderInput = z.infer<typeof CreateOrderSchema>;
export type UpdateOrderInput = z.infer<typeof UpdateOrderSchema>;

View File

@@ -1,7 +1,7 @@
import { z } from 'zod';
import { z } from "zod";
export const UpdateProfileSchema = z.object({
email: z.string().email('Neplatný formát e-mailu').optional(),
email: z.string().email("Neplatný formát e-mailu").optional(),
first_name: z.string().optional(),
last_name: z.string().optional(),
current_password: z.string().optional(),

View File

@@ -1,13 +1,25 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateProjectSchema = z.object({
project_number: z.string().nullish(),
name: z.string().nullish(),
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
responsible_user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
quotation_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
order_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
status: z.string().optional().default('aktivni'),
customer_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
responsible_user_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
quotation_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
order_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.nullish(),
status: z.string().optional().default("aktivni"),
start_date: z.string().nullish(),
end_date: z.string().nullish(),
notes: z.string().nullish(),

View File

@@ -1,18 +1,30 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateReceivedInvoiceSchema = z.object({
supplier_name: z.string().min(1, 'Název dodavatele je povinný'),
month: z.union([z.number(), z.string()]).transform(v => Number(v)),
year: z.union([z.number(), z.string()]).transform(v => Number(v)),
supplier_name: z.string().min(1, "Název dodavatele je povinný"),
month: z.union([z.number(), z.string()]).transform((v) => Number(v)),
year: z.union([z.number(), z.string()]).transform((v) => Number(v)),
invoice_number: z.string().nullish(),
description: z.string().nullish(),
amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
currency: z.string().optional().default('CZK'),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21),
vat_amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
amount: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(0),
currency: z.string().optional().default("CZK"),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(21),
vat_amount: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(0),
issue_date: z.string().nullish(),
due_date: z.string().nullish(),
status: z.string().optional().default('unpaid'),
status: z.string().optional().default("unpaid"),
notes: z.string().nullish(),
});
@@ -20,18 +32,37 @@ export const UpdateReceivedInvoiceSchema = z.object({
supplier_name: z.string().optional(),
invoice_number: z.string().nullish(),
description: z.string().nullish(),
amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
amount: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
currency: z.string().optional(),
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vat_amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vat_rate: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
vat_amount: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
issue_date: z.union([z.string(), z.null()]).optional(),
due_date: z.union([z.string(), z.null()]).optional(),
paid_date: z.union([z.string(), z.null()]).optional(),
status: z.string().optional(),
notes: z.string().nullish(),
month: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
year: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
month: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
year: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export type CreateReceivedInvoiceInput = z.infer<typeof CreateReceivedInvoiceSchema>;
export type UpdateReceivedInvoiceInput = z.infer<typeof UpdateReceivedInvoiceSchema>;
export type CreateReceivedInvoiceInput = z.infer<
typeof CreateReceivedInvoiceSchema
>;
export type UpdateReceivedInvoiceInput = z.infer<
typeof UpdateReceivedInvoiceSchema
>;

View File

@@ -1,8 +1,8 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateRoleSchema = z.object({
name: z.string().min(1, 'Název role je povinný'),
display_name: z.string().min(1, 'Zobrazovaný název je povinný'),
name: z.string().min(1, "Název role je povinný"),
display_name: z.string().min(1, "Zobrazovaný název je povinný"),
description: z.string().nullish(),
permission_ids: z.array(z.number()).optional(),
});

View File

@@ -1,10 +1,13 @@
import { z } from 'zod';
import { z } from "zod";
const ScopeSectionSchema = z.object({
title: z.string().nullish(),
title_cz: z.string().nullish(),
content: z.string().nullish(),
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
position: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
});
export const CreateScopeTemplateSchema = z.object({
@@ -15,10 +18,17 @@ export const CreateScopeTemplateSchema = z.object({
});
export const CreateItemTemplateSchema = z.object({
id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
name: z.string().nullish(),
description: z.string().nullish(),
default_price: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
default_price: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(0),
category: z.string().nullish(),
});
@@ -29,6 +39,10 @@ export const UpdateScopeTemplateSchema = z.object({
sections: z.array(ScopeSectionSchema).optional(),
});
export type CreateScopeTemplateInput = z.infer<typeof CreateScopeTemplateSchema>;
export type CreateScopeTemplateInput = z.infer<
typeof CreateScopeTemplateSchema
>;
export type CreateItemTemplateInput = z.infer<typeof CreateItemTemplateSchema>;
export type UpdateScopeTemplateInput = z.infer<typeof UpdateScopeTemplateSchema>;
export type UpdateScopeTemplateInput = z.infer<
typeof UpdateScopeTemplateSchema
>;

View File

@@ -1,11 +1,14 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateTripSchema = z.object({
vehicle_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
vehicle_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
user_id: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
trip_date: z.string(),
start_km: z.union([z.number(), z.string()]).transform(v => Number(v)),
end_km: z.union([z.number(), z.string()]).transform(v => Number(v)),
start_km: z.union([z.number(), z.string()]).transform((v) => Number(v)),
end_km: z.union([z.number(), z.string()]).transform((v) => Number(v)),
route_from: z.string(),
route_to: z.string(),
is_business: z.any().optional().default(false),
@@ -14,8 +17,14 @@ export const CreateTripSchema = z.object({
export const UpdateTripSchema = z.object({
trip_date: z.string().optional(),
start_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
end_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
start_km: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
end_km: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
route_from: z.string().optional(),
route_to: z.string().optional(),
is_business: z.any().optional(),

View File

@@ -1,19 +1,19 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateUserSchema = z.object({
username: z.string().min(1, 'Uživatelské jméno je povinné'),
email: z.string().email('Neplatný formát e-mailu'),
password: z.string().min(8, 'Heslo musí mít alespoň 8 znaků'),
first_name: z.string().min(1, 'Jméno je povinné'),
last_name: z.string().min(1, 'Příjmení je povinné'),
role_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
username: z.string().min(1, "Uživatelské jméno je povinné"),
email: z.string().email("Neplatný formát e-mailu"),
password: z.string().min(8, "Heslo musí mít alespoň 8 znaků"),
first_name: z.string().min(1, "Jméno je povinné"),
last_name: z.string().min(1, "Příjmení je povinné"),
role_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
is_active: z.any().optional().default(true),
});
export const UpdateUserSchema = z.object({
username: z.string().optional(),
email: z.string().email('Neplatný formát e-mailu').optional(),
password: z.string().min(8, 'Heslo musí mít alespoň 8 znaků').optional(),
email: z.string().email("Neplatný formát e-mailu").optional(),
password: z.string().min(8, "Heslo musí mít alespoň 8 znaků").optional(),
first_name: z.string().optional(),
last_name: z.string().optional(),
role_id: z.union([z.number(), z.string(), z.null()]).optional(),

View File

@@ -1,12 +1,20 @@
import { z } from 'zod';
import { z } from "zod";
export const CreateVehicleSchema = z.object({
spz: z.string().min(1, 'SPZ je povinná'),
name: z.string().min(1, 'Název je povinný'),
spz: z.string().min(1, "SPZ je povinná"),
name: z.string().min(1, "Název je povinný"),
brand: z.string().nullish(),
model: z.string().nullish(),
initial_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
actual_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
initial_km: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(0),
actual_km: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional()
.default(0),
is_active: z.any().optional().default(true),
});
@@ -15,8 +23,14 @@ export const UpdateVehicleSchema = z.object({
name: z.string().optional(),
brand: z.string().nullish(),
model: z.string().nullish(),
initial_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
actual_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
initial_km: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
actual_km: z
.union([z.number(), z.string()])
.transform((v) => Number(v))
.optional(),
is_active: z.any().optional(),
});