public static AccountAccessConsentAggregate Create(string clientId, ICollection <string> permissions, DateTime?expirationDateTime, DateTime?transactionFromDateTime, DateTime?transactionToDateTime, string risk) { var result = new AccountAccessConsentAggregate(); var evt = new AccountAccessConsentAddedEvent(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, clientId, permissions, expirationDateTime, transactionFromDateTime, transactionToDateTime, risk); result.Handle(evt); result.DomainEvents.Add(evt); return(result); }
private void Handle(AccountAccessConsentAddedEvent evt) { if (evt.TransactionFromDateTime != null && evt.TransactionToDateTime != null && evt.TransactionFromDateTime.Value > evt.TransactionToDateTime.Value) { throw new BusinessRuleValidationException(Global.TransactionStartDateSuperiorToEndDate); } var unknownPermissions = new List <string>(); var permissions = new List <AccountAccessConsentPermission>(); if (evt.Permissions.Any()) { foreach (var permission in evt.Permissions) { try { permissions.Add(Enumeration.FromDisplayName <AccountAccessConsentPermission>(permission)); } catch (InvalidOperationException) { unknownPermissions.Add(permission); } } } if (unknownPermissions.Any()) { throw new BusinessRuleValidationException(string.Format(Global.PermissionsAreUnknown, string.Join(",", unknownPermissions))); } AggregateId = evt.AggregateId; ClientId = evt.ClientId; Status = AccountAccessConsentStatus.AwaitingAuthorisation; Permissions = permissions; ExpirationDateTime = evt.ExpirationDateTime; TransactionFromDateTime = evt.TransactionFromDateTime; TransactionToDateTime = evt.TransactionToDateTime; Risk = evt.Risk; }