Skip to content
Open
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
Expand Up @@ -126,9 +126,10 @@ export function OrdersTable<TValue>({
column={table.getColumn("paymentStatus")}
title="Payment Status"
options={[
{ label: "CONFIRMED", value: "CONFIRMED" },
{ label: "UNVERIFIABLE", value: "UNVERIFIABLE" },
{ label: "PENDING", value: "PENDING" },
{ label: "Picked Up", value: "Picked Up" },
{ label: "Not Picked Up", value: "Not Picked Up" },
{ label: "Pending", value: "Pending" },
{ label: "Unverifiable", value: "Unverifiable" },
]}
/>
)}
Expand Down Expand Up @@ -162,8 +163,8 @@ export function OrdersTable<TValue>({
? null
: flexRender(
header.column.columnDef.header,
header.getContext()
)}
header.getContext(),
)}
</TableHead>
);
})}
Expand All @@ -180,7 +181,7 @@ export function OrdersTable<TValue>({
<TableCell key={cell.id}>
{flexRender(
cell.column.columnDef.cell,
cell.getContext()
cell.getContext(),
)}
</TableCell>
))}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type Referral = z.infer<typeof ReferralSchema>;

export interface ReferralWithQuantities extends Referral {
orderCount: number;
amountRaised: number;
}

// Create a function that returns columns with the token (access token)
Expand Down Expand Up @@ -82,6 +83,25 @@ export const getReferralsColumns = (): ColumnDef<ReferralWithQuantities>[] => [
</div>
),
},
{
accessorKey: "amountRaised",
header: ({ column }) => {
return (
<Button
variant="ghost"
className="flex justify-center w-full px-2"
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}>
Amount Raised
<ArrowUpDown className="ml-1 h-3 w-3" />
</Button>
);
},
cell: ({ row }) => (
<div className="flex items-center justify-center">
${row.original.amountRaised.toFixed(2)}
</div>
),
},
{
accessorKey: "approved",
header: () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,33 @@ export function ReferralsTableWrapper({
referrals,
orders,
}: ReferralsTableWrapperProps) {
// Calculate order count for each referral
// Calculate order count and amount raised for each referral
const referralsWithQuantities: ReferralWithQuantities[] = referrals.map(
(referral) => {
// Count how many orders have this referral ID and are confirmed (paid or picked up)
const orderCount = orders.filter(
// Only count orders that are confirmed (paid or picked up)
const referralOrders = orders.filter(
(order) =>
order.referral?.id === referral.id &&
(order.paymentStatus === "CONFIRMED" || order.pickedUp)
).length;
(order.paymentStatus === "CONFIRMED" || order.pickedUp),
);

const orderCount = referralOrders.length;
const amountRaised = referralOrders.reduce(
(total, order) =>
total +
order.items.reduce(
(sum, item) => sum + Number(item.item.price) * item.quantity,
0,
),
0,
);

return {
...referral,
orderCount,
amountRaised,
};
}
},
);

const columns = getReferralsColumns();
Expand Down
20 changes: 6 additions & 14 deletions frontend/src/components/custom/DesktopUserMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { User, ChevronDown } from "lucide-react";
import { User } from "lucide-react";
import { redirect } from "next/navigation";
import { Button } from "../ui/button";

Expand All @@ -31,10 +31,6 @@ export default function DesktopUserMenu({ userRole }: { userRole: UserRole }) {
checkLoginStatus();
}, []);

const navigateToOrganizations = () => {
redirect("/seller");
};

const navigateToSettings = () => {
redirect("/account");
};
Expand All @@ -52,19 +48,15 @@ export default function DesktopUserMenu({ userRole }: { userRole: UserRole }) {
<DropdownMenuTrigger asChild>
<Button
variant="ghost"
className="flex items-center gap-1 text-base font-normal">
Account
<ChevronDown className="h-4 w-4" />
size="icon"
aria-label="Account"
className="rounded-full">
<User className="h-5 w-5" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" alignOffset={15}>
<DropdownMenuContent align="end">
{loggedIn ? (
<>
<DropdownMenuItem
onClick={navigateToOrganizations}
className="text-base">
Organizations
</DropdownMenuItem>
<DropdownMenuItem
onClick={navigateToSettings}
className="text-base">
Expand Down
23 changes: 17 additions & 6 deletions frontend/src/components/custom/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -144,14 +144,14 @@ export default function Navbar() {

{/* Desktop Search Bar - Centered */}
{showSearchBar && (
<div className="hidden min-[1350px]:flex absolute left-1/2 transform -translate-x-1/2 w-40 xl:w-64 2xl:w-96 pointer-events-auto">
<div className="hidden min-[1440px]:flex absolute left-1/2 transform -translate-x-1/2 w-40 xl:w-64 2xl:w-96 pointer-events-auto">
<SearchBar onSearchChange={handleSearchChange} />
</div>
)}

{/* Tablet Search Overlay - shown when search icon is clicked */}
{showSearchBar && searchExpanded && (
<div className="hidden md:flex min-[1350px]:hidden absolute inset-0 items-center px-4 md:px-[157px] bg-background z-20 gap-2">
<div className="hidden md:flex min-[1440px]:hidden absolute inset-0 items-center px-4 md:px-[157px] bg-background z-20 gap-2">
<Button
variant="ghost"
size="icon"
Expand Down Expand Up @@ -225,13 +225,14 @@ export default function Navbar() {
<NavigationMenu>
<NavigationMenuList>
<>
<NavigationMenuItem className="min-[1350px]:hidden">
<button
className={navigationMenuTriggerStyle()}
<NavigationMenuItem className="min-[1440px]:hidden">
<Button
variant="ghost"
size="icon"
onClick={() => setSearchExpanded(true)}
aria-label="Open search">
<Search className="h-5 w-5" />
</button>
</Button>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink
Expand All @@ -255,6 +256,11 @@ export default function Navbar() {
onClick={() => setTutorialOpen(true)}>
Tutorial
</button>
<Link
href="/seller"
className={navigationMenuTriggerStyle()}>
Organizations
</Link>
<DesktopUserMenu userRole={userRole} />
</div>
</>
Expand Down Expand Up @@ -304,6 +310,11 @@ export default function Navbar() {
onClick={() => setTutorialOpen(true)}>
Tutorial
</button>
<Link
href="/seller"
className={navigationMenuTriggerStyle()}>
Organizations
</Link>
<DesktopUserMenu userRole={userRole} />
</div>
)}
Expand Down