public async Task <Organization> Execute(CreateOrganization command, CancellationToken cancellationToken = new CancellationToken()) { CloudTable organizationTable = _tableProvider.GetTable(_settings.OrganizationTableName); var entity = new OrganizationEntity(command.UserId, command.OrganizationName, command.Timestamp); await organizationTable.ExecuteAsync(TableOperation.Insert(entity), cancellationToken); var indexEntity = new UserOrganizationIndexEntity(command.Timestamp, command.UserId, entity.Id, entity.Name, true); CloudTable userOrganizationIndexTable = _tableProvider.GetTable(_settings.UserOrganizationIndexTableName); await userOrganizationIndexTable.ExecuteAsync(TableOperation.InsertOrReplace(indexEntity), cancellationToken); return(entity); }
public async Task <Organization> Execute(GetOrganization query, CancellationToken cancellationToken = new CancellationToken()) { if (query == null) { throw new ArgumentNullException("query"); } if (string.IsNullOrWhiteSpace(query.UserId)) { throw new ArgumentException("UserId is required"); } CloudTable organizationUserTable = _tableProvider.GetTable(_settings.UserOrganizationIndexTableName); TableQuery <UserOrganizationIndexEntity> organizationUserQuery = new TableQuery <UserOrganizationIndexEntity>() .Where(TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, query.UserId), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, query.OrganizationId))).Take(1); IEnumerable <UserOrganizationIndexEntity> organizationUsers = await organizationUserTable.ExecuteQueryAsync(organizationUserQuery, cancellationToken); UserOrganizationIndexEntity organizationUser = organizationUsers.SingleOrDefault(); if (organizationUser == null) { throw new OrganizationNotFoundException(query.UserId, query.OrganizationId); } CloudTable organizationTable = _tableProvider.GetTable(_settings.OrganizationTableName); TableQuery <OrganizationEntity> organizationQuery = new TableQuery <OrganizationEntity>() .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, query.OrganizationId)).Take(1); IEnumerable <OrganizationEntity> organizations = await organizationTable.ExecuteQueryAsync(organizationQuery, cancellationToken); OrganizationEntity organization = organizations.SingleOrDefault(); if (organization == null) { throw new OrganizationNotFoundException(query.UserId, query.OrganizationId); } return(organization); }