diff --git a/apps/web/components/schedule/slot-datetime/slot-time.tsx b/apps/web/components/schedule/slot-datetime/slot-time.tsx index fb585c4..e5e0dd4 100644 --- a/apps/web/components/schedule/slot-datetime/slot-time.tsx +++ b/apps/web/components/schedule/slot-datetime/slot-time.tsx @@ -1,3 +1,4 @@ +/* eslint-disable canonical/id-match */ /* eslint-disable react/jsx-no-bind */ 'use client'; @@ -5,6 +6,7 @@ import { type SlotComponentProps } from '../types'; import { EditableTimeRangeForm, ReadonlyTimeRange } from '@/components/shared/time-range'; import { useSlotMutation, useSlotQuery } from '@/hooks/api/slots'; import { useScheduleStore } from '@/stores/schedule'; +import { Enum_Order_State } from '@repo/graphql/types'; import { Button } from '@repo/ui/components/ui/button'; import { formatTime } from '@repo/utils/datetime-format'; import { PencilLine } from 'lucide-react'; @@ -49,6 +51,13 @@ function SlotTimeEditForm({ documentId }: Readonly) { ); } +const FORBIDDEN_ORDER_STATES: Enum_Order_State[] = [ + Enum_Order_State.Scheduled, + Enum_Order_State.Approved, + Enum_Order_State.Completed, + Enum_Order_State.Cancelling, +]; + function SlotTimeReadonly({ documentId }: Readonly) { const setEditMode = useScheduleStore((state) => state.setEditMode); @@ -56,14 +65,16 @@ function SlotTimeReadonly({ documentId }: Readonly) { if (!slot) return null; - const hasOrders = Boolean(slot?.orders.length); + const disabledEdit = slot?.orders.some( + (order) => order?.state && FORBIDDEN_ORDER_STATES.includes(order?.state), + ); return (