21 lines
1.8 KiB
TypeScript
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 };
|
|
});
|
|
}
|