public async Task <ActionResult <GameSubmitResult> > Submit(GameSubmitParams @params) { User user = await _dbContext.User .Where(it => it.Username == @params.Username && it.Password == @params.Password) .FirstOrDefaultAsync(); if (user == null) { return(Unauthorized()); } user.AccessTime = DateTime.UtcNow; Game game = new Game { Md5 = @params.Md5, GameItemId = @params.GameItemId, Names = @params.Names.Select(it => new GameName { Type = it.Type, Value = it.Value }).ToList(), TextSetting = new TextSetting { Language = @params.TextSetting.Language, Encoding = @params.TextSetting.Encoding, KeepAllText = @params.TextSetting.KeepAllText, KeepSpaces = @params.TextSetting.KeepSpaces, RemoveRepeat = @params.TextSetting.RemoveRepeat, IgnoreRepeat = @params.TextSetting.IgnoreRepeat, Hooks = @params.TextSetting.Hooks.Select(it => new TextHook { Type = it.Type, Name = it.Name, Sig = it.Sig }).ToList(), HookCode = @params.TextSetting.HookCode }, CreatorId = user.Id, CreationTime = DateTime.UtcNow, ModifiedTime = DateTime.UtcNow }; _dbContext.Game.Add(game); await _dbContext.SaveChangesAsync(); return(new GameSubmitResult { Id = game.Id }); }
public async Task <ActionResult <GameSubmitResult> > SubmitSetting(GameSubmitParams @params) { var user = await _dbContext.Users .Where(it => it.Username == @params.Username && it.Password == @params.Password) .SingleOrDefaultAsync() ?? null; if (user is null) { return(Unauthorized()); } user.AccessTime = DateTime.UtcNow; var game = await _dbContext.Games .Where(g => g.Md5.Equals(@params.Md5)) .Include(g => g.Names) .SingleOrDefaultAsync() ?? null; if (game is null) { game = new Game() { Md5 = @params.Md5, Names = @params.Names.Select(it => new GameName { Type = it.Type, Value = it.Value }).ToList(), TextSettingJson = @params.TextSetting, RegExp = @params.RegExp, CreatorId = user.Id, Creator = user, CreationTime = DateTime.UtcNow, ModifiedTime = DateTime.UtcNow }; await _dbContext.Games.AddAsync(game); } else { foreach (var gameName in @params.Names) { if (!game.Names.Any(it => it.Value.Equals(gameName.Value))) { var newGameName = new GameName() { Type = gameName.Type, Value = gameName.Value, }; game.Names.Add(newGameName); } } game.TextSettingJson = @params.TextSetting; game.RegExp = @params.RegExp; game.ModifiedTime = DateTime.UtcNow; } await _dbContext.SaveChangesAsync(); return(new GameSubmitResult { Id = game.Id }); }