public async Task <TableResult> CreateAccount(string userName, string password)
        {
            var partitionForName = AccountUtils.GetPartitionIndexForName(userName).ToString();

            var insertOperation = TableOperation.Insert(new AccountEntity()
            {
                PartitionKey   = partitionForName,
                RowKey         = userName,
                Name           = userName,
                HashedPassword = PasswordHasher.HashPassword(password !),
            });
        public async Task <AccountEntity?> GetAccount(
            string userName,
            Action <TableQuery <AccountEntity> >?whereEnricherFunction = null)
        {
            var accountTable = await _accountTableHelper.GetTable();

            var partitionForName = AccountUtils.GetPartitionIndexForName(userName).ToString();

            var query = new TableQuery <AccountEntity>()
                        .AndWhereEquals(nameof(AccountEntity.PartitionKey), partitionForName)
                        .AndWhereEquals(nameof(AccountEntity.RowKey), userName);

            whereEnricherFunction?.Invoke(query);

            var accounts = await accountTable.ExecuteQueryFull(query);

            return(accounts.FirstOrDefault());
        }
예제 #3
0
        private async Task <List <WorkTimeEntity> > GetWorkTimes(string userName, DateTime?startDate, DateTime?endDate)
        {
            var workTimesTable = await _tableHelper.GetTable();

            var partitionKey = AccountUtils.GetPartitionIndexForName(userName).ToString();

            var query = new TableQuery <WorkTimeEntity>()
                        .AndWhereEquals(nameof(WorkTimeEntity.PartitionKey), partitionKey)
                        .AndWhereEquals(nameof(WorkTimeEntity.UserName), userName);

            if (startDate != null)
            {
                query = query.AndWhereGreaterEqual(nameof(WorkTimeEntity.RowKey), startDate.Value.ToStorageSafeShortDateString());
            }

            if (endDate != null)
            {
                query = query.AndWhereLessEqual(nameof(WorkTimeEntity.RowKey), endDate.Value.ToStorageSafeShortDateString());
            }

            return(await workTimesTable.ExecuteQueryFull(query));
        }
예제 #4
0
        private async Task <WorkTimeEntity> GetWorkTime(string userName, DateTime timeStamp)
        {
            var workTimeTable = await _tableHelper.GetTable();

            var partitionKey = AccountUtils.GetPartitionIndexForName(userName).ToString();
            var rowKey       = timeStamp.Date.ToStorageSafeShortDateString();

            var query = new TableQuery <WorkTimeEntity>()
                        .AndWhereEquals(nameof(WorkTimeEntity.PartitionKey), partitionKey)
                        .AndWhereEquals(nameof(WorkTimeEntity.RowKey), rowKey)
                        .AndWhereEquals(nameof(WorkTimeEntity.UserName), userName);

            var workTime = (await workTimeTable.ExecuteQueryFull(query)).FirstOrDefault() ?? new WorkTimeEntity()
            {
                PartitionKey = partitionKey,
                RowKey       = rowKey,
                StartTimes   = new List <DateTime>(),
                EndTimes     = new List <DateTime>(),
                UserName     = userName,
                Timestamp    = timeStamp,
            };

            return(workTime);
        }