diff --git a/apps/web/src/components/projects/ProjectModal.tsx b/apps/web/src/components/projects/ProjectModal.tsx index 90d63fc..5f7e891 100644 --- a/apps/web/src/components/projects/ProjectModal.tsx +++ b/apps/web/src/components/projects/ProjectModal.tsx @@ -204,7 +204,7 @@ export function ProjectModal({ project, onClose }: ProjectModalProps) { startDate: new Date(form.startDate), endDate: new Date(form.endDate), status: form.status as unknown as ProjectStatus, - responsiblePerson: form.responsiblePerson.trim() || undefined, + responsiblePerson: form.responsiblePerson.trim(), ...(form.color ? { color: form.color } : {}), ...(form.utilizationCategoryId ? { utilizationCategoryId: form.utilizationCategoryId } : {}), ...(form.clientId ? { clientId: form.clientId } : {}), @@ -223,7 +223,7 @@ export function ProjectModal({ project, onClose }: ProjectModalProps) { status: form.status as unknown as ProjectStatus, staffingReqs: [], dynamicFields: {}, - responsiblePerson: form.responsiblePerson.trim() || undefined, + responsiblePerson: form.responsiblePerson.trim(), ...(form.color ? { color: form.color } : {}), ...(form.utilizationCategoryId ? { utilizationCategoryId: form.utilizationCategoryId } : {}), ...(form.clientId ? { clientId: form.clientId } : {}), @@ -521,8 +521,8 @@ export function ProjectModal({ project, onClose }: ProjectModalProps) {
setField("responsiblePerson", e.target.value)} placeholder="Name or EID" + required className={inputClass} />
diff --git a/apps/web/src/components/projects/ProjectWizard.tsx b/apps/web/src/components/projects/ProjectWizard.tsx index e81b108..f754202 100644 --- a/apps/web/src/components/projects/ProjectWizard.tsx +++ b/apps/web/src/components/projects/ProjectWizard.tsx @@ -1089,7 +1089,7 @@ export function ProjectWizard({ open, onClose }: ProjectWizardProps) { endDate: new Date(state.endDate), staffingReqs: state.staffingReqs, status: state.saveAsDraft ? ProjectStatus.DRAFT : ProjectStatus.ACTIVE, - responsiblePerson: state.responsiblePerson.trim() || undefined, + responsiblePerson: state.responsiblePerson.trim(), blueprintId: state.blueprintId ?? undefined, dynamicFields: {}, }); diff --git a/packages/shared/src/schemas/project.schema.ts b/packages/shared/src/schemas/project.schema.ts index d0a9b26..743024a 100644 --- a/packages/shared/src/schemas/project.schema.ts +++ b/packages/shared/src/schemas/project.schema.ts @@ -28,7 +28,7 @@ export const CreateProjectBaseSchema = z.object({ dynamicFields: z.record(z.string(), z.unknown()).default({}), blueprintId: z.string().optional(), status: z.nativeEnum(ProjectStatus).default(ProjectStatus.DRAFT), - responsiblePerson: z.string().max(200).optional(), + responsiblePerson: z.string().min(1, "Responsible person is required").max(200), color: z.string().regex(/^#[0-9a-fA-F]{6}$/, "Must be a hex color like #3b82f6").optional(), utilizationCategoryId: z.string().optional(), clientId: z.string().optional(),