const AuthEmailService = require("./domain/AuthEmailService"); const FeedbackEmailService = require("./domain/FeedbackEmailService"); const ForumEmailService = require("./domain/ForumEmailService"); const MessagingEmailService = require("./domain/MessagingEmailService"); const CustomerServiceEmailService = require("./domain/CustomerServiceEmailService"); const RentalFlowEmailService = require("./domain/RentalFlowEmailService"); const RentalReminderEmailService = require("./domain/RentalReminderEmailService"); const UserEngagementEmailService = require("./domain/UserEngagementEmailService"); const AlphaInvitationEmailService = require("./domain/AlphaInvitationEmailService"); const PaymentEmailService = require("./domain/PaymentEmailService"); /** * EmailServices aggregates all domain-specific email services * This class provides a unified interface to access all email functionality */ class EmailServices { constructor() { // Initialize all domain services this.auth = new AuthEmailService(); this.feedback = new FeedbackEmailService(); this.forum = new ForumEmailService(); this.messaging = new MessagingEmailService(); this.customerService = new CustomerServiceEmailService(); this.rentalFlow = new RentalFlowEmailService(); this.rentalReminder = new RentalReminderEmailService(); this.userEngagement = new UserEngagementEmailService(); this.alphaInvitation = new AlphaInvitationEmailService(); this.payment = new PaymentEmailService(); this.initialized = false; } /** * Initialize all email services * @returns {Promise} */ async initialize() { if (this.initialized) return; await Promise.all([ this.auth.initialize(), this.feedback.initialize(), this.forum.initialize(), this.messaging.initialize(), this.customerService.initialize(), this.rentalFlow.initialize(), this.rentalReminder.initialize(), this.userEngagement.initialize(), this.alphaInvitation.initialize(), this.payment.initialize(), ]); this.initialized = true; console.log("All Email Services initialized successfully"); } } // Create and export singleton instance const emailServices = new EmailServices(); module.exports = emailServices;