import { Global, Module } from '@nestjs/common'; import { CqrsModule } from '@nestjs/cqrs'; import { ProjectController } from './controllers'; import { ProjectService } from './services'; import { ProjectRepository } from '@app/common/modules/project/repositiories'; import { CreateOrphanSpaceHandler } from './handler'; import { InviteSpaceRepository, SpaceLinkRepository, SpaceProductAllocationRepository, SpaceRepository, TagRepository, } from '@app/common/modules/space'; import { CommunityRepository } from '@app/common/modules/community/repositories'; import { InviteUserRepository } from '@app/common/modules/Invite-user/repositiories'; import { ProjectUserController } from './controllers/project-user.controller'; import { ProjectUserService } from './services/project-user.service'; import { UserRepository, UserSpaceRepository, } from '@app/common/modules/user/repositories'; import { SpaceLinkService, SpaceService, SubspaceDeviceService, SubSpaceService, ValidationService, } from 'src/space/services'; import { TagService } from 'src/tags/services'; import { SpaceModelService, SubSpaceModelService, } from 'src/space-model/services'; import { DeviceService } from 'src/device/services'; import { SpaceProductAllocationService } from 'src/space/services/space-product-allocation.service'; import { SubspaceProductAllocationRepository, SubspaceRepository, } from '@app/common/modules/space/repositories/subspace.repository'; import { SubspaceProductAllocationService } from 'src/space/services/subspace/subspace-product-allocation.service'; import { CommunityService } from 'src/community/services'; import { SpaceModelProductAllocationRepoitory, SpaceModelRepository, SubspaceModelProductAllocationRepoitory, SubspaceModelRepository, } from '@app/common/modules/space-model'; import { DeviceRepository } from '@app/common/modules/device/repositories'; import { NewTagRepository } from '@app/common/modules/tag/repositories/tag-repository'; import { ProductRepository } from '@app/common/modules/product/repositories'; import { SpaceModelProductAllocationService } from 'src/space-model/services/space-model-product-allocation.service'; import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service'; import { SceneService } from 'src/scene/services'; import { TuyaService } from '@app/common/integrations/tuya/services/tuya.service'; import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-product-allocation.service'; import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories'; import { SceneIconRepository, SceneRepository, } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; import { PowerClampDailyRepository, PowerClampHourlyRepository, PowerClampMonthlyRepository, } from '@app/common/modules/power-clamp/repositories'; import { SqlLoaderService } from '@app/common/helper/services/sql-loader.service'; import { OccupancyService } from '@app/common/helper/services/occupancy.service'; import { AqiDataService } from '@app/common/helper/services/aqi.data.service'; const CommandHandlers = [CreateOrphanSpaceHandler]; @Global() @Module({ imports: [CqrsModule], controllers: [ProjectController, ProjectUserController], providers: [ ...CommandHandlers, SpaceRepository, CommunityRepository, ProjectService, ProjectUserService, ProjectRepository, InviteUserRepository, UserSpaceRepository, UserRepository, SpaceService, InviteSpaceRepository, SpaceLinkService, SubSpaceService, ValidationService, TagService, SpaceModelService, DeviceService, SpaceProductAllocationService, SpaceLinkRepository, SubspaceRepository, SubspaceDeviceService, SubspaceProductAllocationService, CommunityService, SpaceModelRepository, DeviceRepository, NewTagRepository, ProductRepository, SubSpaceModelService, SpaceModelProductAllocationService, SpaceProductAllocationRepository, SubspaceProductAllocationRepository, SceneDeviceRepository, DeviceStatusFirebaseService, SceneService, TuyaService, TagRepository, SubspaceModelRepository, SubspaceModelProductAllocationService, SpaceModelProductAllocationRepoitory, DeviceStatusLogRepository, SceneIconRepository, SceneRepository, AutomationRepository, SubspaceModelProductAllocationRepoitory, PowerClampService, PowerClampHourlyRepository, PowerClampDailyRepository, PowerClampMonthlyRepository, SqlLoaderService, OccupancyService, AqiDataService, ], exports: [ProjectService, CqrsModule], }) export class ProjectModule {}