Skip to content

Commit

Permalink
Merge pull request #455 from ITPNYU/revert-454-riho/decline_reason
Browse files Browse the repository at this point in the history
Revert "Record who declined a request and why"
  • Loading branch information
rlho authored Oct 8, 2024
2 parents 8cf64a3 + 947b28b commit 848474f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 64 deletions.
5 changes: 3 additions & 2 deletions booking-app/app/api/approve/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ import { NextRequest, NextResponse } from "next/server";
import { serverApproveBooking } from "@/components/src/server/admin";

export async function POST(req: NextRequest) {
const { id, email } = await req.json();
const { id } = await req.json();

try {
await serverApproveBooking(id, email);
console.log("id", id);
await serverApproveBooking(id);
return NextResponse.json(
{ message: "Approved successfully" },
{ status: 200 },
Expand Down
42 changes: 11 additions & 31 deletions booking-app/app/decline/page.tsx
Original file line number Diff line number Diff line change
@@ -1,37 +1,30 @@
"use client";
import {
DatabaseContext,
DatabaseProvider,
} from "@/components/src/client/routes/components/Provider";
import { decline } from "@/components/src/server/db";
import { Button, TextField } from "@mui/material";

import React, { Suspense, useState } from "react";

import { Button } from "@mui/material";
import { useSearchParams } from "next/navigation";
import React, { Suspense, useContext, useState } from "react";
import { decline } from "@/components/src/server/db";

const DeclinePageContent: React.FC = () => {
const searchParams = useSearchParams();
const paramCalendarEventId = searchParams.get("calendarEventId");
const [loading, setLoading] = useState(false);
const [declined, setDeclined] = useState(false);
const [error, setError] = useState<string | null>(null);
const [reason, setReason] = useState("");
const { userEmail } = useContext(DatabaseContext);

const handleDecline = async () => {
if (paramCalendarEventId && reason.trim()) {
if (paramCalendarEventId) {
setLoading(true);
setError(null);
try {
await decline(paramCalendarEventId, userEmail, reason);
await decline(paramCalendarEventId);
setDeclined(true);
} catch (err) {
setError("Failed to decline booking.");
console.log(err);
} finally {
setLoading(false);
}
} else {
setError("Please provide a reason for declining.");
}
};

Expand All @@ -41,20 +34,9 @@ const DeclinePageContent: React.FC = () => {
{paramCalendarEventId ? (
<div>
<p>Event ID: {paramCalendarEventId}</p>
<TextField
label="Reason for Declining"
variant="outlined"
fullWidth
multiline
rows={4}
value={reason}
onChange={e => setReason(e.target.value)}
style={{ marginBottom: 16 }}
required
/>
<Button
onClick={() => handleDecline()}
disabled={loading || declined || !reason.trim()}
disabled={loading || declined}
variant="contained"
>
{loading
Expand All @@ -73,11 +55,9 @@ const DeclinePageContent: React.FC = () => {
};

const DeclinePage: React.FC = () => (
<DatabaseProvider>
<Suspense fallback={<div>Loading...</div>}>
<DeclinePageContent />
</Suspense>
</DatabaseProvider>
<Suspense fallback={<div>Loading...</div>}>
<DeclinePageContent />
</Suspense>
);

export default DeclinePage;
50 changes: 19 additions & 31 deletions booking-app/components/src/server/db.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import {
clientFetchAllDataFromCollection,
clientGetDataByCalendarEventId,
clientUpdateDataInFirestore,
} from "@/lib/firebase/firebase";
import { Timestamp, where } from "@firebase/firestore";
BookingFormDetails,
BookingStatusLabel,
PolicySettings,
} from "../types";
import {
TableNames,
clientGetFinalApproverEmail,
getCancelCcEmail,
} from "../policy";
import {
BookingFormDetails,
BookingStatusLabel,
PolicySettings,
} from "../types";
import { Timestamp, where } from "@firebase/firestore";
import { approvalUrl, declineUrl, getBookingToolDeployUrl } from "./ui";
import {
clientFetchAllDataFromCollection,
clientGetDataByCalendarEventId,
clientUpdateDataInFirestore,
} from "@/lib/firebase/firebase";

import { clientUpdateDataByCalendarEventId } from "@/lib/firebase/client/clientDb";
import { roundTimeUp } from "../client/utils/date";
Expand Down Expand Up @@ -69,10 +69,9 @@ export const getOldSafetyTrainingEmails = () => {
//return combinedValues;
};

export const decline = async (id: string, email: string, reason?: string) => {
export const decline = async (id: string) => {
clientUpdateDataByCalendarEventId(TableNames.BOOKING_STATUS, id, {
declinedAt: Timestamp.now(),
declinedBy: email,
});

const doc = await clientGetDataByCalendarEventId(
Expand All @@ -81,15 +80,8 @@ export const decline = async (id: string, email: string, reason?: string) => {
);
//@ts-ignore
const guestEmail = doc ? doc.email : null;
let headerMessage =
"Your reservation request for Media Commons has been declined.";

if (reason) {
headerMessage += ` Reason: ${reason}`;
} else {
headerMessage +=
" For detailed reasons regarding this decision, please contact us at [email protected].";
}
const headerMessage =
"Your reservation request for Media Commons has been declined. For detailed reasons regarding this decision, please contact us at [email protected].";
clientSendBookingDetailEmail(
id,
guestEmail,
Expand All @@ -110,10 +102,9 @@ export const decline = async (id: string, email: string, reason?: string) => {
}
);
};
export const cancel = async (id: string, email: string) => {
export const cancel = async (id: string) => {
clientUpdateDataByCalendarEventId(TableNames.BOOKING_STATUS, id, {
canceledAt: Timestamp.now(),
canceledBy: email,
});
const doc = await clientGetDataByCalendarEventId(
TableNames.BOOKING_STATUS,
Expand Down Expand Up @@ -165,10 +156,9 @@ export const updatePolicySettingData = async (updatedData: object) => {
console.log("No policy settings docs found");
}
};
export const checkin = async (id: string, email: string) => {
export const checkin = async (id: string) => {
clientUpdateDataByCalendarEventId(TableNames.BOOKING_STATUS, id, {
checkedInAt: Timestamp.now(),
checkedInBy: email,
});
const doc = await clientGetDataByCalendarEventId(
TableNames.BOOKING_STATUS,
Expand Down Expand Up @@ -200,11 +190,10 @@ export const checkin = async (id: string, email: string) => {
);
};

export const checkOut = async (id: string, email: string) => {
export const checkOut = async (id: string) => {
const checkoutDate = roundTimeUp();
clientUpdateDataByCalendarEventId(TableNames.BOOKING_STATUS, id, {
checkedOutAt: Timestamp.now(),
checkedOutBy: email,
});
clientUpdateDataByCalendarEventId(TableNames.BOOKING, id, {
endDate: Timestamp.fromDate(checkoutDate),
Expand Down Expand Up @@ -245,10 +234,9 @@ export const checkOut = async (id: string, email: string) => {
);
};

export const noShow = async (id: string, email: email) => {
export const noShow = async (id: string) => {
clientUpdateDataByCalendarEventId(TableNames.BOOKING_STATUS, id, {
noShowedAt: Timestamp.now(),
noShowedBy: email,
});
const doc = await clientGetDataByCalendarEventId(
TableNames.BOOKING_STATUS,
Expand Down Expand Up @@ -336,12 +324,12 @@ export const clientSendConfirmationEmail = async (
clientSendBookingDetailEmail(calendarEventId, email, headerMessage, status);
};

export const clientApproveBooking = async (id: string, email: string) => {
export const clientApproveBooking = async (id: string) => {
const res = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/approve`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ id: id, email: email }),
body: JSON.stringify({ id: id }),
});
};

0 comments on commit 848474f

Please sign in to comment.