示例#1
0
        private async Task SetAsync(Guid userId, Action <UserSetting> setFunction, CancellationToken ct)
        {
            var setting = await _storage.UserSettings
                          .FirstOrDefaultAsync(x => x.UserId == userId, ct);

            if (setting == null)
            {
                setting = new UserSetting();
                var change = setting.CreateWithLog(userId, x =>
                {
                    x.Id     = Guid.NewGuid();
                    x.UserId = userId;
                    setFunction(x);
                    x.CreateDateTime = DateTime.UtcNow;
                });

                await _storage.AddAsync(setting, ct);

                await _storage.AddAsync(change, ct);
            }
            else
            {
                var change = setting.UpdateWithLog(userId, x =>
                {
                    setFunction(x);
                    x.ModifyDateTime = DateTime.UtcNow;
                });

                _storage.Update(setting);
                await _storage.AddAsync(change, ct);
            }

            await _storage.SaveChangesAsync(ct);
        }
示例#2
0
        public async Task SetAsync(Guid userId, UserFlagType type, CancellationToken ct)
        {
            var flag = await _storage.UserFlags.FirstOrDefaultAsync(x => x.Type == type && x.UserId == userId, ct);

            if (flag != null)
            {
                flag.SetDateTime = DateTime.UtcNow;

                _storage.Update(flag);
            }
            else
            {
                flag = new UserFlag
                {
                    Id          = Guid.NewGuid(),
                    UserId      = userId,
                    Type        = type,
                    SetDateTime = DateTime.UtcNow
                };

                await _storage.AddAsync(flag, ct);
            }

            await _storage.SaveChangesAsync(ct);
        }
示例#3
0
        public async Task <IActionResult> RegisterUser(User user)
        {
            if (_users.FindUser(user))
            {
                _logger.LogInformation($"Some one try to register with registered login {user.Login}");
                return(BadRequest());
            }
            await _users.AddAsync(user);

            await _leaderboard.AddAsync(new Leaderboard()
            {
                Login = user.Login
            });

            _readLeaderboard.UpdateFile("Leaderboard.json", _leaderboard.GetDictionary());
            _readUsers.UpdateFile("Users.json", _users.GetDictionary());
            _logger.LogInformation($"Registered new user {user.Login}");
            return(Ok());
        }