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 = ({