Example #1
0
        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
            });
        }
Example #2
0
        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
            });
        }