diff --git a/app/home/(user)/_components/orders/actions.ts b/app/home/(user)/_components/orders/actions.ts
new file mode 100644
index 0000000..d201507
--- /dev/null
+++ b/app/home/(user)/_components/orders/actions.ts
@@ -0,0 +1,18 @@
+'use server';
+
+import { createPageViewLog, PageViewAction } from "~/lib/services/audit/pageView.service";
+import { loadCurrentUserAccount } from "../../_lib/server/load-user-account";
+
+export async function logAnalysisResultsNavigateAction(analysisOrderId: string) {
+ const account = await loadCurrentUserAccount();
+ if (!account) {
+ throw new Error('Account not found');
+ }
+ await createPageViewLog({
+ accountId: account.id,
+ action: PageViewAction.VIEW_ANALYSIS_RESULTS_FROM_ORDER,
+ extraData: {
+ analysisOrderId,
+ },
+ });
+}
diff --git a/app/home/(user)/_components/orders/order-items-table.tsx b/app/home/(user)/_components/orders/order-items-table.tsx
index 48d502a..096ad06 100644
--- a/app/home/(user)/_components/orders/order-items-table.tsx
+++ b/app/home/(user)/_components/orders/order-items-table.tsx
@@ -1,3 +1,5 @@
+'use client';
+
import { Trans } from '@kit/ui/trans';
import {
Table,
@@ -10,18 +12,26 @@ import {
import { StoreOrderLineItem } from "@medusajs/types";
import { AnalysisOrder } from '~/lib/services/order.service';
import { formatDate } from 'date-fns';
-import Link from 'next/link';
import { Eye } from 'lucide-react';
+import { useRouter } from 'next/navigation';
+import { logAnalysisResultsNavigateAction } from './actions';
export default function OrderItemsTable({ items, title, analysisOrder }: {
items: StoreOrderLineItem[];
title: string;
analysisOrder: AnalysisOrder;
}) {
+ const router = useRouter();
+
if (!items || items.length === 0) {
return null;
}
+ const openAnalysisResults = async () => {
+ await logAnalysisResultsNavigateAction(analysisOrder.medusa_order_id);
+ router.push(`/home/analysis-results`);
+ }
+
return (
@@ -60,13 +70,12 @@ export default function OrderItemsTable({ items, title, analysisOrder }: {
-
-
-
+
diff --git a/lib/services/audit/pageView.service.ts b/lib/services/audit/pageView.service.ts
index f4e70f6..efac5db 100644
--- a/lib/services/audit/pageView.service.ts
+++ b/lib/services/audit/pageView.service.ts
@@ -2,6 +2,7 @@ import { getSupabaseServerClient } from '@kit/supabase/server-client';
export enum PageViewAction {
VIEW_ANALYSIS_RESULTS = 'VIEW_ANALYSIS_RESULTS',
+ VIEW_ANALYSIS_RESULTS_FROM_ORDER = 'VIEW_ANALYSIS_RESULTS_FROM_ORDER',
REGISTRATION_SUCCESS = 'REGISTRATION_SUCCESS',
VIEW_ORDER_ANALYSIS = 'VIEW_ORDER_ANALYSIS',
VIEW_TEAM_ACCOUNT_DASHBOARD = 'VIEW_TEAM_ACCOUNT_DASHBOARD',
@@ -10,9 +11,11 @@ export enum PageViewAction {
export const createPageViewLog = async ({
accountId,
action,
+ extraData,
}: {
accountId: string;
action: PageViewAction;
+ extraData?: Record;
}) => {
try {
const supabase = getSupabaseServerClient();
@@ -34,6 +37,7 @@ export const createPageViewLog = async ({
account_id: accountId,
action,
changed_by: user.id,
+ extra_data: extraData,
})
.throwOnError();
} catch (error) {
diff --git a/packages/supabase/src/database.types.ts b/packages/supabase/src/database.types.ts
index 1963dbf..0002c36 100644
--- a/packages/supabase/src/database.types.ts
+++ b/packages/supabase/src/database.types.ts
@@ -115,6 +115,7 @@ export type Database = {
changed_by: string
created_at: string
id: number
+ extra_data?: Json | null
}
Insert: {
account_id: string
@@ -122,6 +123,7 @@ export type Database = {
changed_by: string
created_at?: string
id?: number
+ extra_data?: Json | null
}
Update: {
account_id?: string
@@ -129,6 +131,7 @@ export type Database = {
changed_by?: string
created_at?: string
id?: number
+ extra_data?: Json | null
}
Relationships: []
}
diff --git a/supabase/migrations/20250828123119_page_views_extra_data.sql b/supabase/migrations/20250828123119_page_views_extra_data.sql
new file mode 100644
index 0000000..69f1e3d
--- /dev/null
+++ b/supabase/migrations/20250828123119_page_views_extra_data.sql
@@ -0,0 +1 @@
+ALTER TABLE audit.page_views ADD COLUMN extra_data JSONB;