Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            using (var context = new ScrabbleContext())
            {
                IManageScrabbleDb manageScrableDb = new ManageScrabbleDb(context);
                IScrabbleGame     scrabbleGame    = new ScrabbleGame(manageScrableDb);
                var game = new ScrabbleGame();
                game.Scrabble(manageScrableDb);

                Console.WriteLine("-----Press any key to continue-----");
                Console.ReadKey();
            }
        }
Ejemplo n.º 2
0
 public ScrabbleController(ScrabbleContext context)
 {
     _scrabbleContext = context;
 }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                         .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                         .AddJsonFile("appsettings.json", true, true)
                         .AddJsonFile("appsettings.local.json", true, true)
                         .AddEnvironmentVariables()
                         .AddCommandLine(args ?? new string[] { })
                         .Build();

            // create db context
            var connectionString = config.GetConnectionString("Scrabble");
            var dbContextOptions = new DbContextOptionsBuilder <ScrabbleContext>()
                                   .UseNpgsql(connectionString)
                                   .Options;
            var dbContext = new ScrabbleContext(dbContextOptions);

            var players       = dbContext.Players.ToList();
            var existingGames = dbContext.Games.ToList();

            // load file data
            var filename = args[0];
            var filetext = System.IO.File.ReadAllText(filename);
            var filedata = JObject.Parse(filetext);

            var rowdata = filedata["sheets"][0]["data"][0]["rowData"];

            Console.WriteLine($"{filedata["sheets"] == null}");
            Console.WriteLine($"{filedata["sheets"][0] == null}");
            Console.WriteLine($"{filedata["sheets"][0]["data"][0]["rowData"] == null}");

            var currentGame = null as Game;

            foreach (var(col, columnIndex) in rowdata[0]["values"].Enumerate())
            {
                var dateStr = col["formattedValue"]?.ToString();
                if (dateStr != null)
                {
                    var date = DateTimeOffset.ParseExact(dateStr, "d.MM.yyyy", System.Globalization.CultureInfo.CurrentCulture);
                    Console.WriteLine(date);
                    var existingGame = existingGames.Any(g => g.Start.Date == date);
                    if (existingGame)
                    {
                        Console.WriteLine("Game already imported, skipping");
                        currentGame = null;
                    }
                    else
                    {
                        dbContext.SaveChanges();
                        currentGame = new Game()
                        {
                            Start       = date,
                            End         = date,
                            GamePlayers = new List <GamePlayer>(),
                            Rounds      = new List <Round>(),
                        };
                        dbContext.Games.Add(currentGame);
                    }
                }

                if (currentGame != null)
                {
                    var playerName = rowdata[1]["values"][columnIndex]["formattedValue"].ToString();
                    Console.WriteLine($"  Player {playerName}");

                    var player = players.FirstOrDefault(p => string.Equals(p.Name, playerName, StringComparison.CurrentCultureIgnoreCase));
                    if (player == null)
                    {
                        player = new Player()
                        {
                            Name = playerName,
                        };
                        players.Add(player);
                    }
                    currentGame.GamePlayers.Add(new GamePlayer
                    {
                        Player = player,
                        Order  = currentGame.GamePlayers.Count(),
                    });

                    for (var rowIndex = 3; rowIndex < 30; rowIndex++)
                    {
                        var scoreStr = rowdata[rowIndex]["values"][columnIndex]?["formattedValue"]?.Value <string>();
                        if (scoreStr == null)
                        {
                            break;
                        }

                        if (!int.TryParse(scoreStr, out var score))
                        {
                            Console.WriteLine($"Parse error in score: {scoreStr}");
                            break;
                        }

                        var roundNumber = rowIndex - 2;
                        var round       = currentGame.Rounds.FirstOrDefault(r => r.RoundNumber == roundNumber);
                        if (round == null)
                        {
                            round = new Round
                            {
                                RoundNumber  = roundNumber,
                                PlayerRounds = new List <PlayerRound>(),
                            };
                            currentGame.Rounds.Add(round);
                        }

                        round.PlayerRounds.Add(new PlayerRound {
                            Player = player,
                            Score  = score,
                        });

                        Console.WriteLine($"    {score}");
                    }
                }
            }

            dbContext.SaveChanges();
        }