added reason in cancel api
This commit is contained in:
@@ -1779,6 +1779,7 @@ model ItineraryHeader {
|
||||
toDate DateTime @map("to_date")
|
||||
toTime String @map("to_time") @db.VarChar(30)
|
||||
itineraryStatus String @default("draft") @map("itinerary_status") @db.VarChar(30)
|
||||
cancellationReason String? @map("cancellation_reason")
|
||||
isActive Boolean @default(true) @map("is_active")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@ -39,14 +39,21 @@ export const handler = safeHandler(async (
|
||||
body.itineraryHeaderXid !== undefined && body.itineraryHeaderXid !== null
|
||||
? Number(body.itineraryHeaderXid)
|
||||
: NaN;
|
||||
const reason =
|
||||
typeof body.reason === 'string' ? body.reason.trim() : '';
|
||||
|
||||
if (!Number.isInteger(itineraryHeaderXid) || itineraryHeaderXid <= 0) {
|
||||
throw new ApiError(400, 'Invalid itineraryHeaderXid.');
|
||||
}
|
||||
|
||||
if (!reason) {
|
||||
throw new ApiError(400, 'Cancellation reason is required.');
|
||||
}
|
||||
|
||||
const result = await itineraryService.cancelUserItinerary(
|
||||
userId,
|
||||
itineraryHeaderXid,
|
||||
reason,
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -2462,7 +2462,11 @@ export class ItineraryService {
|
||||
};
|
||||
}
|
||||
|
||||
async cancelUserItinerary(userXid: number, itineraryHeaderXid: number) {
|
||||
async cancelUserItinerary(
|
||||
userXid: number,
|
||||
itineraryHeaderXid: number,
|
||||
cancellationReason: string,
|
||||
) {
|
||||
return this.prisma.$transaction(async (tx) => {
|
||||
const itinerary = await tx.itineraryHeader.findFirst({
|
||||
where: {
|
||||
@@ -2638,29 +2642,23 @@ export class ItineraryService {
|
||||
},
|
||||
});
|
||||
|
||||
const cancelledItinerary = await tx.itineraryHeader.update({
|
||||
where: {
|
||||
id: itineraryHeaderXid,
|
||||
},
|
||||
data: {
|
||||
isActive: false,
|
||||
itineraryStatus: 'cancelled',
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
itineraryNo: true,
|
||||
title: true,
|
||||
itineraryStatus: true,
|
||||
isActive: true,
|
||||
},
|
||||
});
|
||||
await tx.$executeRaw`
|
||||
UPDATE "itn"."itinerary_header"
|
||||
SET
|
||||
"is_active" = false,
|
||||
"itinerary_status" = 'cancelled',
|
||||
"cancellation_reason" = ${cancellationReason},
|
||||
"updated_at" = NOW()
|
||||
WHERE "id" = ${itineraryHeaderXid}
|
||||
`;
|
||||
|
||||
return {
|
||||
itineraryHeaderXid: cancelledItinerary.id,
|
||||
itineraryNo: cancelledItinerary.itineraryNo,
|
||||
title: cancelledItinerary.title,
|
||||
itineraryStatus: cancelledItinerary.itineraryStatus,
|
||||
isActive: cancelledItinerary.isActive,
|
||||
itineraryHeaderXid: itinerary.id,
|
||||
itineraryNo: itinerary.itineraryNo,
|
||||
title: itinerary.title,
|
||||
itineraryStatus: 'cancelled',
|
||||
cancellationReason,
|
||||
isActive: false,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user