Files
buzz-sheet/lib/commission/request-validation.ts
T

21 lines
1.8 KiB
TypeScript

import { commissionRequestSchema, type CommissionRequest } from "./request";
export function commissionRequestIssues(request: CommissionRequest) {
const parsed = commissionRequestSchema.safeParse(request);
if (parsed.success) return [];
return parsed.error.issues.map(({ path }) => {
let message = "เพิ่มทีมหรือรายการเปรียบเทียบอย่างน้อยหนึ่งรายการ";
if (path[0] === "teams") {
const teamNumber = Number(path[1]) + 1;
const memberNumber = typeof path[3] === "number" ? path[3] + 1 : null;
message = memberNumber && path[4] === "characterKey" ? `ทีม ${teamNumber}: เลือกตัวละครที่ ${memberNumber}`
: memberNumber && path[4] === "weaponKey" ? `ทีม ${teamNumber}: เลือกอาวุธให้ตัวละครที่ ${memberNumber}`
: memberNumber && path[4] === "artifactKey" ? `ทีม ${teamNumber}: เลือกอาร์ติแฟกต์ให้ตัวละครที่ ${memberNumber}`
: `ทีม ${teamNumber}: เลือกตัวละคร 4 ตัวที่ไม่ซ้ำกัน พร้อมอาวุธและอาร์ติแฟกต์`;
}
if (path[0] === "weapons") message = `ชุดเปรียบเทียบอาวุธ ${Number(path[1]) + 1}: เลือกตัวละครและอาวุธต่างกันอย่างน้อย 2 ชิ้น`;
if (path[0] === "constellations") message = `ชุดเปรียบเทียบกลุ่มดาว ${Number(path[1]) + 1}: เลือกตัวละครและกลุ่มดาวอย่างน้อย 1 ระดับ`;
return { path: path.join("."), message };
});
}