From b757cbbed727668e120199dcda589788b68fcf84 Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Sat, 20 Jan 2024 01:09:03 +0000 Subject: [PATCH] Solved a date sorting bug --- src/dashboards/Admin.tsx | 33 ++++++++++++++++++++------------- src/pages/api/register.ts | 2 +- src/utils/index.ts | 8 ++++---- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/dashboards/Admin.tsx b/src/dashboards/Admin.tsx index 8737cb0b..e01360b7 100644 --- a/src/dashboards/Admin.tsx +++ b/src/dashboards/Admin.tsx @@ -7,13 +7,22 @@ import UserList from "@/pages/(admin)/Lists/UserList"; import {dateSorter} from "@/utils"; import moment from "moment"; import {useEffect, useState} from "react"; -import {BsArrowLeft, BsBriefcaseFill, BsGlobeCentralSouthAsia, BsPerson, BsPersonFill, BsPencilSquare, BsBank, BsCurrencyDollar} from "react-icons/bs"; +import { + BsArrowLeft, + BsBriefcaseFill, + BsGlobeCentralSouthAsia, + BsPerson, + BsPersonFill, + BsPencilSquare, + BsBank, + BsCurrencyDollar, +} from "react-icons/bs"; import UserCard from "@/components/UserCard"; import useGroups from "@/hooks/useGroups"; import IconCard from "./IconCard"; import useFilterStore from "@/stores/listFilterStore"; import {useRouter} from "next/router"; -import usePaymentStatusUsers from '@/hooks/usePaymentStatusUsers'; +import usePaymentStatusUsers from "@/hooks/usePaymentStatusUsers"; interface Props { user: User; @@ -27,7 +36,7 @@ export default function AdminDashboard({user}: Props) { const {stats} = useStats(user.id); const {users, reload} = useUsers(); const {groups} = useGroups(); - const { pending, done } = usePaymentStatusUsers(); + const {pending, done} = usePaymentStatusUsers(); const appendUserFilters = useFilterStore((state) => state.appendUserFilter); const router = useRouter(); @@ -148,7 +157,7 @@ export default function AdminDashboard({user}: Props) { ); - const CorporatePaidStatusList = ({ paid }: {paid: Boolean}) => { + const CorporatePaidStatusList = ({paid}: {paid: Boolean}) => { const list = paid ? done : pending; const filter = (x: User) => x.type === "corporate" && list.includes(x.id); @@ -161,7 +170,9 @@ export default function AdminDashboard({user}: Props) { Back -

{paid ? 'Payment Done' : 'Pending Payment'} ({list.length})

+

+ {paid ? "Payment Done" : "Pending Payment"} ({list.length}) +

@@ -290,13 +301,7 @@ export default function AdminDashboard({user}: Props) { } color="rose" /> - setPage("paymentdone")} - Icon={BsCurrencyDollar} - label="Payment Done" - value={done.length} - color="purple" - /> + setPage("paymentdone")} Icon={BsCurrencyDollar} label="Payment Done" value={done.length} color="purple" /> setPage("paymentpending")} Icon={BsCurrencyDollar} @@ -323,7 +328,9 @@ export default function AdminDashboard({user}: Props) {
{users .filter((x) => x.type === "corporate") - .sort((a, b) => dateSorter(a, b, "desc", "registrationDate")) + .sort((a, b) => { + return dateSorter(a, b, "desc", "registrationDate"); + }) .map((x) => ( ))} diff --git a/src/pages/api/register.ts b/src/pages/api/register.ts index de026210..ec609d50 100644 --- a/src/pages/api/register.ts +++ b/src/pages/api/register.ts @@ -69,7 +69,7 @@ async function registerIndividual(req: NextApiRequest, res: NextApiResponse) { type: email.endsWith("@ecrop.dev") ? "developer" : codeData ? codeData.type : "student", subscriptionExpirationDate: codeData ? codeData.expiryDate : moment().subtract(1, "days").toISOString(), ...(passport_id ? {demographicInformation: {passport_id}} : {}), - registrationDate: new Date(), + registrationDate: new Date().toISOString(), status: code ? "active" : "paymentDue", }; diff --git a/src/utils/index.ts b/src/utils/index.ts index cb52f2a1..8c3650f2 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,11 +1,11 @@ import moment from "moment"; export function dateSorter(a: any, b: any, direction: "asc" | "desc", key: string) { - if (!a[key] && b[key]) return direction === "asc" ? -1 : 1; - if (a[key] && !b[key]) return direction === "asc" ? 1 : -1; if (!a[key] && !b[key]) return 0; - if (moment(a[key]).isAfter(b[key])) return direction === "asc" ? -1 : 1; - if (moment(b[key]).isAfter(a[key])) return direction === "asc" ? 1 : -1; + if (a[key] && !b[key]) return direction === "asc" ? -1 : 1; + if (!a[key] && b[key]) return direction === "asc" ? 1 : -1; + if (moment(a[key]).isAfter(b[key])) return direction === "asc" ? 1 : -1; + if (moment(b[key]).isAfter(a[key])) return direction === "asc" ? -1 : 1; return 0; }