public async Task <OrganizationApplicationKey> Execute(GetApplicationKey query, CancellationToken cancellationToken = new CancellationToken()) { if (query == null) { throw new ArgumentNullException("query"); } if (string.IsNullOrWhiteSpace(query.Key)) { throw new ArgumentException("Key is required"); } CloudTable keyIndexTable = _tableProvider.GetTable(_settings.KeyOrganizationApplicationIndexTableName); TableQuery <KeyOrganizationApplicationIndexEntity> userAppQuery = new TableQuery <KeyOrganizationApplicationIndexEntity>() .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, query.Key)).Take(1); IEnumerable <KeyOrganizationApplicationIndexEntity> keyApps = await keyIndexTable.ExecuteQueryAsync(userAppQuery, cancellationToken); KeyOrganizationApplicationIndexEntity keyApp = keyApps.SingleOrDefault(); if (keyApp == null) { throw new ApplicationNotFoundException(string.Format("The key was not found: {0}", query.Key)); } return(keyApp); }
public async Task <OrganizationApplicationKey> Execute(CreateApplicationKey command, CancellationToken cancellationToken = new CancellationToken()) { GetApplication query = new GetApplicationQuery(command.UserId, command.ApplicationId); UserOrganizationApplication application = await _getApplication.Execute(query, cancellationToken); CloudTable appKeyTable = _tableProvider.GetTable(_settings.OrganizationApplicationKeyTableName); string key = GenerateKey(); var appKeyEntity = new OrganizationApplicationKeyEntity(key, application.OrganizationId, application.OrganizationName, command.ApplicationId, application.ApplicationName, command.Timestamp); await appKeyTable.ExecuteAsync(TableOperation.Insert(appKeyEntity), cancellationToken); var indexEntity = new KeyOrganizationApplicationIndexEntity(key, application.OrganizationId, application.OrganizationName, application.ApplicationId, application.ApplicationName, command.Timestamp); CloudTable indexTable = _tableProvider.GetTable(_settings.KeyOrganizationApplicationIndexTableName); await indexTable.ExecuteAsync(TableOperation.Insert(indexEntity), cancellationToken); return(appKeyEntity); }