コード例 #1
0
        public async Task <UserOrganizationApplication> Execute(GetApplication query,
                                                                CancellationToken cancellationToken = new CancellationToken())
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (string.IsNullOrWhiteSpace(query.UserId))
            {
                throw new ArgumentException("UserId is required");
            }
            if (string.IsNullOrWhiteSpace(query.ApplicationId))
            {
                throw new ArgumentException("ApplicationId is required");
            }

            CloudTable userAppIndexTable = _tableProvider.GetTable(_settings.UserApplicationIndexTableName);

            TableQuery <UserApplicationIndexEntity> userAppQuery = new TableQuery <UserApplicationIndexEntity>()
                                                                   .Where(TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, query.UserId),
                                                                                                    TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, query.ApplicationId))).Take(1);

            IEnumerable <UserApplicationIndexEntity> userApps = await userAppIndexTable.ExecuteQueryAsync(userAppQuery, cancellationToken);

            UserApplicationIndexEntity userApp = userApps.SingleOrDefault();

            if (userApp == null)
            {
                throw new ApplicationNotFoundException(query.UserId, query.ApplicationId);
            }

            return(userApp);
        }
コード例 #2
0
        public async Task <UserOrganizationApplication> Execute(CreateApplication command,
                                                                CancellationToken cancellationToken = new CancellationToken())
        {
            GetOrganization query = new GetOrganizationQuery(command.UserId, command.OrganizationId);

            Organization organization = await _organizationQueryHandler.Execute(query, cancellationToken);

            CloudTable appTable = _tableProvider.GetTable(_settings.ApplicationTableName);

            var appEntity = new ApplicationEntity(command.ApplicationName, command.Timestamp);

            await appTable.ExecuteAsync(TableOperation.Insert(appEntity), cancellationToken);

            var indexEntity = new OrganizationApplicationIndexEntity(organization.Id, organization.Name, appEntity.Id, command.ApplicationName,
                                                                     command.Timestamp);

            CloudTable indexTable = _tableProvider.GetTable(_settings.OrganizationApplicationIndexTableName);

            await indexTable.ExecuteAsync(TableOperation.Insert(indexEntity), cancellationToken);

            var userIndexEntity = new UserApplicationIndexEntity(command.UserId, organization.Id, organization.Name, appEntity.Id, command.ApplicationName,
                                                                 command.Timestamp);

            CloudTable userIndexTable = _tableProvider.GetTable(_settings.UserApplicationIndexTableName);

            await userIndexTable.ExecuteAsync(TableOperation.Insert(userIndexEntity), cancellationToken);

            return(userIndexEntity);
        }