Files
shomal-hospital-ticketing-b…/src/modules/ticket/validation/ticket.validation.ts
2026-05-23 14:14:50 +03:30

72 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import Joi from "joi";
import { TicketPriority, TicketStatus } from "../../../core/types";
export const ticketValidationSchema = Joi.object({
// ticketNumber: Joi.string().optional().allow(null,""),
departmentId: Joi.string().uuid().required().messages({
"string.base": "شناسه دپارتمان نامعتبر است",
"string.empty": "شناسه دپارتمان الزامی است",
"string.guid": "فرمت شناسه دپارتمان صحیح نیست",
"any.required": "شناسه دپارتمان الزامی است",
}),
internalPhone: Joi.string()
.pattern(/^[0-9]{3,10}$/)
.optional()
.messages({
"string.pattern.base": "شماره داخلی باید فقط عدد و بین ۳ تا ۱۰ رقم باشد",
}),
requestType: Joi.string().required().messages({
"string.empty": "نوع درخواست الزامی است",
"any.required": "نوع درخواست الزامی است",
}),
priority: Joi.string()
.valid(...Object.values(TicketPriority))
.optional()
.messages({
"any.only": "اولویت انتخاب شده معتبر نیست",
}),
description: Joi.string().min(5).required().messages({
"string.empty": "توضیحات الزامی است",
"string.min": "توضیحات باید حداقل ۵ کاراکتر باشد",
"any.required": "توضیحات الزامی است",
}),
relatedSystem: Joi.string().optional().allow("").messages({
"string.base": "سیستم مرتبط نامعتبر است",
}),
location: Joi.string().optional().allow("").messages({
"string.base": "موقعیت وارد شده نامعتبر است",
}),
createdBy: Joi.string().required().allow("").messages({
"string.empty": "نام نام خانوادگي كاربر الزامی است",
"any.required": "نام نام خانوادگي كاربر الزامی است",
}),
helpdeskAction: Joi.string().optional().allow("").messages({
"string.base": "اقدام واحد پشتیبانی نامعتبر است",
}),
assignedTo: Joi.string().uuid().optional().messages({
"string.guid": "شناسه کاربر تخصیص داده شده نامعتبر است",
}),
status: Joi.string()
.valid(...Object.values(TicketStatus))
.optional()
.messages({
"any.only": "وضعیت تیکت نامعتبر است",
}),
resolvedAt: Joi.date().optional().messages({
"date.base": "تاریخ حل شدن نامعتبر است",
}),
finalNotes: Joi.string().optional().allow("").messages({
"string.base": "یادداشت نهایی نامعتبر است",
}),
});