import { Module } from '@nestjs/common' import { CravaService, NotificationService, MessagingService, ReporterProcessorService, MailService, SendgridMailService, StorageService, SubscriptionModule, ContractModule, } from '../../services' import { AnthropometryRepository, AppointmentRepository, AvailabilityTimeRepository, BioimpedanceCreditRepository, BioimpedanceImportationRepository, CampaignMessageRepository, ConfigRepository, MessageRepository, NotificationRepository, SmartfitUnitRepository, UserRepository, } from '../../repositories' import { HttpService } from '../../services/http' import { PDFService } from '../../services/pdf' import { SMSModule } from '../../services/sms' import { BookingController, CreditsController, NotificationController, NutritionistController, PatientController, SubscriptionController, } from './controllers' import { Bookings, Credits, Notifications, Nutritionists, Patients, Subscriptions } from './domain' import { TranslateNotificationsHelper } from './i18n' const CONTROLLERS = [ NotificationController, BookingController, PatientController, SubscriptionController, NutritionistController, CreditsController, ] const SERVICES = [ { provide: MailService, useClass: SendgridMailService, }, HttpService, CravaService, NotificationService, MessagingService, StorageService, PDFService, TranslateNotificationsHelper, ] const REPOSITORIES = [ AnthropometryRepository, BioimpedanceCreditRepository, BioimpedanceImportationRepository, CampaignMessageRepository, ReporterProcessorService, AppointmentRepository, UserRepository, MessageRepository, NotificationRepository, AvailabilityTimeRepository, SmartfitUnitRepository, ConfigRepository, ] const DOMAINS = [Credits, Notifications, Bookings, Patients, Nutritionists, Subscriptions] @Module({ imports: [SubscriptionModule, SMSModule, ContractModule], controllers: [...CONTROLLERS], providers: [...SERVICES, ...REPOSITORIES, ...DOMAINS], }) export class NotificationModule {}