Esempio n. 1
0
        private void CreateRankingFiles() // tworzy pliki [rankingId].json oraz _rankingsList.json od początku do najnowszego [na podstawie FIFA-WWW]
        {
            string path = AppDomain.CurrentDomain.BaseDirectory;
            List <RankingInList> rankingList = new List <RankingInList>();

            for (var i = 1; i < 500; i++)
            {
                try
                {
                    var    ranking = GetRankingById(i);
                    string json    = JsonConvert.SerializeObject(ranking);

                    var rankingForList = new RankingInList()
                    {
                        Id = ranking.Id, Date = ranking.Date
                    };
                    rankingList.Add(rankingForList);

                    System.IO.File.WriteAllText(path + "data/rankings/" + i + ".json", json);
                }
                catch (Exception ex) // nie ma rankingu o danym id
                {
                    string json = JsonConvert.SerializeObject(rankingList, Newtonsoft.Json.Formatting.Indented);
                    System.IO.File.WriteAllText(path + "data/rankings/_rankingsList.json", json);
                    break;
                    throw new ApplicationException("Wykonano 'CreateRankingFiles' aż do id = " + (i - 1).ToString() + ".Nie ma rankingu o Id = " + i.ToString(), ex);
                }
            }
        }
Esempio n. 2
0
        private string UpdateWithLast() // aktualizacja najnowszym rankingiem
        {
            // wyznacz ostatnie Id
            string   path            = AppDomain.CurrentDomain.BaseDirectory;
            int      lastIdInFiles   = -1;
            DateTime lastDateInFiles = new DateTime(1992, 12, 1);

            using (StreamReader r = new StreamReader(path + "data/rankings/_rankingsList.json"))
            {
                string json = r.ReadToEnd();
                List <RankingInList> items = JsonConvert.DeserializeObject <List <RankingInList> >(json);
                lastIdInFiles   = items.LastOrDefault().Id;
                lastDateInFiles = items.LastOrDefault().Date;
            }

            var nextSiteId = GetNextSiteId(lastDateInFiles);

            try
            {
                Ranking lastRanking = GetRankingBySiteId(nextSiteId, lastIdInFiles + 1);

                // ######################### dopisz do _rankingsList
                // #########################
                string output = null;
                using (StreamReader r = new StreamReader(path + "/data/rankings/_rankingsList.json"))
                {
                    string json = r.ReadToEnd();
                    List <RankingInList> items = JsonConvert.DeserializeObject <List <RankingInList> >(json);
                    items.Add(new RankingInList {
                        Id = lastRanking.Id, Date = lastRanking.Date
                    });
                    output = Newtonsoft.Json.JsonConvert.SerializeObject(items, Newtonsoft.Json.Formatting.Indented);
                    r.Close();
                }
                System.IO.File.WriteAllText(path + "/data/rankings/_rankingsList.json", output);

                // ######################### stwórz plik xxx.json gdzie xxx to id najnowszego rankingu
                // #########################
                string json2          = JsonConvert.SerializeObject(lastRanking);
                var    rankingForList = new RankingInList()
                {
                    Id = lastRanking.Id, Date = lastRanking.Date
                };
                System.IO.File.WriteAllText(path + "data/rankings/" + (lastIdInFiles + 1) + ".json", json2);

                // ######################### dopisz do każdej drużyny najnowszy ranking. Sprowadza się to do CreateTeamFiles() tyle że bez pętli
                // #########################
                foreach (var teamInRank in lastRanking.Teams)
                {
                    TeamInFile teamInFile = new Model.TeamInFile()
                    {
                        Rank           = teamInRank.Rank,
                        TotalPoints    = teamInRank.TotalPoints,
                        PreviousPoints = teamInRank.PreviousPoints,
                        MovePosition   = teamInRank.MovePosition,
                        Date           = lastRanking.Date,
                        RankId         = lastRanking.Id
                    };

                    if (System.IO.File.Exists(path + "/data/teams/" + teamInRank.Name + ".json"))
                    { // plik istnieje - dopisz
                        string outputTeam = "";
                        using (StreamReader r = new StreamReader(path + "/data/teams/" + teamInRank.Name + ".json"))
                        {
                            string            json  = r.ReadToEnd();
                            List <TeamInFile> items = JsonConvert.DeserializeObject <List <TeamInFile> >(json);
                            items.Add(teamInFile);
                            outputTeam = Newtonsoft.Json.JsonConvert.SerializeObject(items, Newtonsoft.Json.Formatting.Indented);
                        }
                        System.IO.File.WriteAllText(path + "/data/teams/" + teamInRank.Name + ".json", outputTeam);
                    }
                    else // plik nie istnieje - zrób nowy (doszła w najnowszym rankingu jakaś nowa drużyna) i weź flagę
                    {
                        List <TeamInFile> initialList = new List <TeamInFile>(); // lista z tylko jednym wpisem
                        initialList.Add(teamInFile);
                        string json = JsonConvert.SerializeObject(initialList, Newtonsoft.Json.Formatting.Indented);

                        System.IO.File.WriteAllText(path + "/data/teams/" + teamInRank.Name.Replace("/", "&") + ".json", json);

                        using (var client = new WebClient()) {
                            client.DownloadFile(teamInRank.FlagUrl, path + "data/flags/" + teamInRank.Name.Replace("/", "&") + ".png");
                        }
                    }
                }

                // ######################### usuń i zrób od nowa _teamsList.json (mogła dojść nowa drużyna)
                // #########################
                if (File.Exists(path + "data/teams/_teamsList.json"))
                {
                    File.Delete(path + "data/teams/_teamsList.json");
                    CreateTeamList();
                }
            }
            catch (Exception ex) // nie ma rankingu o takim Id
            {
                throw new ApplicationException("Nie powiodło się updateWithLast. Sprawdź czy dane nie są już aktualne. " + ex.Message, ex);
            }
            return("[updateWithLast] zakończono powodzeniem");
        }