public async Task <CredentialViewModel> Assemble(CredentialRecord credentialRecord) { if (credentialRecord == null) { return(null); } var context = await _agentContextProvider.GetContextAsync(); CredentialViewModel credential = _scope.Resolve <CredentialViewModel>(new NamedParameter("credential", credentialRecord)); var credentialDefinitionId = CredentialDefinitionId.Parse(credentialRecord.CredentialDefinitionId); credential.CredentialName = credentialDefinitionId.Tag; var connectionRecord = await _connectionService.GetAsync(context, credentialRecord.ConnectionId); credential.CredentialSubtitle = connectionRecord.Alias.Name; credential.IssuedAt = connectionRecord.CreatedAtUtc.HasValue ? connectionRecord.CreatedAtUtc.Value.ToLocalTime() : (DateTime?)null; if (credentialRecord.State == CredentialState.Offered) { var attributes = new List <CredentialAttribute>(); credential.Attributes = attributes; foreach (var credentialPreviewAttribute in credentialRecord.CredentialAttributesValues) { var attribute = new CredentialAttribute { Name = credentialPreviewAttribute.Name, Value = credentialPreviewAttribute.Value.ToString(), Type = "Text" }; attribute.Type = attribute.Value != null && (attribute.Value.ToString().StartsWith("data:image/jpeg;base64") || attribute.Value.ToString().StartsWith("data:image/png;base64")) ? "Image" : "Text"; attribute.Image = attribute.Value != null && (attribute.Value.ToString().StartsWith("data:image/jpeg;base64") || attribute.Value.ToString().StartsWith("data:image/png;base64")) ? ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(attribute.Value.ToString().Replace("data:image/jpeg;base64,", "").Replace("data:image/png;base64,", "")))) : null; attributes.Add(attribute); } } return(credential); }
public IList <CredentialRecord> Filter(IList <CredentialRecord> credentialRecords) { if (credentialRecords == null) { throw new ArgumentNullException(nameof(credentialRecords)); } IList <CredentialRecord> filteredCredentialRecords = new List <CredentialRecord>(); foreach (CredentialRecord credentialRecord in credentialRecords) { if (ContainsAttributeName(credentialRecord)) { if (_schemaIds.Count > 0 && !_schemaIds.Contains(credentialRecord.SchemaId)) { continue; } if (_schemaNames.Count > 0 || _schemaVersions.Count > 0 || _issuerDids.Count > 0) { SchemaId schemaId = SchemaId.Parse(credentialRecord.SchemaId); if (_schemaNames.Count > 0 && !_schemaNames.Contains(schemaId.Name)) { continue; } if (_schemaVersions.Count > 0 && !_schemaVersions.Contains(schemaId.Version)) { continue; } if (_schemaIssuerDids.Count > 0 && !_schemaIssuerDids.Contains(schemaId.Did)) { continue; } } if (_issuerDids.Count > 0 && !_issuerDids.Contains(CredentialDefinitionId.Parse(credentialRecord.CredentialDefinitionId).Did)) { continue; } if (_credentialDefinitionIds.Count > 0 && !_credentialDefinitionIds.Contains(credentialRecord.CredentialDefinitionId)) { continue; } if (_attributeValues.Count > 0) { bool found = false; foreach (AttributeValue attributeValue in _attributeValues) { foreach (CredentialPreviewAttribute credentialPreviewAttribute in credentialRecord.CredentialAttributesValues) { if (credentialPreviewAttribute.Name == attributeValue.Name && credentialPreviewAttribute.Value.ToString() == attributeValue.Value) { found = true; break; } } if (found) { break; } } if (!found) { continue; } } filteredCredentialRecords.Add(credentialRecord); } } return(filteredCredentialRecords); }