From c677e7c01c9523e8f1147b02212f92423e5a5890 Mon Sep 17 00:00:00 2001 From: Daria Mikhailova Date: Wed, 17 Jan 2024 18:15:03 +1300 Subject: [PATCH] fix updating office visits if desk or area changed --- .../guest-invites/server/helpers/index.ts | 49 ++++++------------- .../visits/client/components/DeskPicker.tsx | 30 +++--------- 2 files changed, 24 insertions(+), 55 deletions(-) diff --git a/src/modules/guest-invites/server/helpers/index.ts b/src/modules/guest-invites/server/helpers/index.ts index 5b25728e..9e460c71 100644 --- a/src/modules/guest-invites/server/helpers/index.ts +++ b/src/modules/guest-invites/server/helpers/index.ts @@ -25,44 +25,27 @@ export const updateVisitsForManualInvite = async ( deskId: string | null, dates: Array ) => { - // Need to cancel any office visits dates which were removed - const datesAreTheSame: boolean = compareDates(invite.dates, dates) - - let datesToSchedule: Array = [] - - if (!datesAreTheSame) { - datesToSchedule = dates.filter((date) => !invite.dates.includes(date)) - const datesToCancel: Array = invite.dates.filter( - (date) => !dates.includes(date) - ) - - // cancelling all the office visit dates that were removed from the guest invite - if (!!datesToCancel.length) { - for (const visitDate of datesToCancel) { - const v = await fastify.db.Visit.findOne({ - where: { - date: visitDate, - deskId, - areaId, - userId: ROBOT_USER_ID, - officeId: invite.office, - }, - transaction, - }) + // cancelling all the office visit dates for this guest invite + if (!!invite.dates.length) { + for (const visitDate of invite.dates) { + const v = await fastify.db.Visit.findOne({ + where: { + date: visitDate, + deskId: invite.deskId, + areaId: invite.areaId, + userId: ROBOT_USER_ID, + officeId: invite.office, + }, + transaction, + }) + if (v) { await v.destroy({ transaction: transaction }) } } } - // scheduling all the new visit dates that were added to the guest invite - if (!!datesToSchedule.length) { - const visits = generateVisits( - areaId, - deskId, - datesToSchedule, - invite, - ROBOT_USER_ID - ) + if (!!dates.length) { + const visits = generateVisits(areaId, deskId, dates, invite, ROBOT_USER_ID) // @ts-ignore FIXME: await fastify.db.Visit.bulkCreate(visits, { transaction }) } diff --git a/src/modules/visits/client/components/DeskPicker.tsx b/src/modules/visits/client/components/DeskPicker.tsx index 90751010..e2bd0990 100644 --- a/src/modules/visits/client/components/DeskPicker.tsx +++ b/src/modules/visits/client/components/DeskPicker.tsx @@ -21,8 +21,6 @@ export const DeskPicker: React.FC = ({ selectedAreaId, onSelectArea, }) => { - const [deskId, setDeskId] = React.useState(selectedDeskId) - ///////// Area ///////// const { data: areas = [] } = useVisitsAreas(officeId) const [areaId, setAreaId] = React.useState(null) @@ -30,17 +28,12 @@ export const DeskPicker: React.FC = ({ const onAreaChange = React.useCallback( (areaId: string) => { setAreaId(areaId) - setDeskId(null) onSelectDesk(null) onSelectArea && onSelectArea(areaId) }, [areas] ) - React.useEffect(() => { - setDeskId(selectedDeskId) - }, [selectedDeskId]) - React.useEffect(() => { if (selectedAreaId) { setAreaId(selectedAreaId) @@ -48,7 +41,7 @@ export const DeskPicker: React.FC = ({ }, [selectedAreaId]) React.useEffect(() => { - if (areas.length) { + if (areas.length && !selectedAreaId) { setAreaId(areas[0].id) onSelectArea && onSelectArea(areas[0].id) } @@ -59,19 +52,14 @@ export const DeskPicker: React.FC = ({ useAvailableDesks(officeId, selectedDates) const availableAreaDeskIds = React.useMemo(() => { - return availableDesks + const available = availableDesks .filter((x) => x.areaId === area?.id) .map((x) => x.deskId) - }, [availableDesks, area]) - - React.useEffect(() => { - if ( - deskId && - (!availableAreaDeskIds.includes(deskId) || !selectedDates.length) - ) { - setDeskId(null) + if (selectedDeskId) { + available.push(selectedDeskId) } - }, [availableAreaDeskIds, deskId, selectedDates]) + return available + }, [availableDesks, area]) ///////// UnAvailable area ///////// const [unavailableDeskNames, unavailableArea] = React.useMemo< @@ -87,7 +75,6 @@ export const DeskPicker: React.FC = ({ const onToggleDesk = React.useCallback( (deskId: string) => { - setDeskId((value) => (value === deskId ? null : deskId)) onSelectDesk(deskId) }, [area] @@ -122,7 +109,6 @@ export const DeskPicker: React.FC = ({ )}

- {/*
*/} ) : null} {areas.length > 1 ? ( @@ -147,7 +133,7 @@ export const DeskPicker: React.FC = ({ value: x.id, disabled: !availableAreaDeskIds.includes(x.id), }))} - value={deskId || undefined} + value={selectedDeskId} onChange={onToggleDesk} placeholder={'Select desk'} className="w-full" @@ -159,7 +145,7 @@ export const DeskPicker: React.FC = ({