@@ -19,6 +19,7 @@ import {
19
19
org_agents ,
20
20
organisation ,
21
21
platform_config ,
22
+ Prisma ,
22
23
schema
23
24
} from '@prisma/client' ;
24
25
@@ -28,6 +29,7 @@ import { IIssuedCredentialSearchParams } from 'apps/api-gateway/src/issuance/int
28
29
import { IUserRequest } from '@credebl/user-request/user-request.interface' ;
29
30
import { PrismaService } from '@credebl/prisma-service' ;
30
31
import { ResponseMessages } from '@credebl/common/response-messages' ;
32
+ import { IssueCredentials , IssuedCredentialStatus } from '../enum/issuance.enum' ;
31
33
32
34
@Injectable ( )
33
35
export class IssuanceRepository {
@@ -127,19 +129,66 @@ export class IssuanceRepository {
127
129
} [ ] ;
128
130
} > {
129
131
try {
130
- const issuedCredentialsList = await this . prisma . credentials . findMany ( {
132
+ const schemas = await this . prisma . schema . findMany ( {
131
133
where : {
132
- orgId,
133
- ...( schemaIds ?. length ? { schemaId : { in : schemaIds } } : { } ) ,
134
- ...( ! schemaIds ?. length && issuedCredentialsSearchCriteria . search
135
- ? {
136
- OR : [
137
- { connectionId : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' } } ,
138
- { schemaId : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' } }
139
- ]
140
- }
141
- : { } )
134
+ name : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' }
142
135
} ,
136
+ select : { schemaLedgerId : true }
137
+ } ) ;
138
+
139
+ const schemaIdsMatched = schemas . map ( ( s ) => s . schemaLedgerId ) ;
140
+ let stateInfo = null ;
141
+ switch ( issuedCredentialsSearchCriteria . search . toLowerCase ( ) ) {
142
+ case IssuedCredentialStatus . offerSent . toLowerCase ( ) :
143
+ stateInfo = IssueCredentials . offerSent ;
144
+ break ;
145
+
146
+ case IssuedCredentialStatus . done . toLowerCase ( ) :
147
+ stateInfo = IssueCredentials . done ;
148
+ break ;
149
+
150
+ case IssuedCredentialStatus . abandoned . toLowerCase ( ) :
151
+ stateInfo = IssueCredentials . abandoned ;
152
+ break ;
153
+
154
+ case IssuedCredentialStatus . received . toLowerCase ( ) :
155
+ stateInfo = IssueCredentials . requestReceived ;
156
+ break ;
157
+
158
+ case IssuedCredentialStatus . proposalReceived . toLowerCase ( ) :
159
+ stateInfo = IssueCredentials . proposalReceived ;
160
+ break ;
161
+
162
+ case IssuedCredentialStatus . credIssued . toLowerCase ( ) :
163
+ stateInfo = IssueCredentials . offerSent ;
164
+ break ;
165
+
166
+ default :
167
+ stateInfo = null ;
168
+ }
169
+
170
+ const issuanceWhereClause : Prisma . credentialsWhereInput = {
171
+ orgId,
172
+ ...( schemaIds ?. length ? { schemaId : { in : schemaIds } } : { } ) ,
173
+ ...( ! schemaIds ?. length && issuedCredentialsSearchCriteria . search
174
+ ? {
175
+ OR : [
176
+ { connectionId : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' } } ,
177
+ { schemaId : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' } } ,
178
+ { schemaId : { in : schemaIdsMatched } } ,
179
+ {
180
+ connections : {
181
+ theirLabel : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' }
182
+ }
183
+ } ,
184
+ { state : { contains : stateInfo ?? issuedCredentialsSearchCriteria . search , mode : 'insensitive' } }
185
+ ]
186
+ }
187
+ : { } )
188
+ } ;
189
+
190
+ const issuedCredentialsList = await this . prisma . credentials . findMany ( {
191
+ where : issuanceWhereClause ,
143
192
select : {
144
193
credentialExchangeId : true ,
145
194
createDateTime : true ,
@@ -162,18 +211,7 @@ export class IssuanceRepository {
162
211
skip : ( issuedCredentialsSearchCriteria . pageNumber - 1 ) * issuedCredentialsSearchCriteria . pageSize
163
212
} ) ;
164
213
const issuedCredentialsCount = await this . prisma . credentials . count ( {
165
- where : {
166
- orgId,
167
- ...( schemaIds ?. length ? { schemaId : { in : schemaIds } } : { } ) ,
168
- ...( ! schemaIds ?. length && issuedCredentialsSearchCriteria . search
169
- ? {
170
- OR : [
171
- { connectionId : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' } } ,
172
- { schemaId : { contains : issuedCredentialsSearchCriteria . search , mode : 'insensitive' } }
173
- ]
174
- }
175
- : { } )
176
- }
214
+ where : issuanceWhereClause
177
215
} ) ;
178
216
179
217
return { issuedCredentialsCount, issuedCredentialsList } ;
0 commit comments