From c9b507f96932dae327894aee6e8a50511c846f54 Mon Sep 17 00:00:00 2001
From: Mayank Mishra
Date: Thu, 18 Dec 2025 16:55:57 +0530
Subject: [PATCH] Enhance rejection email content with clickable link for
application access
---
prisma/schema.prisma | 248 +++++++++++-------
.../services/rejectionMailtoHost.service.ts | 6 +-
2 files changed, 156 insertions(+), 98 deletions(-)
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 4db51d4..e902b9c 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -67,6 +67,11 @@ model User {
userAddressDetails UserAddressDetails[]
userDocuments UserDocuments[]
activityTracks ActivityTrack[]
+ // 🔹 Activities created by this user
+ createdActivities Activities[] @relation("UserActivities")
+
+ // 🔹 Activities where this user is Account Manager
+ managedActivities Activities[] @relation("ActivityAccountManager")
@@map("users")
@@schema("usr")
@@ -394,12 +399,13 @@ model DocumentType {
}
model FoodCuisines {
- id Int @id @default(autoincrement())
- cuisineName String @unique @map("cuisine_name") @db.VarChar(30)
- isActive Boolean @default(true) @map("is_active")
- createdAt DateTime @default(now()) @map("created_at")
- updatedAt DateTime @updatedAt @map("updated_at")
- deletedAt DateTime? @map("deleted_at")
+ id Int @id @default(autoincrement())
+ cuisineName String @unique @map("cuisine_name") @db.VarChar(30)
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
+ activityCuisines ActivityCuisine[]
@@map("food_cuisines")
@@schema("mst")
@@ -434,13 +440,14 @@ model Amenities {
}
model FoodTypes {
- id Int @id @default(autoincrement())
- foodTypeName String @unique @map("food_type_name") @db.VarChar(30)
- isActive Boolean @default(true) @map("is_active")
- createdAt DateTime @default(now()) @map("created_at")
- updatedAt DateTime @updatedAt @map("updated_at")
- deletedAt DateTime? @map("deleted_at")
- ActivityFoodDetails ActivityFoodDetails[]
+ id Int @id @default(autoincrement())
+ foodTypeName String @unique @map("food_type_name") @db.VarChar(30)
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
+ ActivityFoodCost ActivityFoodCost[]
+ activityFoodTypes ActivityFoodTypes[]
@@map("food_types")
@@schema("mst")
@@ -614,6 +621,7 @@ model EnergyLevels {
id Int @id @default(autoincrement())
energyLevelName String @map("energy_level_name") @db.VarChar(30)
energyIcon String @map("energy_icon") @db.VarChar(400)
+ energyColor String @map("energy_color") @db.VarChar(20)
isActive Boolean @default(true) @map("is_active")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@ -844,38 +852,45 @@ model HostTrack {
// ACTIVITY MODELS
model Activities {
- id Int @id @default(autoincrement())
- hostXid Int @map("host_xid")
- host HostHeader @relation(fields: [hostXid], references: [id], onDelete: Cascade)
- activityTypeXid Int @map("activity_type_xid")
- activityType ActivityTypes @relation(fields: [activityTypeXid], references: [id], onDelete: Restrict)
- frequenciesXid Int? @map("frequencies_xid")
- frequency Frequencies? @relation(fields: [frequenciesXid], references: [id], onDelete: Restrict)
- activityRefNumber String? @map("activity_ref_number") @db.VarChar(30)
- activityTitle String? @map("activity_title") @db.VarChar(30)
- activityDescription String? @map("activity_description") @db.VarChar(80)
- checkInLat Float? @map("check_in_lat")
- checkInLong Float? @map("check_in_long")
- checkInAddress String? @map("check_in_address") @db.VarChar(150)
- isCheckOutSame Boolean? @default(true) @map("is_check_out_same")
- checkOutLat Float? @map("check_out_lat")
- checkOutLong Float? @map("check_out_long")
- checkOutAddress String? @map("check_out_address") @db.VarChar(150)
- energyLevelXid Int? @map("energy_level_xid")
- energyLevel EnergyLevels? @relation(fields: [energyLevelXid], references: [id], onDelete: Restrict)
- activityDurationMins Int? @map("activity_duration_mins")
- foodAvailable Boolean? @default(false) @map("food_available")
- foodIsChargeable Boolean? @default(false) @map("food_is_chargeable")
- alcoholAvailable Boolean? @default(false) @map("alcohol_available")
- trainerAvailable Boolean? @default(false) @map("trainer_available")
- trainerIsChargeable Boolean? @default(false) @map("trainer_is_chargeable")
- pickUpDropAvailable Boolean? @default(false) @map("pick_up_drop_available")
- pickUpDropIsChargeable Boolean? @default(false) @map("pick_up_drop_is_chargeable")
- inActivityAvailable Boolean? @default(false) @map("in_activity_available")
- inActivityIsChargeable Boolean? @default(false) @map("in_activity_is_chargeable")
- equipmentAvailable Boolean? @default(false) @map("equipment_available")
- equipmentIsChargeable Boolean? @default(false) @map("equipment_is_chargeable")
- cancellationAvailable Boolean? @default(false) @map("cancellation_available")
+ id Int @id @default(autoincrement())
+ hostXid Int @map("host_xid")
+ host HostHeader @relation(fields: [hostXid], references: [id], onDelete: Cascade)
+ activityTypeXid Int @map("activity_type_xid")
+ activityType ActivityTypes @relation(fields: [activityTypeXid], references: [id], onDelete: Restrict)
+ frequenciesXid Int? @map("frequencies_xid")
+ frequency Frequencies? @relation(fields: [frequenciesXid], references: [id], onDelete: Restrict)
+ activityRefNumber String? @map("activity_ref_number") @db.VarChar(30)
+ activityTitle String? @map("activity_title") @db.VarChar(30)
+ activityDescription String? @map("activity_description") @db.VarChar(80)
+ checkInLat Float? @map("check_in_lat")
+ checkInLong Float? @map("check_in_long")
+ checkInAddress String? @map("check_in_address") @db.VarChar(150)
+ isCheckOutSame Boolean? @default(true) @map("is_check_out_same")
+ checkOutLat Float? @map("check_out_lat")
+ checkOutLong Float? @map("check_out_long")
+ checkOutAddress String? @map("check_out_address") @db.VarChar(150)
+ energyLevelXid Int? @map("energy_level_xid")
+ energyLevel EnergyLevels? @relation(fields: [energyLevelXid], references: [id], onDelete: Restrict)
+ activityDurationMins Int? @map("activity_duration_mins")
+ foodAvailable Boolean? @default(false) @map("food_available")
+ foodIsChargeable Boolean? @default(false) @map("food_is_chargeable")
+ alcoholAvailable Boolean? @default(false) @map("alcohol_available")
+ trainerAvailable Boolean? @default(false) @map("trainer_available")
+ trainerIsChargeable Boolean? @default(false) @map("trainer_is_chargeable")
+ pickUpDropAvailable Boolean? @default(false) @map("pick_up_drop_available")
+ pickUpDropIsChargeable Boolean? @default(false) @map("pick_up_drop_is_chargeable")
+ inActivityAvailable Boolean? @default(false) @map("in_activity_available")
+ inActivityIsChargeable Boolean? @default(false) @map("in_activity_is_chargeable")
+ equipmentAvailable Boolean? @default(false) @map("equipment_available")
+ equipmentIsChargeable Boolean? @default(false) @map("equipment_is_chargeable")
+ cancellationAvailable Boolean? @default(false) @map("cancellation_available")
+ // 🔹 Creator / owner
+ userId Int?
+ user User? @relation("UserActivities", fields: [userId], references: [id])
+
+ // 🔹 Account Manager
+ accountManagerXid Int?
+ accountManager User? @relation("ActivityAccountManager", fields: [accountManagerXid], references: [id], onDelete: Restrict)
cancellationAllowedBeforeMins Int? @map("cancellation_allowed_before_mins")
currencyXid Int? @map("currency_xid")
currencies Currencies? @relation(fields: [currencyXid], references: [id], onDelete: Restrict)
@@ -902,7 +917,7 @@ model Activities {
ActivityVenueArtifacts ActivityVenueArtifacts[]
ActivityPQQheader ActivityPQQheader[]
ActivityAllowedEntry ActivityAllowedEntry[]
- ActivityFoodDetails ActivityFoodDetails[]
+ ActivityFoodCost ActivityFoodCost[]
ActivityEquipments ActivityEquipments[]
ActivityNavigationModes ActivityNavigationModes[]
ActivityPickUpDetails ActivityPickUpDetails[]
@@ -911,6 +926,9 @@ model Activities {
ScheduleHeader ScheduleHeader[]
ItineraryActivities ItineraryActivities[]
activityTracks ActivityTrack[]
+ activityFoodTypes ActivityFoodTypes[]
+ activityCuisines ActivityCuisine[]
+ activityPickUpTransports ActivityPickUpTransport[]
@@map("activities")
@@schema("act")
@@ -920,7 +938,6 @@ model ActivityOtherDetails {
id Int @id @default(autoincrement())
activityXid Int @map("activity_xid")
activity Activities @relation(fields: [activityXid], references: [id], onDelete: Cascade)
- foodCuisines String? @map("food_cuisines") @db.VarChar(30)
exclusiveNotes String? @map("exclusive_notes") @db.VarChar(50)
dosNotes String? @map("dos_notes") @db.VarChar(200)
dontsNotes String? @map("donts_notes") @db.VarChar(200)
@@ -1036,10 +1053,14 @@ model ActivityEligibility {
weightRestrictionName String? @map("weight_restriction_name") @db.VarChar(30)
weightEntered Int? @map("weight_entered")
weightIn String? @map("weight_in") @db.VarChar(30)
+ minWeight Int? @map("min_weight")
+ maxWeight Int? @map("max_weight")
isHeightRestriction Boolean @default(false) @map("is_height_restriction")
heightRestrictionName String? @map("height_restriction_name") @db.VarChar(30)
heightEntered Int? @map("height_entered")
heightIn String? @map("height_in") @db.VarChar(30)
+ minHeight Int? @map("min_height")
+ maxHeight Int? @map("max_height")
isActive Boolean @default(true) @map("is_active")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@ -1204,12 +1225,10 @@ model ActivityAllowedEntry {
@@schema("act")
}
-model ActivityFoodDetails {
+model ActivityFoodCost {
id Int @id @default(autoincrement())
activityXid Int @map("activity_xid")
activity Activities @relation(fields: [activityXid], references: [id], onDelete: Cascade)
- foodTypeXid Int @map("food_type_xid")
- foodType FoodTypes @relation(fields: [foodTypeXid], references: [id], onDelete: Restrict)
baseAmount Int @map("base_amount")
totalAmount Int @map("total_amount")
isActive Boolean @default(true) @map("is_active")
@@ -1217,23 +1236,55 @@ model ActivityFoodDetails {
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
ActivityFoodTaxes ActivityFoodTaxes[]
+ foodTypes FoodTypes? @relation(fields: [foodTypesId], references: [id])
+ foodTypesId Int?
- @@map("activity_food_details")
+ @@map("activity_food_cost")
+ @@schema("act")
+}
+
+model ActivityFoodTypes {
+ id Int @id @default(autoincrement())
+ activityXid Int @map("activity_xid")
+ activity Activities @relation(fields: [activityXid], references: [id], onDelete: Cascade)
+ foodTypeXid Int @map("food_type_xid")
+ foodType FoodTypes @relation(fields: [foodTypeXid], references: [id], onDelete: Restrict)
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
+
+ @@map("activity_food_types")
+ @@schema("act")
+}
+
+model ActivityCuisine {
+ id Int @id @default(autoincrement())
+ activityXid Int @map("activity_xid")
+ activity Activities @relation(fields: [activityXid], references: [id], onDelete: Cascade)
+ foodCuisineXid Int @map("food_cuisine_xid")
+ foodCuisine FoodCuisines @relation(fields: [foodCuisineXid], references: [id], onDelete: Restrict)
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
+
+ @@map("activity_cuisine")
@@schema("act")
}
model ActivityFoodTaxes {
- id Int @id @default(autoincrement())
- activityFoodDetailsXid Int @map("activity_food_details_xid")
- activityFoodDetails ActivityFoodDetails @relation(fields: [activityFoodDetailsXid], references: [id], onDelete: Cascade)
- taxXid Int @map("tax_xid")
- taxes Taxes @relation(fields: [taxXid], references: [id], onDelete: Restrict)
- taxPer Float @map("tax_per")
- taxAmount Int @map("tax_amount")
- isActive Boolean @default(true) @map("is_active")
- createdAt DateTime @default(now()) @map("created_at")
- updatedAt DateTime @updatedAt @map("updated_at")
- deletedAt DateTime? @map("deleted_at")
+ id Int @id @default(autoincrement())
+ activityFoodCostXid Int @map("activity_food_cost_xid")
+ activityFoodCost ActivityFoodCost @relation(fields: [activityFoodCostXid], references: [id], onDelete: Cascade)
+ taxXid Int @map("tax_xid")
+ taxes Taxes @relation(fields: [taxXid], references: [id], onDelete: Restrict)
+ taxPer Float @map("tax_per")
+ taxAmount Int @map("tax_amount")
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
@@map("activity_food_taxes")
@@schema("act")
@@ -1310,54 +1361,57 @@ model ActivityNavigationModesTaxes {
}
model ActivityPickUpDetails {
- id Int @id @default(autoincrement())
- activityXid Int @map("activity_xid")
- activity Activities @relation(fields: [activityXid], references: [id], onDelete: Cascade)
- isPickUp Boolean @default(false) @map("is_pick_up")
- locationLat Float? @map("location_lat")
- locationLong Float? @map("location_long")
- locationAddress String? @map("location_address") @db.VarChar(150)
- isActive Boolean @default(true) @map("is_active")
- createdAt DateTime @default(now()) @map("created_at")
- updatedAt DateTime @updatedAt @map("updated_at")
- deletedAt DateTime? @map("deleted_at")
- ActivityPickUpTransport ActivityPickUpTransport[]
-
- @@map("activity_pick_up_details")
- @@schema("act")
-}
-
-model ActivityPickUpTransport {
id Int @id @default(autoincrement())
- activityPickUpDetailsXid Int @map("activity_pick_up_details_xid")
- activityPickUpDetails ActivityPickUpDetails @relation(fields: [activityPickUpDetailsXid], references: [id], onDelete: Cascade)
- transportModeXid Int @map("transport_mode_xid")
- transportMode TransportModes @relation(fields: [transportModeXid], references: [id], onDelete: Restrict)
- isTransportModeChargeable Boolean @default(false) @map("is_transport_mode_chargeable")
+ activityPickUpTransportXid Int @map("activity_pick_up_transport_xid")
+ activityPickUpTransport ActivityPickUpTransport @relation(fields: [activityPickUpTransportXid], references: [id], onDelete: Cascade)
+ isPickUp Boolean @default(false) @map("is_pick_up")
+ locationLat Float? @map("location_lat")
+ locationLong Float? @map("location_long")
+ locationAddress String? @map("location_address") @db.VarChar(150)
transportBasePrice Int @map("transport_base_price")
transportTotalPrice Int @map("transport_total_price")
isActive Boolean @default(true) @map("is_active")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
- ActivityPickUpTransportTaxes ActivityPickUpTransportTaxes[]
+ activities Activities? @relation(fields: [activitiesId], references: [id])
+ activitiesId Int?
+ activityPickUpTransportTaxes ActivityPickUpTransportTaxes[]
+
+ @@map("activity_pick_up_details")
+ @@schema("act")
+}
+
+model ActivityPickUpTransport {
+ id Int @id @default(autoincrement())
+ activityXid Int @map("activity_xid")
+ activity Activities @relation(fields: [activityXid], references: [id], onDelete: Cascade)
+ transportModeXid Int @map("transport_mode_xid")
+ transportMode TransportModes @relation(fields: [transportModeXid], references: [id], onDelete: Restrict)
+ isTransportModeChargeable Boolean @default(false) @map("is_transport_mode_chargeable")
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
+
+ pickupDetails ActivityPickUpDetails[]
@@map("activity_pick_up_transport")
@@schema("act")
}
model ActivityPickUpTransportTaxes {
- id Int @id @default(autoincrement())
- activityPickUpTransportXid Int @map("activity_pick_up_transport_xid")
- activityPickUpTransport ActivityPickUpTransport @relation(fields: [activityPickUpTransportXid], references: [id], onDelete: Cascade)
- taxXid Int @map("tax_xid")
- taxes Taxes @relation(fields: [taxXid], references: [id], onDelete: Restrict)
- taxPer Float @map("tax_per")
- taxAmount Int @map("tax_amount")
- isActive Boolean @default(true) @map("is_active")
- createdAt DateTime @default(now()) @map("created_at")
- updatedAt DateTime @updatedAt @map("updated_at")
- deletedAt DateTime? @map("deleted_at")
+ id Int @id @default(autoincrement())
+ activityPickUpDetailsXid Int @map("activity_pick_up_details_xid")
+ activityPickUpDetails ActivityPickUpDetails @relation(fields: [activityPickUpDetailsXid], references: [id], onDelete: Cascade)
+ taxXid Int @map("tax_xid")
+ taxes Taxes @relation(fields: [taxXid], references: [id], onDelete: Restrict)
+ taxPer Float @map("tax_per")
+ taxAmount Int @map("tax_amount")
+ isActive Boolean @default(true) @map("is_active")
+ createdAt DateTime @default(now()) @map("created_at")
+ updatedAt DateTime @updatedAt @map("updated_at")
+ deletedAt DateTime? @map("deleted_at")
@@map("activity_pick_up_transport_taxes")
@@schema("act")
diff --git a/src/modules/minglaradmin/services/rejectionMailtoHost.service.ts b/src/modules/minglaradmin/services/rejectionMailtoHost.service.ts
index 6170b41..8f50509 100644
--- a/src/modules/minglaradmin/services/rejectionMailtoHost.service.ts
+++ b/src/modules/minglaradmin/services/rejectionMailtoHost.service.ts
@@ -52,7 +52,11 @@ export async function sendAMRejectionMailtoHost(
Your account manager has reviewed your application and provided some suggestions.
Please make the necessary improvements and re-submit your application to proceed with the onboarding process on Minglar.
You may access your application using the link below:
- Link: ${config.HOST_LINK}
+ Link:
+
+ ${config.HOST_LINK}
+
+
If you have any questions, please feel free to contact the Minglar Support Team.
Best regards,
Minglar Team