Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Staging Release 0404 #155

Merged
merged 16 commits into from
Apr 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { Booking, BookingStatusLabel } from '../../../../types';
import React, { useContext, useMemo, useState } from 'react';

import { BookingStatusLabel } from '../../../../types';
import { DatabaseContext } from '../../components/Provider';
import Loading from '../../../utils/Loading';
import { serverFunctions } from '../../../utils/serverFunctions';
import useBookingStatus from '../hooks/getBookingStatus';
import { useLocation } from 'react-router';

interface Props {
calendarEventId: string;
Expand All @@ -15,6 +15,9 @@ export default function BookingActions({ status, calendarEventId }: Props) {
const [loading, setLoading] = useState(false);
const { reloadBookings, reloadBookingStatuses } = useContext(DatabaseContext);

const location = useLocation();
const isAdminPage = useMemo(() => location.pathname === '/admin', [location]);

const reload = async () => {
await Promise.all([reloadBookings(), reloadBookingStatuses()]);
};
Expand All @@ -33,35 +36,54 @@ export default function BookingActions({ status, calendarEventId }: Props) {
} finally {
setLoading(false);
}
// await action();
// await reload();
// setLoading(false);
}}
>
{text}
</button>
);

if (loading) {
return <Loading />;
return (
<td className="px-2 py-4 w-28">
<Loading />
</td>
);
}

