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); }
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); }
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()); }