@@ -20,6 +20,7 @@ import { CACHE_MANAGER } from '@nestjs/cache-manager';
20
20
import { ICredDefDetails , IPlatformCredDefsData } from '@credebl/common/interfaces/cred-def.interface' ;
21
21
import { NATSClient } from '@credebl/common/NATSClient' ;
22
22
import { from } from 'rxjs' ;
23
+ import { ISchemaDetail } from '@credebl/common/interfaces/schema.interface' ;
23
24
@Injectable ( )
24
25
export class CredentialDefinitionService extends BaseService {
25
26
constructor (
@@ -284,26 +285,62 @@ export class CredentialDefinitionService extends BaseService {
284
285
try {
285
286
const { credDefSearchCriteria, orgId } = payload ;
286
287
const response = await this . credentialDefinitionRepository . getAllCredDefs ( credDefSearchCriteria , orgId ) ;
288
+
289
+ const schemaIds = response ?. map ( ( item ) => item ?. schemaLedgerId ) ;
290
+
291
+ const schemaDetails = await this . _getSchemaDetails ( schemaIds ) ;
292
+
293
+ const archivedSchemaIds = schemaDetails
294
+ . filter ( ( schema ) => schema . isSchemaArchived )
295
+ . map ( ( schema ) => schema . schemaLedgerId ) ;
296
+
297
+ const filteredResponse = response . filter (
298
+ ( credDef ) => ! archivedSchemaIds . includes ( credDef . schemaLedgerId )
299
+ ) ;
300
+
287
301
const credDefResponse = {
288
- totalItems : response . length ,
302
+ totalItems : filteredResponse . length ,
289
303
hasNextPage : credDefSearchCriteria . pageSize * credDefSearchCriteria . pageNumber < response . length ,
290
304
hasPreviousPage : 1 < credDefSearchCriteria . pageNumber ,
291
305
nextPage : credDefSearchCriteria . pageNumber + 1 ,
292
306
previousPage : credDefSearchCriteria . pageNumber - 1 ,
293
307
lastPage : Math . ceil ( response . length / credDefSearchCriteria . pageSize ) ,
294
- data : response
308
+ data : filteredResponse
295
309
} ;
296
-
297
- if ( 0 == response . length ) {
310
+
311
+ if ( 0 === filteredResponse . length ) {
298
312
throw new NotFoundException ( ResponseMessages . credentialDefinition . error . NotFound ) ;
299
313
}
314
+
300
315
return credDefResponse ;
301
-
302
316
} catch ( error ) {
303
317
this . logger . error ( `Error in retrieving credential definitions: ${ error } ` ) ;
304
318
throw new RpcException ( error . response ? error . response : error ) ;
305
319
}
306
320
}
321
+
322
+ async _getSchemaDetails ( schemaIds : string [ ] ) : Promise < ISchemaDetail [ ] > {
323
+ const pattern = { cmd : 'get-schemas-details' } ;
324
+
325
+ const payload = {
326
+ templateIds : schemaIds
327
+ } ;
328
+
329
+ const getSchemaDetails = await this . credDefServiceProxy
330
+ . send ( pattern , payload )
331
+ . toPromise ( )
332
+ . catch ( ( error ) => {
333
+ this . logger . error ( `catch: ${ JSON . stringify ( error ) } ` ) ;
334
+ throw new HttpException (
335
+ {
336
+ status : error . status ,
337
+ error : error . message
338
+ } ,
339
+ error . status
340
+ ) ;
341
+ } ) ;
342
+ return getSchemaDetails ;
343
+ }
307
344
308
345
async getCredentialDefinitionBySchemaId ( payload : GetCredDefBySchemaId ) : Promise < credential_definition [ ] > {
309
346
try {
0 commit comments