return (
const paBtns = (
<>
{status === BookingStatusLabel.PRE_APPROVED &&
ActionButton('Second Approve', () =>
serverFunctions.approveBooking(calendarEventId)
)}
{status === BookingStatusLabel.REQUESTED &&
ActionButton('First Approve', () =>
serverFunctions.approveBooking(calendarEventId)
)}
{ActionButton('Reject', () => serverFunctions.reject(calendarEventId))}
{ActionButton('Cancel', () => serverFunctions.cancel(calendarEventId))}
{status !== BookingStatusLabel.CHECKED_IN &&
ActionButton('Check In', () =>
serverFunctions.checkin(calendarEventId)
)}
{status !== BookingStatusLabel.NO_SHOW &&
ActionButton('No Show', () => serverFunctions.noShow(calendarEventId))}
</>
);

if (!isAdminPage) {
return (
<td className="px-2 py-4 w-28">
<div className="flex flex-col items-start">{paBtns}</div>
</td>
);
}

return (
<td className="px-2 py-4 w-36">
<div className="flex flex-col items-start">
{status === BookingStatusLabel.PRE_APPROVED &&
ActionButton('2nd Approve', () =>
serverFunctions.approveBooking(calendarEventId)
)}
{status === BookingStatusLabel.REQUESTED &&
ActionButton('1st Approve', () =>
serverFunctions.approveBooking(calendarEventId)
)}
{ActionButton('Reject', () => serverFunctions.reject(calendarEventId))}
{ActionButton('Cancel', () => serverFunctions.cancel(calendarEventId))}
{paBtns}
</div>
</td>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,17 +66,12 @@ export const Bookings: React.FC<BookingsProps> = ({
{filteredBookings.map((booking, index) => {
const status = getBookingStatus(booking, bookingStatuses);
return (
<tr
key={index}
className="bg-white border-b dark:bg-gray-800 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600"
>
<tr key={index} className="">
{!isUserView && (
<td className="px-2 py-4 w-40 flex flex-col items-start">
<BookingActions
status={status}
calendarEventId={booking.calendarEventId}
/>
</td>
<BookingActions
status={status}
calendarEventId={booking.calendarId}
/>
)}
<td className="px-2 py-4 w-24">{status}</td>
<td className="px-2 py-4 w-36">{booking.roomId}</td>
Expand Down Expand Up @@ -120,11 +115,9 @@ export const Bookings: React.FC<BookingsProps> = ({
{booking.sponsorFirstName} {booking.sponsorLastName}
</td>
<td className="px-2 py-4 w-20">{booking.sponsorEmail}</td>
<td className="px-2 py-4 w-52 break-all">
{booking.reservationTitle}
</td>
<td className="px-2 py-4 w-52 break-all">{booking.title}</td>
<td className="px-2 py-4 w-60 break-all">
{booking.reservationDescription}
{booking.description}
</td>
<td className="px-2 py-4 w-20">
{booking.expectedAttendance}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React, { useContext, useMemo, useState } from 'react';
import { TableNames, getLiaisonTableName } from '../../../../policy';

import { DatabaseContext } from '../../components/Provider';
import EmailListTable from '../../components/EmailListTable';
import Loading from '../../../utils/Loading';
import { TableNames } from '../../../../policy';
import { formatDate } from '../../../utils/date';
// This is a wrapper for google.script.run that lets us use promises.
import { serverFunctions } from '../../../utils/serverFunctions';
Expand All @@ -26,7 +26,7 @@ const AddLiaisonForm = ({ liaisonEmails, reloadLiaisonEmails }) => {

setLoading(true);
try {
await serverFunctions.appendRowActive(TableNames.LIAISONS, [
await serverFunctions.appendRowActive(getLiaisonTableName(), [
email,
department,
new Date().toString(),
Expand All @@ -37,6 +37,7 @@ const AddLiaisonForm = ({ liaisonEmails, reloadLiaisonEmails }) => {
alert('Failed to add user');
} finally {
setLoading(false);
setEmail('');
}
};

Expand All @@ -56,6 +57,7 @@ const AddLiaisonForm = ({ liaisonEmails, reloadLiaisonEmails }) => {
onChange={(e) => {
setEmail(e.target.value);
}}
value={email}
className="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
placeholder="[email protected]"
required
Expand Down Expand Up @@ -113,7 +115,7 @@ export const Liaisons = () => {
reloadLiaisonEmails={reloadLiaisonUsers}
/>
<EmailListTable
tableName={TableNames.LIAISONS}
tableName={getLiaisonTableName()}
userList={liaisonUsers}
userListRefresh={reloadLiaisonUsers}
columnFormatters={{ createdAt: formatDate }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ export default function getBookingStatus(
): BookingStatusLabel {
const bookingStatusLabel = () => {
const bookingStatusMatch = bookingStatuses.filter(
(row) => row.calendarEventId === booking.calendarEventId
(row) => row.calendarId === booking.calendarId
)[0];
if (bookingStatusMatch === undefined) return BookingStatusLabel.UNKNOWN;
if (bookingStatusMatch.checkedInAt !== '') {
return BookingStatusLabel.CHECKED_IN;
} else if (bookingStatusMatch.noShowedAt !== '') {
return BookingStatusLabel.NO_SHOW;
} else if (bookingStatusMatch.canceledAt !== '') {
return BookingStatusLabel.CANCELED;
} else if (bookingStatusMatch.rejectedAt !== '') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,11 @@ <h2>Room Reservation Request</h2>
</p>
<p>
Reservation Title:
<?= reservationTitle ?>
<?= title ?>
</p>
<p>
Reservation Description:
<?= reservationDescription ?>
<?= description ?>
</p>
<p>
Expected Attendance:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,26 @@ import { serverFunctions } from '../../utils/serverFunctions';

export interface BookingContextType {
bookingCalendarInfo: DateSelectArg | undefined;
canBookFullTime: boolean;
department: Department | undefined;
isBanned: boolean;
isSafetyTrained: boolean;
isThesis_PLACEHOLDER: boolean;
role: Role | undefined;
selectedRooms: RoomSetting[];
setBookingCalendarInfo: (x: DateSelectArg) => void;
setDepartment: (x: Department) => void;
setIsThesis: (x: boolean) => void;
setRole: (x: Role) => void;
setSelectedRooms: (x: RoomSetting[]) => void;
}

export const BookingContext = createContext<BookingContextType>({
bookingCalendarInfo: undefined,
canBookFullTime: false,
department: undefined,
isBanned: false,
isSafetyTrained: true,
isThesis_PLACEHOLDER: false,
role: undefined,
selectedRooms: [],
setBookingCalendarInfo: (x: DateSelectArg) => {},
setDepartment: (x: Department) => {},
setIsThesis: (x: boolean) => {},
setRole: (x: Role) => {},
setSelectedRooms: (x: RoomSetting[]) => {},
});
Expand All @@ -52,15 +46,9 @@ export function BookingProvider({ children }) {
useState<DateSelectArg>();
const [department, setDepartment] = useState<Department>();
const [isSafetyTrained, setIsSafetyTrained] = useState(true);
const [isThesis_PLACEHOLDER, setIsThesis] = useState(false);
const [role, setRole] = useState<Role>();
const [selectedRooms, setSelectedRooms] = useState<RoomSetting[]>([]);

const canBookFullTime = useMemo(
() => isThesis_PLACEHOLDER || role !== 'Student',
[isThesis_PLACEHOLDER, role]
);

const isBanned = useMemo<boolean>(() => {
if (!userEmail) return false;
return bannedUsers
Expand Down Expand Up @@ -90,16 +78,13 @@ export function BookingProvider({ children }) {
<BookingContext.Provider
value={{
bookingCalendarInfo,
canBookFullTime,
department,
isBanned,
isSafetyTrained,
isThesis_PLACEHOLDER,
role,
selectedRooms,
setBookingCalendarInfo,
setDepartment,
setIsThesis,
setRole,
setSelectedRooms,
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ type CalendarProps = {
selectedRooms: RoomSetting[];
handleSetDate: any;
refs?: any[];
canBookFullTime: Boolean;
};

const TITLE_TAG = '[Click to Delete]';
Expand All @@ -20,7 +19,6 @@ export const Calendars = ({
allRooms,
selectedRooms,
handleSetDate,
canBookFullTime,
}: CalendarProps) => {
const [bookingTimeEvent, setBookingTimeEvent] = useState<DateSelectArg>();

Expand Down Expand Up @@ -114,7 +112,6 @@ export const Calendars = ({
allRooms={allRooms}
bookingTimeEvent={bookingTimeEvent}
setBookingTimeEvent={setBookingTimeEvent}
canBookFullTime={canBookFullTime}
isOverlap={isOverlap}
key={i}
/>
Expand Down
Loading
Loading