diff --git a/src/schema/schema.module.ts b/src/schema/schema.module.ts index 65e2bef..15e939c 100644 --- a/src/schema/schema.module.ts +++ b/src/schema/schema.module.ts @@ -16,9 +16,13 @@ import { TrimMiddleware } from 'src/utils/middleware/trim.middleware'; import { schemaProviders } from './providers/schema.provider'; import { databaseProviders } from '../mongoose/tenant-mongoose-connections'; import { TxSendModuleModule } from 'src/tx-send-module/tx-send-module.module'; +import { StatusService } from 'src/status/status.service'; +import { StatusModule } from 'src/status/status.module'; +import { TxnStatusRepository } from 'src/status/repository/status.repository'; +import { statusProviders } from 'src/status/providers/registration-status.provider'; @Module({ - imports: [DidModule, TxSendModuleModule], + imports: [DidModule, TxSendModuleModule, StatusModule], controllers: [SchemaController], providers: [ SchemaService, @@ -26,8 +30,11 @@ import { TxSendModuleModule } from 'src/tx-send-module/tx-send-module.module'; DidService, HidWalletService, SchemaRepository, + StatusService, + TxnStatusRepository, ...databaseProviders, ...schemaProviders, + ...statusProviders, ], exports: [SchemaModule], }) diff --git a/src/schema/services/schema.service.ts b/src/schema/services/schema.service.ts index 7c91c33..e767a5f 100644 --- a/src/schema/services/schema.service.ts +++ b/src/schema/services/schema.service.ts @@ -21,6 +21,7 @@ import { RegisterSchemaDto } from '../dto/register-schema.dto'; import { Namespace } from 'src/did/dto/create-did.dto'; import { getAppVault, getAppMenemonic } from '../../utils/app-vault-service'; import { TxSendModuleService } from 'src/tx-send-module/tx-send-module.service'; +import { StatusService } from 'src/status/status.service'; @Injectable({ scope: Scope.REQUEST }) export class SchemaService { @@ -31,6 +32,7 @@ export class SchemaService { private readonly hidWallet: HidWalletService, private readonly didRepositiory: DidRepository, private readonly txnService: TxSendModuleService, + private readonly statusService: StatusService, ) {} async checkAllowence(address) { @@ -201,6 +203,18 @@ export class SchemaService { 'resolveSchema() method: resolving schema from blockchain', 'SchemaService', ); + + const statusResponse = await this.statusService.findBySsiId(schemaId); + Logger.log(statusResponse); + if (statusResponse) { + const firstResponse = statusResponse[0]; + if (firstResponse && firstResponse.data) { + if (firstResponse.data.findIndex((x) => x['status'] != 0) >= 0) { + throw new BadRequestException([firstResponse]); + } + } + } + let resolvedSchema; try { resolvedSchema = await hypersignSchema.resolve({ schemaId }); diff --git a/src/status/status.service.ts b/src/status/status.service.ts index 2437f5a..68bef76 100644 --- a/src/status/status.service.ts +++ b/src/status/status.service.ts @@ -5,7 +5,13 @@ import { RegistrationStatusList } from './dto/registration-status.response.dto'; @Injectable() export class StatusService { constructor(private readonly txnStatusRepository: TxnStatusRepository) {} - findBySsiId(id: string, option): Promise { + findBySsiId(id: string, option?): Promise { + if (!option) { + option = { + page: 1, + limit: 10, + }; + } const skip = (option.page - 1) * option.limit; option['skip'] = skip; return this.txnStatusRepository.find(