Пример #1
0
        public async Task <Result> CreateUserAsync(User user)
        {
            if (!ValidateUser(user))
            {
                return(new Result
                {
                    StatusCode = HttpStatusCode.BadRequest,
                    Message = "Unable to process User, one or more properties did not meet the requirements"
                });
            }

            var usersTableEntity = await _repository.GetEntityAsync <UsersTableEntity>(StorageTablesNames.Users,
                                                                                       user.Email, UsersApiConstants.UsersTableEntityPartitionKey);

            if (usersTableEntity != null)
            {
                return(new Result
                {
                    StatusCode = HttpStatusCode.Conflict,
                    Message = "This email account is already being used by another user"
                });
            }

            usersTableEntity = new UsersTableEntity(user.Email)
            {
                Name            = user.Name, MonthlySalary = user.MonthlySalary,
                MonthlyExpenses = user.MonthlyExpenses
            };
            var result = await _repository.InsertOrReplaceEntityAsync(StorageTablesNames.Users, usersTableEntity);

            return(new Result
            {
                StatusCode = (HttpStatusCode)result
            });
        }
        public async Task CreateAsync(UsersStorageEntity entity)
        {
            await usersTable.CreateIfNotExistsAsync();

            var tableEntity     = new UsersTableEntity(entity);
            var insertOperation = TableOperation.Insert(tableEntity);
            await usersTable.ExecuteAsync(insertOperation);
        }
        public async Task UpdateAsync(UsersStorageEntity entity)
        {
            await usersTable.CreateIfNotExistsAsync();

            var tableEntity     = new UsersTableEntity(entity);
            var updateOperation = TableOperation.Replace(tableEntity);
            await usersTable.ExecuteAsync(updateOperation);
        }
        public async Task DeleteAsync(int id)
        {
            var tableEntity       = new UsersTableEntity(id);
            var retrieveOperation = TableOperation.Retrieve <UsersTableEntity>(tableEntity.PartitionKey, tableEntity.RowKey);
            var result            = await usersTable.ExecuteAsync(retrieveOperation);

            tableEntity = result.Result as UsersTableEntity;

            var deleteOperation = TableOperation.Delete(tableEntity);
            await usersTable.ExecuteAsync(deleteOperation);
        }
        //TODO: Add when support for 2.1 in functions comes out

        //public async IAsyncEnumerable<UsersStorageEntity> GetAllAsync()
        //{
        //    TableContinuationToken token = null;
        //    var query = new TableQuery<UsersTableEntity>();
        //    do
        //    {
        //        var result = await usersTable.ExecuteQuerySegmentedAsync(query, token);

        //        foreach (var entity in result.Results)
        //        {
        //            yield return new UsersStorageEntity
        //            {
        //                DogeId = entity.DogeId,
        //                Username = entity.Username,
        //                Score = entity.Score
        //            };
        //        }
        //        token = result.ContinuationToken;
        //    } while (token != null);
        //}

        public async Task <UsersStorageEntity> GetAsync(int id)
        {
            await usersTable.CreateIfNotExistsAsync();

            var tableEntity       = new UsersTableEntity(id);
            var retrieveOperation = TableOperation.Retrieve <UsersTableEntity>(tableEntity.PartitionKey, tableEntity.RowKey);
            var result            = await usersTable.ExecuteAsync(retrieveOperation);

            tableEntity = result.Result as UsersTableEntity;

            return(new UsersStorageEntity
            {
                DogeId = tableEntity.DogeId,
                Username = tableEntity.Username,
                Score = tableEntity.Score
            });
        }