30 lines
1.3 KiB
JavaScript
30 lines
1.3 KiB
JavaScript
import { array, boolean, mixed, number, object, string } from 'yup'
|
|
|
|
export const courseSchema = object().shape({
|
|
title: string().required().min(3).max(255),
|
|
// The backend intentionally allows courses without an assigned teacher.
|
|
teacherId: mixed().nullable().notRequired(),
|
|
capacity: number()
|
|
.typeError('ظرفیت باید بهصورت عدد وارد شود')
|
|
.required()
|
|
.integer('ظرفیت باید عدد صحیح باشد')
|
|
.min(1, 'ظرفیت باید حداقل ۱ نفر باشد'),
|
|
prerequisiteCourseIds: array().nullable().default([]),
|
|
coverMediaId: number().typeError('شناسه تصویر دوره باید عدد باشد').nullable().notRequired(),
|
|
description: string().nullable().notRequired(),
|
|
termId: mixed().required(),
|
|
isActive: boolean().nullable().notRequired(),
|
|
})
|
|
|
|
export const offeredCourseSchema = object().shape({
|
|
termId: string().required(),
|
|
title: string().required(),
|
|
capacity: number()
|
|
.typeError('ظرفیت باید بهصورت عدد وارد شود')
|
|
.required()
|
|
.integer('ظرفیت باید عدد صحیح باشد')
|
|
.min(1, 'ظرفیت باید حداقل ۱ نفر باشد'),
|
|
imageId: string().nullable().notRequired(),
|
|
isActive: boolean().nullable().notRequired(),
|
|
})
|