Skip to content
5 changes: 2 additions & 3 deletions apps/backend/src/donationItems/donationItems.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
Get,
Patch,
ParseIntPipe,
BadRequestException,
} from '@nestjs/common';
import { ApiBody } from '@nestjs/swagger';
import { DonationItemsService } from './donationItems.service';
Expand All @@ -19,8 +18,8 @@ import { CreateMultipleDonationItemsDto } from './dtos/create-donation-items.dto
export class DonationItemsController {
constructor(private donationItemsService: DonationItemsService) {}

@Get('/get-donation-items/:donationId')
async getAllDonationIdItems(
@Get('/:donationId/all')
async getAllDonationItemsForDonation(
@Param('donationId', ParseIntPipe) donationId: number,
): Promise<DonationItem[]> {
return this.donationItemsService.getAllDonationItems(donationId);
Expand Down
1 change: 0 additions & 1 deletion apps/backend/src/orders/order.controller.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {
Controller,
Get,
Post,
Patch,
Param,
ParseIntPipe,
Expand Down
6 changes: 3 additions & 3 deletions apps/frontend/src/api/apiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,9 @@ export class ApiClient {
public async getDonationItemsByDonationId(
donationId: number,
): Promise<DonationItem[]> {
return this.get(
`/api/donation-items/get-donation-items/${donationId}`,
) as Promise<DonationItem[]>;
return this.get(`/api/donation-items/${donationId}/all`) as Promise<
DonationItem[]
>;
}

public async getManufacturerFromOrder(
Expand Down
9 changes: 9 additions & 0 deletions apps/frontend/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import PantryApplication from '@containers/pantryApplication';
import ApplicationSubmitted from '@containers/applicationSubmitted';
import { submitPantryApplicationForm } from '@components/forms/pantryApplicationForm';
import ApprovePantries from '@containers/approvePantries';
import ApplicationDetails from '@containers/applicationDetails';
import VolunteerManagement from '@containers/volunteerManagement';
import FoodManufacturerOrderDashboard from '@containers/foodManufacturerOrderDashboard';
import AdminDonation from '@containers/adminDonation';
Expand Down Expand Up @@ -174,6 +175,14 @@ const router = createBrowserRouter([
</ProtectedRoute>
),
},
{
path: '/application-details/:applicationId',
element: (
<ProtectedRoute>
<ApplicationDetails />
</ProtectedRoute>
),
},
{
path: '/admin-donation',
element: (
Expand Down
5 changes: 4 additions & 1 deletion apps/frontend/src/components/floatingAlert.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ type FloatingAlertProps = {
message?: string | null;
status?: 'info' | 'error';
timeout?: number;
onClose?: () => void;
};

export function FloatingAlert({
message,
status,
timeout,
onClose,
}: FloatingAlertProps) {
const [visible, setVisible] = useState(!!message);

Expand All @@ -26,10 +28,11 @@ export function FloatingAlert({

const timer = setTimeout(() => {
setVisible(false);
onClose?.();
}, timeout);

return () => clearTimeout(timer);
}, [message, timeout]);
}, [message, timeout, onClose]);

if (!message || !visible) return null;

Expand Down
87 changes: 87 additions & 0 deletions apps/frontend/src/components/forms/confirmPantryDecisionModal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
import { Dialog, Text, Box, Button, CloseButton } from '@chakra-ui/react';

interface ConfirmPantryDecisionModalProps {
isOpen: boolean;
onClose: () => void;
onConfirm: () => void;
decision: string;
pantryName: string;
dateApplied: string;
}

const ConfirmPantryDecisionModal: React.FC<ConfirmPantryDecisionModalProps> = ({
isOpen,
onClose,
onConfirm,
decision,
pantryName,
dateApplied,
}) => {
return (
<Dialog.Root
open={isOpen}
onOpenChange={(e: { open: boolean }) => !e.open && onClose()}
>
<Dialog.Backdrop />
<Dialog.Positioner>
<Dialog.Content maxW="500px">
<Dialog.Header pb={0}>
<Dialog.Title fontSize="lg" fontWeight={600}>
Confirm Action
</Dialog.Title>
</Dialog.Header>

<Dialog.Body pb={4}>
<Text mb={4} color="gray.dark">
Are you sure you want to {decision} this application?
</Text>

<Box
p={6}
borderRadius="md"
border="1px solid"
borderColor="neutral.100"
>
<Text textStyle="p2">{pantryName}</Text>
<Text textStyle="p3" color="neutral.600">
Applied {dateApplied}
</Text>
</Box>
<Dialog.CloseTrigger asChild>
<CloseButton />
</Dialog.CloseTrigger>
</Dialog.Body>

<Dialog.Footer gap={2}>
<Button
variant="outline"
onClick={onClose}
borderColor="neutral.200"
color="neutral.800"
textStyle="p2"
fontWeight={600}
>
Cancel
</Button>
<Button
bg="blue.hover"
color="white"
onClick={() => {
onConfirm();
onClose();
}}
_hover={{ bg: 'neutral.800' }}
px={12}
textStyle="p2"
fontWeight={600}
>
{decision.charAt(0).toUpperCase() + decision.slice(1)}
</Button>
</Dialog.Footer>
</Dialog.Content>
</Dialog.Positioner>
</Dialog.Root>
);
};

export default ConfirmPantryDecisionModal;
4 changes: 2 additions & 2 deletions apps/frontend/src/components/forms/donationDetailsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ const DonationDetailsModal: React.FC<DonationDetailsModalProps> = ({
);

setItems(itemsData);
} catch (err) {
setAlertMessage('Error fetching donation details: ' + err);
} catch {
setAlertMessage('Error fetching donation details');
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,6 @@ export const submitManufacturerApplicationForm: ActionFunction = async ({
);
} else {
alert('Form submission failed; please try again');
console.log(error);
}
},
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,6 @@ const NewDonationFormModal: React.FC<NewDonationFormModalProps> = ({

try {
const donationResponse = await ApiClient.postDonation(donation_body);
console.log('Submitted donation');
const donationId = donationResponse?.donationId;

if (donationId) {
Expand Down
4 changes: 2 additions & 2 deletions apps/frontend/src/components/forms/orderDetailsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ const OrderDetailsModal: React.FC<OrderDetailsModalProps> = ({
order.orderId,
);
setFoodRequest(foodRequestData);
} catch (error) {
setAlertMessage('Error fetching food request details:' + error);
} catch {
setAlertMessage('Error fetching food request details');
}
};

Expand Down
12 changes: 6 additions & 6 deletions apps/frontend/src/components/forms/pantryApplicationModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,32 +66,32 @@ const PantryApplicationModal: React.FC<PantryApplicationModalProps> = ({
<GridItem>
<Text fontWeight="bold">Shipping Address Line 1</Text>
</GridItem>
<GridItem>{pantry.shippingAddressLine1}</GridItem>
<GridItem>{pantry.shipmentAddressLine1}</GridItem>

<GridItem>
<Text fontWeight="bold">Shipping Address Line 2</Text>
</GridItem>
<GridItem>{pantry.shippingAddressLine2 ?? ''}</GridItem>
<GridItem>{pantry.shipmentAddressLine2 ?? ''}</GridItem>

<GridItem>
<Text fontWeight="bold">Shipping Address City</Text>
</GridItem>
<GridItem>{pantry.shippingAddressCity}</GridItem>
<GridItem>{pantry.shipmentAddressCity}</GridItem>

<GridItem>
<Text fontWeight="bold">Shipping Address State</Text>
</GridItem>
<GridItem>{pantry.shippingAddressState}</GridItem>
<GridItem>{pantry.shipmentAddressState}</GridItem>

<GridItem>
<Text fontWeight="bold">Shipping Address Zip</Text>
</GridItem>
<GridItem>{pantry.shippingAddressZip}</GridItem>
<GridItem>{pantry.shipmentAddressZip}</GridItem>

<GridItem>
<Text fontWeight="bold">Shipping Address Country</Text>
</GridItem>
<GridItem>{pantry.shippingAddressCountry ?? ''}</GridItem>
<GridItem>{pantry.shipmentAddressCountry ?? ''}</GridItem>

<GridItem>
<Text fontWeight="bold">Allergen Clients</Text>
Expand Down
9 changes: 7 additions & 2 deletions apps/frontend/src/components/forms/requestFormModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ const FoodRequestFormModal: React.FC<FoodRequestFormModalProps> = ({

try {
await apiClient.createFoodRequest(foodRequestData);
setAlert({ isError: false, message: 'Request Submitted' });
setAlert({ isError: false, message: 'Request submitted' });
onClose();
onSuccess();
} catch {
Expand All @@ -91,7 +91,12 @@ const FoodRequestFormModal: React.FC<FoodRequestFormModalProps> = ({
<FloatingAlert message={alert.message} status="error" timeout={6000} />
)}
{alert.message && !alert.isError && (
<FloatingAlert message={alert.message} status="info" timeout={6000} />
<FloatingAlert
message={alert.message}
status="info"
timeout={6000}
onClose={() => setAlert({ isError: true, message: '' })}
/>
)}
<Dialog.Backdrop />
<Dialog.Positioner>
Expand Down
12 changes: 6 additions & 6 deletions apps/frontend/src/components/forms/resetPasswordModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,16 @@ const ResetPasswordModal: React.FC = () => {
try {
await resetPassword({ username: email });
setStep('new');
} catch (error) {
setAlertMessage('Failed to send verification code: ' + error);
} catch {
setAlertMessage('Failed to send verification code');
}
};

const handleResendCode = async () => {
try {
await resetPassword({ username: email });
} catch (error) {
setAlertMessage('Failed to send verification code: ' + error);
} catch {
setAlertMessage('Failed to send verification code');
}
};

Expand All @@ -57,8 +57,8 @@ const ResetPasswordModal: React.FC = () => {
newPassword: password,
});
navigate('/login');
} catch (error) {
setAlertMessage('Failed to set new password: ' + error);
} catch {
setAlertMessage('Failed to set new password');
}
};

Expand Down
4 changes: 2 additions & 2 deletions apps/frontend/src/containers/adminDonation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ const AdminDonation: React.FC = () => {
try {
const data = await ApiClient.getAllDonations();
setDonations(data);
} catch (error) {
setAlertMessage('Error fetching donations: ' + error);
} catch {
setAlertMessage('Error fetching donations');
}
};
fetchDonations();
Expand Down
Loading