/// <summary> /// Creates a verified person credentials with the relevant DefinitionID and attribute values. /// </summary> /// <param name="connectionId"></param> /// <param name="personCredential"></param> /// <returns></returns> public async Task <CredentialsContract> CreatePerson(string connectionId, PersonCredentialParameters personCredential) { var credentialOffer = new CredentialOfferParameters { ConnectionId = connectionId, DefinitionId = DefinitionIds[Schemas.Person], AutomaticIssuance = false, CredentialValues = new Dictionary <string, string> { { Attributes.FirstName, personCredential.FirstName.ValidateLength() }, { Attributes.LastName, personCredential.LastName.ValidateLength() }, { Attributes.Photo, personCredential.Photo }, { Attributes.MobileNumber, personCredential.MobileNumber.ValidateMobileNumber().ToString() }, { Attributes.IdentificationType, personCredential.IdentificationType.ToString() }, { Attributes.IdentificationValue, personCredential.IdentificationValue.ValidateIdentification(personCredential.IdentificationType) } } }; var credentials = await _agencyBroker.SendCredentials(credentialOffer); return(credentials); }
public async Task CreatePersonAndCovidTestCredentials(CovidTestCredentialParameters covidTest, PersonCredentialParameters person, string walletId) { var connectionParameters = new ConnectionParameters { ConnectionId = "", // Leave blank for auto generation Multiparty = false, Name = AgentName }; var agentInvitation = await _connectionService.CreateInvitation(connectionParameters); var custodianConnection = await _connectionService.AcceptInvitation(agentInvitation.Invitation, walletId); // Create the set of credentials var personalDetialsCredentials = await CreatePerson(agentInvitation.ConnectionId, person); var covidTestCredentials = await CreateCovidTest(agentInvitation.ConnectionId, covidTest, walletId); var userCredentials = await _custodianBroker.GetCredentials(walletId); if (userCredentials == null) { throw new ValidationException(Messages.Cred_NotFound); } var offeredCredentials = userCredentials?.Where(x => x.State == CredentialsState.Offered); if (offeredCredentials == null) { throw new ValidationException(Messages.Cred_OfferedNotFound); } if (offeredCredentials != null) { // Accept all the credentials foreach (var offer in offeredCredentials) { await _custodianBroker.AcceptCredential(walletId, offer.CredentialId); } } return; }