admin can soft delete listings

This commit is contained in:
jackiettran
2025-11-20 17:14:40 -05:00
parent 88c831419c
commit b2f18d77f6
11 changed files with 773 additions and 22 deletions

View File

@@ -54,6 +54,7 @@ class TemplateManager {
"rentalCompletionCongratsToOwner.html",
"payoutReceivedToOwner.html",
"firstListingCelebrationToOwner.html",
"itemDeletionToOwner.html",
"alphaInvitationToUser.html",
"feedbackConfirmationToUser.html",
"feedbackNotificationToAdmin.html",

View File

@@ -72,6 +72,52 @@ class UserEngagementEmailService {
return { success: false, error: error.message };
}
}
/**
* Send item deletion notification email to owner
* @param {Object} owner - Owner user object
* @param {string} owner.firstName - Owner's first name
* @param {string} owner.email - Owner's email address
* @param {Object} item - Item object
* @param {number} item.id - Item ID
* @param {string} item.name - Item name
* @param {string} deletionReason - Reason for deletion
* @returns {Promise<{success: boolean, messageId?: string, error?: string}>}
*/
async sendItemDeletionNotificationToOwner(owner, item, deletionReason) {
if (!this.initialized) {
await this.initialize();
}
try {
const frontendUrl = process.env.FRONTEND_URL || "http://localhost:3000";
const supportEmail = process.env.SUPPORT_EMAIL;
const variables = {
ownerName: owner.firstName || "there",
itemName: item.name,
deletionReason,
supportEmail,
dashboardUrl: `${frontendUrl}/owning`,
};
const htmlContent = await this.templateManager.renderTemplate(
"itemDeletionToOwner",
variables
);
const subject = `Important: Your listing "${item.name}" has been removed`;
return await this.emailClient.sendEmail(
owner.email,
subject,
htmlContent
);
} catch (error) {
console.error("Failed to send item deletion notification email:", error);
return { success: false, error: error.message };
}
}
}
module.exports = UserEngagementEmailService;