public static void FarmGame(string matchDescription, string squadDescription, int gameNumber, 
            string _gameType, int _isHomeWin, string awayPlayers, string homePlayers)
        {
            int matchID = Convert.ToInt32(matchDescription.Replace("Match #", ""));

            if (arrBadMatches.Contains(matchID))
                return;

            Campaign campaign = Campaign.GetCampaignFromMatch(matchID);
            Match match = new Match(matchDescription, squadDescription, campaign.ID);
            Squad AwaySquad = new Squad(); Squad HomeSquad = new Squad();
            Squad.GetSquadsFromDesc(squadDescription, campaign, ref AwaySquad, ref HomeSquad);

            Game game = new Game();
            game._GameType = Game.GetGameTypeFromString(_gameType);
            game.IsHomeWin = _isHomeWin == 1;
            game.GameNumber = gameNumber;

            SqlConnection connSql = new SqlConnection(
                        Gravoc.Encryption.Encryption.Decrypt(Properties.Settings.Default.ConnectionString));
            connSql.Open();

            SqlCommand cmdSql = new SqlCommand("update match set awaySquad = @a, homeSquad = @h where id = @m", connSql);
            cmdSql.Parameters.AddWithValue("@m", matchID);
            cmdSql.Parameters.AddWithValue("@a", AwaySquad.SquadId);
            cmdSql.Parameters.AddWithValue("@h", HomeSquad.SquadId);

            cmdSql.ExecuteNonQuery();
            connSql.Close();

            awayPlayers.Split(new string[] {"|~|"}, StringSplitOptions.RemoveEmptyEntries);
            foreach (string playerName in awayPlayers.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries))
            {
                if (!AwaySquad.DartsPlayers.ContainsKey(playerName))
                {
                    int n = DartsPlayer.CreateDummyPlayer(playerName, AwaySquad.SquadId, match.MatchId);
                    AwaySquad.DartsPlayers.Add(DartsPlayer.GetPlayer(n).Name, DartsPlayer.GetPlayer(n));
                }
                if (!game.AwayDartsPlayers.Contains(AwaySquad.DartsPlayers[playerName]))
                    game.AwayDartsPlayers.Add(AwaySquad.DartsPlayers[playerName]);
                else
                {
                    arrBadMatches.Add(match.MatchId);
                    match.MarkBadMatch();
                    return;
                }
            }

            foreach (string playerName in homePlayers.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries))
            {
                if (!HomeSquad.DartsPlayers.ContainsKey(playerName))
                {
                    int n = DartsPlayer.CreateDummyPlayer(playerName, HomeSquad.SquadId, match.MatchId);
                    HomeSquad.DartsPlayers.Add(DartsPlayer.GetPlayer(n).Name, DartsPlayer.GetPlayer(n));
                }
                if (!game.HomeDartsPlayers.Contains(HomeSquad.DartsPlayers[playerName]))
                    game.HomeDartsPlayers.Add(HomeSquad.DartsPlayers[playerName]);
                else
                {
                    arrBadMatches.Add(match.MatchId);
                    match.MarkBadMatch();
                    return;
                }
            }

            game.CalculateAndCommitGame(match);
        }