diff --git a/app/app/api/public-cloud/products/[licencePlate]/sign-mou/route.ts b/app/app/api/public-cloud/products/[licencePlate]/sign-mou/route.ts index 522da5117..f0dfb1596 100644 --- a/app/app/api/public-cloud/products/[licencePlate]/sign-mou/route.ts +++ b/app/app/api/public-cloud/products/[licencePlate]/sign-mou/route.ts @@ -1,4 +1,4 @@ -import { RequestType, TaskStatus, TaskType } from '@prisma/client'; +import { Prisma, RequestType, TaskStatus, TaskType } from '@prisma/client'; import { z } from 'zod'; import { GlobalRole } from '@/constants'; import createApiHandler from '@/core/api-handler'; @@ -44,13 +44,14 @@ export const POST = apiHandler(async ({ pathParams, body, session }) => { tasks.close(TaskType.SIGN_PUBLIC_CLOUD_MOU, { licencePlate, session }), ]); - const request = await prisma.publicCloudRequest.findFirst({ - where: { type: RequestType.CREATE, licencePlate, active: true }, + const recentRequest = await prisma.publicCloudRequest.findFirst({ + where: { licencePlate, OR: [{ type: RequestType.CREATE, active: true }, { active: false }] }, include: publicCloudRequestDetailInclude, + orderBy: { createdAt: Prisma.SortOrder.desc }, }); - if (request) { - const requestDecorated = await models.publicCloudRequest.decorate(request, session, true); + if (recentRequest) { + const requestDecorated = await models.publicCloudRequest.decorate(recentRequest, session, true); await tasks.create(TaskType.REVIEW_PUBLIC_CLOUD_MOU, { billing: billingUpdated, request: requestDecorated }); } diff --git a/app/emails/_templates/public-cloud/BillingReviewerMou.tsx b/app/emails/_templates/public-cloud/BillingReviewerMou.tsx index 42678399b..297f10428 100644 --- a/app/emails/_templates/public-cloud/BillingReviewerMou.tsx +++ b/app/emails/_templates/public-cloud/BillingReviewerMou.tsx @@ -12,10 +12,15 @@ interface Props { export default function BillingReviewerMou({ request }: Props) { if (!request) return <>; - const { name, expenseAuthority, billing } = request.decisionData; - + const { licencePlate, decisionData, active } = request; + const { name, expenseAuthority, billing } = decisionData; const { accountCoding } = billing; + const productExists = !active; + const linkUrl = productExists + ? `/public-cloud/products/${licencePlate}/edit` + : `/public-cloud/requests/${request.id}/request`; + return ( eMOU review request @@ -25,9 +30,9 @@ export default function BillingReviewerMou({ request }: Props) { the product {name} on the Public Cloud. - Review Request + Review Request - +
Account Coding: diff --git a/app/services/db/tasks/review-public-cloud-mou.ts b/app/services/db/tasks/review-public-cloud-mou.ts index 5a2f1df54..4601b755d 100644 --- a/app/services/db/tasks/review-public-cloud-mou.ts +++ b/app/services/db/tasks/review-public-cloud-mou.ts @@ -3,18 +3,17 @@ import { Session } from 'next-auth'; import { GlobalPermissions, GlobalRole } from '@/constants'; import prisma from '@/core/prisma'; import { sendBillingReviewerMou } from '@/services/ches/public-cloud/emails'; -import { BillingGetPayload } from '@/types/billing'; import { PublicCloudRequestDetailDecorated } from '@/types/public-cloud'; const type = TaskType.REVIEW_PUBLIC_CLOUD_MOU; export interface CreateReviewPublicCloudMouTaskData { - billing: BillingGetPayload; - request?: PublicCloudRequestDetailDecorated; + request: PublicCloudRequestDetailDecorated; } export async function createReviewPublicCloudMouTask(data: CreateReviewPublicCloudMouTaskData) { - const { billing, request } = data; + const { request } = data; + const { billing } = request.decisionData; if (!billing.signed || billing.approved) { return null; @@ -31,7 +30,7 @@ export async function createReviewPublicCloudMouTask(data: CreateReviewPublicClo }, }); - const emailProm = request ? sendBillingReviewerMou(request) : null; + const emailProm = sendBillingReviewerMou(request); const [task] = await Promise.all([taskProm, emailProm]); return task;