public Task <List <Domain.EffectiveAuthorizationEvent> > GetRawEventsAsync( Domain.EffectiveAuthorization effectiveAuthorization) { try { //The reason for composing the full SQL statement instead of using the Equals operation as part of a linq "where" is because "Equals" operator is not supported var resourceResponse = _client.CreateDocumentQuery <Models.ReadEffectiveAuthorizationEvent>( UriFactory.CreateDocumentCollectionUri(_dbConfig.Database, _dbConfig.Collection), GetSQLQueryByEffectiveAuthorisation(effectiveAuthorization), _queryOptions).ToList(); // can't filter event with null target in cosmos db, so doing the event with target null filter here. if (effectiveAuthorization.Target is null) { resourceResponse = resourceResponse.Where(e => e.EffectiveAuthorization.Target is null).ToList(); } var output = new List <Domain.EffectiveAuthorizationEvent>(); foreach (Models.ReadEffectiveAuthorizationEvent readModelEvent in resourceResponse) { output.Add(DomainAdapter.MapReadStorageModelToDomain(readModelEvent)); } return(Task.FromResult <List <Domain.EffectiveAuthorizationEvent> >(output)); } catch (RawEventStorageException ex) { throw new RawEventStorageException($"Issue while reading events from the storage account :{ex.Message}", ex); } }
private string GetSQLQueryByEffectiveAuthorisation(Domain.EffectiveAuthorization ea) { var queryBuilder = new List <string>(); queryBuilder.Add($@"c.EffectiveAuthorization.TenantId = ""{ea.TenantId}"""); queryBuilder.Add($@"c.EffectiveAuthorization.User.Context = ""{ea.User.Context}"""); queryBuilder.Add($@"c.EffectiveAuthorization.User.Id = ""{ea.User.Id}"""); queryBuilder.Add($@"c.EffectiveAuthorization.Permission.Application = ""{ea.Permission.Application}"""); queryBuilder.Add($@"c.EffectiveAuthorization.Permission.Id = ""{ea.Permission.Id}"""); if (ea.Target != null) { queryBuilder.Add($@"c.EffectiveAuthorization.Target.Context = ""{ea.Target.Context}"""); queryBuilder.Add($@"c.EffectiveAuthorization.Target.Id = ""{ea.Target.Id}"""); } var whereClause = String.Join(" AND ", queryBuilder.ToArray()); return($"SELECT * FROM c WHERE {whereClause}"); }
public EffectiveAuthorizationTimeline(EffectiveAuthorization effectiveAuthorization) { EffectiveAuthorization = effectiveAuthorization; StartDates = new List <DateTime>(); EndDates = new List <DateTime>(); }
protected bool Equals(EffectiveAuthorization other) { return(User.Equals(other.User) && Permission.Equals(other.Permission) && (Target?.Equals(other.Target) ?? other.Target == null)); }