diff --git a/App/pelagia-portal/lib/notifier.ts b/App/pelagia-portal/lib/notifier.ts index 7878734..8b38ac3 100644 --- a/App/pelagia-portal/lib/notifier.ts +++ b/App/pelagia-portal/lib/notifier.ts @@ -109,11 +109,36 @@ function buildInAppBody( } function buildInAppLink( - _event: NotificationEvent, + event: NotificationEvent, po: PurchaseOrder & { submitter: User }, - _recipient: User + recipient: User ): string { - return `/po/${po.id}`; + const isManager = recipient.role === "MANAGER" || recipient.role === "SUPERUSER"; + const isAccounts = recipient.role === "ACCOUNTS"; + const isSubmitter = recipient.id === po.submitterId; + + switch (event) { + // Manager needs to act on the approval queue + case "PO_SUBMITTED": + case "VENDOR_ID_PROVIDED": + return isManager ? `/approvals/${po.id}` : `/po/${po.id}`; + + // Accounts needs to process payment; everyone else sees the PO + case "PO_APPROVED": + case "PO_APPROVED_WITH_NOTE": + return isAccounts ? `/payments` : `/po/${po.id}`; + + // Submitter needs to open the edit form + case "EDITS_REQUESTED": + return isSubmitter ? `/po/${po.id}/edit` : `/po/${po.id}`; + + // Submitter needs to confirm receipt + case "PAYMENT_SENT": + return isSubmitter ? `/po/${po.id}/receipt` : `/po/${po.id}`; + + default: + return `/po/${po.id}`; + } } // ── Email subject ─────────────────────────────────────────────────────────────