import { SpaceRepositoryModule } from '@app/common/modules/space/space.repository.module'; import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { SpaceController, SpaceDeviceController, SpaceUserController, SubSpaceController, SubSpaceDeviceController, SpaceSceneController, } from './controllers'; import { SpaceDeviceService, SpaceLinkService, SpaceSceneService, SpaceService, SpaceUserService, SubspaceDeviceService, SubSpaceService, } from './services'; import { SpaceRepository, SpaceLinkRepository, TagRepository, InviteSpaceRepository, SpaceProductAllocationRepository, } from '@app/common/modules/space/repositories'; import { CommunityRepository } from '@app/common/modules/community/repositories'; import { UserRepository, UserSpaceRepository, } from '@app/common/modules/user/repositories'; import { DeviceRepository, DeviceUserPermissionRepository, } from '@app/common/modules/device/repositories'; import { TuyaService } from '@app/common/integrations/tuya/services/tuya.service'; import { ProductRepository } from '@app/common/modules/product/repositories'; import { SceneService } from '../scene/services'; import { SceneIconRepository, SceneRepository, } from '@app/common/modules/scene/repositories'; import { DeviceService } from 'src/device/services'; import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service'; import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories'; import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { ProjectRepository } from '@app/common/modules/project/repositiories'; import { SpaceModelProductAllocationRepoitory, SpaceModelRepository, SubspaceModelProductAllocationRepoitory, SubspaceModelRepository, TagModelRepository, } from '@app/common/modules/space-model'; import { CommunityModule } from 'src/community/community.module'; import { ValidationService } from './services'; import { SubspaceProductAllocationRepository, SubspaceRepository, } from '@app/common/modules/space/repositories/subspace.repository'; import { TagService } from './services/tag'; import { SpaceModelService, SubSpaceModelService, } from 'src/space-model/services'; import { UserService, UserSpaceService } from 'src/users/services'; import { UserDevicePermissionService } from 'src/user-device-permission/services'; import { PermissionTypeRepository } from '@app/common/modules/permission/repositories'; import { CqrsModule } from '@nestjs/cqrs'; import { DisableSpaceHandler } from './handlers'; import { RegionRepository } from '@app/common/modules/region/repositories'; import { TimeZoneRepository } from '@app/common/modules/timezone/repositories'; import { InviteUserRepository, InviteUserSpaceRepository, } from '@app/common/modules/Invite-user/repositiories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { TagService as NewTagService } from 'src/tags/services/tags.service'; import { NewTagRepository } from '@app/common/modules/tag/repositories/tag-repository'; import { SpaceModelProductAllocationService } from 'src/space-model/services/space-model-product-allocation.service'; import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-product-allocation.service'; import { SpaceProductAllocationService } from './services/space-product-allocation.service'; import { SubspaceProductAllocationService } from './services/subspace/subspace-product-allocation.service'; import { SpaceValidationController } from './controllers/space-validation.controller'; import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; import { PowerClampHourlyRepository, PowerClampDailyRepository, 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'; export const CommandHandlers = [DisableSpaceHandler]; @Module({ imports: [ConfigModule, SpaceRepositoryModule, CommunityModule, CqrsModule], controllers: [ SpaceController, SpaceUserController, SpaceDeviceController, SubSpaceController, SubSpaceDeviceController, SpaceSceneController, SpaceValidationController, ], providers: [ ValidationService, TagModelRepository, TagRepository, SpaceService, TuyaService, TagService, ProductRepository, SubSpaceService, SpaceDeviceService, SpaceLinkService, SubspaceDeviceService, SpaceRepository, SubspaceRepository, DeviceRepository, CommunityRepository, SpaceLinkRepository, UserSpaceRepository, UserRepository, SpaceUserService, SpaceSceneService, DeviceService, SceneService, SceneIconRepository, SceneRepository, DeviceService, DeviceStatusFirebaseService, DeviceStatusLogRepository, SceneDeviceRepository, SpaceModelService, SubSpaceModelService, ProjectRepository, SpaceModelRepository, SubspaceModelRepository, UserSpaceService, UserDevicePermissionService, DeviceUserPermissionRepository, PermissionTypeRepository, InviteSpaceRepository, ...CommandHandlers, UserService, RegionRepository, TimeZoneRepository, InviteUserRepository, InviteUserSpaceRepository, AutomationRepository, TagService, NewTagService, SpaceModelProductAllocationRepoitory, SubspaceModelProductAllocationRepoitory, NewTagRepository, SpaceModelProductAllocationService, SubspaceModelProductAllocationService, SpaceProductAllocationService, SubspaceProductAllocationService, SpaceProductAllocationRepository, SubspaceProductAllocationRepository, PowerClampHourlyRepository, PowerClampDailyRepository, PowerClampMonthlyRepository, PowerClampService, SqlLoaderService, OccupancyService, AqiDataService, ], exports: [SpaceService], }) export class SpaceModule {}