From 0011c9d4e5fb5130f0d7bbb55bc19b12bdccd007 Mon Sep 17 00:00:00 2001 From: echo Date: Mon, 1 Dec 2025 20:07:48 +0100 Subject: [PATCH] currently check in implemented --- apps/admin/data/fitai.db | Bin 143360 -> 143360 bytes apps/admin/src/app/api/users/route.ts | 20 +++++++++- apps/admin/src/components/users/UserGrid.tsx | 37 ++++++++++++++++++ .../src/components/users/UserManagement.tsx | 2 + 4 files changed, 58 insertions(+), 1 deletion(-) diff --git a/apps/admin/data/fitai.db b/apps/admin/data/fitai.db index 84fa70b6649e50037fb9f2857c6e987a940f1a70..d779de0385e17737715168e0207a3318436826e4 100755 GIT binary patch delta 1395 zcma)6O=}xh6!mBtTQru&irkix1YJQ&qT(5AMxPc{iyiNR)0Q-Zx&-_ry%{|`GjBZa zjb*JINSji+Y0zT+Kz=}i7N*cev+J&fE?SaB4BmCoLKj{X3cVxSp*94voICfNd+s@R z=H7n#-hTSKi^}}I!8$&U-|&V@NkFPop4ORaLPWtm2$GJg26*idunXQP?N z#Z>wkl0Hs5G?y+E+U@*Qdx;8adsfpYy`bK)c6LmwY}Iu0EKg(oOugPRO{2b4U3Z4w znODc78|&lc@1LhuUw_1_sm2>WJW^+KT7F9VP5WGHYx!~ZM^(#a)PnMoKQ}7=d~jjX zI3z1yS?^0VaChXm76L^KAOA#)@~7&1rWgehm?dmcYELwmx7Qal+1U)4!MU7g7&D7 zwIR67ra}%~x&SusMj~nAJ~-5;A#uTG(x*ZIOK5F^7$I2~%b}3SN&`fNz`P*j+syyO zfj%X!>@PrqcZLf<{2sX6cjz{gLj&&6tF8+j>M$P$O!kvOG8x|GzF>U>9P-FmCCnW{rL1EmlJo@C0<#3QSb3o2cN1v?5_)ulhQ2-v>!CkhgLs6HDQC-96h(~*+qr}Zc zYtpwBF`p9yR+*3YfZ14O2RdXE!GgFR_fH5zj)#TSPRP4m?y@5qJXAbi7sP;42?2js z63Gp?<&*9v`eyuR+=PKeyhhsl|M%H!)oQJZWh|NXQ@Mz)O!OZ1tAc;zRv8z{2y$MWCUtSIoAXS2L*lF;PRcS4&d z`xhoK3vfD4X5XL)l#=A!?6~tb(`4_RT9bQs%4|;Bvxu2XfM1b;|2lspzwKs$1I+vr zHwa8tJpWh#ESwG$ZssrL_XbLeUHHofmc0L%S%A-QGW!FNk(_*+4c}ch1Ue#pI=cd+ mDp1IpclxCFj4Io^br~x^u`zNTWZ*go6yDCY{h$_;Ju3h@+CNtS diff --git a/apps/admin/src/app/api/users/route.ts b/apps/admin/src/app/api/users/route.ts index 54d0321..9cd102e 100644 --- a/apps/admin/src/app/api/users/route.ts +++ b/apps/admin/src/app/api/users/route.ts @@ -19,7 +19,25 @@ export async function GET(request: NextRequest) { users.map(async (user) => { const { password: _, ...userWithoutPassword } = user; const client = await db.getClientByUserId(user.id); - return { ...userWithoutPassword, client }; + + // Get active check-in status + let isCheckedIn = false; + let checkInTime = null; + + if (client) { + const activeCheckIn = await db.getActiveCheckIn(client.id); + if (activeCheckIn) { + isCheckedIn = true; + checkInTime = activeCheckIn.checkInTime; + } + } + + return { + ...userWithoutPassword, + client, + isCheckedIn, + checkInTime + }; }), ); diff --git a/apps/admin/src/components/users/UserGrid.tsx b/apps/admin/src/components/users/UserGrid.tsx index 6f0c3b9..9533350 100644 --- a/apps/admin/src/components/users/UserGrid.tsx +++ b/apps/admin/src/components/users/UserGrid.tsx @@ -9,6 +9,20 @@ import { formatDate } from "@/lib/utils"; ModuleRegistry.registerModules([AllCommunityModule]); +function getTimeAgo(date: Date): string { + const now = new Date(); + const diffMs = now.getTime() - date.getTime(); + const diffMins = Math.floor(diffMs / 60000); + const diffHours = Math.floor(diffMins / 60); + const diffDays = Math.floor(diffHours / 24); + + if (diffMins < 1) return 'just now'; + if (diffMins < 60) return `${diffMins}m ago`; + if (diffHours < 24) return `${diffHours}h ago`; + return `${diffDays}d ago`; +} + + interface User { id: string; email: string; @@ -17,6 +31,8 @@ interface User { role: string; phone?: string; createdAt: Date; + isCheckedIn?: boolean; + checkInTime?: Date; client?: { id: string; membershipType: string; @@ -152,6 +168,27 @@ export function UserGrid({ }, minWidth: 120, }, + { + headerName: "Currently Checked In", + valueGetter: (params) => params.data?.isCheckedIn, + filter: "agTextColumnFilter", + sortable: true, + cellRenderer: (params: any) => { + if (!params.data?.isCheckedIn) { + return ; + } + + const checkInTime = params.data.checkInTime ? new Date(params.data.checkInTime) : null; + const timeAgo = checkInTime ? getTimeAgo(checkInTime) : ''; + + return ( + + ✓ Checked In {timeAgo && `(${timeAgo})`} + + ); + }, + minWidth: 180, + }, { headerName: "Join Date", valueGetter: (params) => diff --git a/apps/admin/src/components/users/UserManagement.tsx b/apps/admin/src/components/users/UserManagement.tsx index f4ab707..cbd0203 100644 --- a/apps/admin/src/components/users/UserManagement.tsx +++ b/apps/admin/src/components/users/UserManagement.tsx @@ -13,6 +13,8 @@ interface User { role: string; phone?: string; createdAt: Date; + isCheckedIn?: boolean; + checkInTime?: Date; client?: { id: string; membershipType: string;