Example #1
0
        public void T004_ImportCavernsHistoryCSV()
        {
            using (var s = Db.SessionFactory.OpenSession())
            {
                var    file = System.IO.File.OpenText(@"C:\projekty\ProITSoft\CotGLibs\CotGLibs\CotGBrowser\data\CavernsHistory.csv");
                string line;

                var t = s.BeginTransaction();

                while ((line = file.ReadLine()) != null)
                {
                    var fields = line.Split(';');

                    if (fields[0] == "Id")
                    {
                        continue; //header
                    }
                    var row = new DBCavernsHistory();
                    row.PlayerName = fields[1];
                    row.Score      = long.Parse(fields[2]);
                    row.Rank       = int.Parse(fields[3]);
                    row.CreateDT   = DateTime.Parse(fields[4]);

                    s.SaveOrUpdate(row);
                }

                t.Commit();
            }
        }
        public void UpdateEmpire(DBCurrentEmpireRanking dbRank, CurrentEmpireRanking currentRank)
        {
            if (dbRank.Score.HasValue) //sojusze tylko dla ogólnej punktacji są
            {
                dbRank.AlianceName = currentRank.AlianceName;
            }

            dbRank.UpdateDT = DateTime.Now;

            if (currentRank.Rank.HasValue)
            {
                if (dbRank.Id.HasValue)
                {
                    dbRank.RankLastChange = dbRank.Rank - currentRank.Rank;
                }

                dbRank.Rank = currentRank.Rank;
            }

            if (currentRank.Score.HasValue)
            {
                if (dbRank.Id.HasValue)
                {
                    dbRank.ScoreLastChange = currentRank.Score - dbRank.Score;
                }

                dbRank.Score = currentRank.Score;
            }

            if (currentRank.CitiesNo.HasValue)
            {
                if (dbRank.Id.HasValue)
                {
                    dbRank.CitiesNoLastChange = currentRank.CitiesNo - dbRank.CitiesNo;
                }

                dbRank.CitiesNo = currentRank.CitiesNo;
            }

            if (currentRank.UnitsKills.HasValue)
            {
                dbRank.UnitsKills = currentRank.UnitsKills;
            }

            if (currentRank.UnitsKillsRank.HasValue)
            {
                dbRank.UnitsKillsRank = currentRank.UnitsKillsRank;
            }

            if (currentRank.Caverns.HasValue)
            {
                dbRank.Caverns = currentRank.Caverns;
            }

            if (currentRank.CavernsRank.HasValue)
            {
                dbRank.CavernsRank = currentRank.CavernsRank;
            }

            if (currentRank.DefReputation.HasValue)
            {
                dbRank.DefReputation = currentRank.DefReputation;
            }

            if (currentRank.DefReputationRank.HasValue)
            {
                dbRank.DefReputationRank = currentRank.DefReputationRank;
            }

            if (currentRank.OffReputation.HasValue)
            {
                dbRank.OffReputation = currentRank.OffReputation;
            }

            if (currentRank.OffReputationRank.HasValue)
            {
                dbRank.OffReputationRank = currentRank.OffReputationRank;
            }

            if (currentRank.Score.HasValue)
            {
                //historia głównego rankingu
                var histRank = new DBRankingsEmpireScore();
                histRank.AlianceName = dbRank.AlianceName;
                histRank.CitiesNo    = dbRank.CitiesNo.Value;
                histRank.Continent   = dbRank.Continent;
                histRank.CreateDT    = dbRank.UpdateDT;
                histRank.PlayerName  = dbRank.PlayerName;
                histRank.Rank        = dbRank.Rank.Value;
                histRank.Score       = dbRank.Score.Value;
                Session.SaveOrUpdate(histRank);

                /*
                 * var last3Rows = Session.QueryOver<DBRankingsEmpireScore>()
                 *  .Where(x => x.PlayerName == dbRank.PlayerName && x.Continent == dbRank.Continent)
                 *  .OrderBy(x => x.CreateDT).Desc
                 *  .Take(3)
                 *  .List();
                 */

                //odczytuję historię ostanich 3 pomiarów do obliczenia średniej z przyrostów
                var last3Rows = m_ScoreHistCache
                                .Where(x => x.PlayerName == dbRank.PlayerName && x.Continent == dbRank.Continent)
                                .OrderByDescending(x => x.CreateDT)
                                .ToList();

                if (last3Rows.Count > 0)
                {
                    dbRank.ScoreDiffAvg = (last3Rows.Max(x => x.Score) - last3Rows.Min(x => x.Score)) / last3Rows.Count;
                }
                else
                {
                    dbRank.ScoreDiffAvg = 0;
                }
            }

            if (currentRank.UnitsKills.HasValue)
            {
                //historia ubitych jednostek
                var histKills = new DBUnitsKillsHistory();
                histKills.PlayerName = dbRank.PlayerName;
                histKills.Rank       = dbRank.UnitsKillsRank.Value;
                histKills.Score      = dbRank.UnitsKills.Value;
                histKills.CreateDT   = dbRank.UpdateDT;
                Session.SaveOrUpdate(histKills);

                //odczytuję historię ostanich 3 pomiarów do obliczenia średniego przyrostu
                var last3Rows = m_KilsHistCache
                                .Where(x => x.PlayerName == dbRank.PlayerName)
                                .OrderByDescending(x => x.CreateDT)
                                .ToList();

                if (last3Rows.Count > 0)
                {
                    dbRank.UnitsKillsDiffAvg = (last3Rows.Max(x => x.Score) - last3Rows.Min(x => x.Score)) / last3Rows.Count;
                }
                else
                {
                    dbRank.UnitsKillsDiffAvg = 0;
                }
            }

            if (currentRank.DefReputation.HasValue)
            {
                //historia chwały w obronie
                var hist = new DBDefReputationHistory();
                hist.PlayerName = dbRank.PlayerName;
                hist.Rank       = dbRank.DefReputationRank.Value;
                hist.Score      = dbRank.DefReputation.Value;
                hist.CreateDT   = dbRank.UpdateDT;
                Session.SaveOrUpdate(hist);

                //odczytuję historię ostanich 3 pomiarów do obliczenia średniego przyrostu
                var last3Rows = m_DefHistCache
                                .Where(x => x.PlayerName == dbRank.PlayerName)
                                .OrderByDescending(x => x.CreateDT)
                                .ToList();

                if (last3Rows.Count > 0)
                {
                    dbRank.DefReputationDiffAvg = (last3Rows.Max(x => x.Score) - last3Rows.Min(x => x.Score)) / last3Rows.Count;
                }
                else
                {
                    dbRank.DefReputationDiffAvg = 0;
                }
            }

            if (currentRank.OffReputation.HasValue)
            {
                //historia chwały w ataku
                var hist = new DBOffReputationHistory();
                hist.PlayerName = dbRank.PlayerName;
                hist.Rank       = dbRank.OffReputationRank.Value;
                hist.Score      = dbRank.OffReputation.Value;
                hist.CreateDT   = dbRank.UpdateDT;
                Session.SaveOrUpdate(hist);

                //odczytuję historię ostanich 3 pomiarów do obliczenia średniego przyrostu
                var last3Rows = m_OffHistCache
                                .Where(x => x.PlayerName == dbRank.PlayerName)
                                .OrderByDescending(x => x.CreateDT)
                                .ToList();

                if (last3Rows.Count > 0)
                {
                    dbRank.OffReputationDiffAvg = (last3Rows.Max(x => x.Score) - last3Rows.Min(x => x.Score)) / last3Rows.Count;
                }
                else
                {
                    dbRank.OffReputationDiffAvg = 0;
                }
            }

            if (currentRank.Caverns.HasValue)
            {
                //historia lochów
                var histCav = new DBCavernsHistory();
                histCav.PlayerName = dbRank.PlayerName;
                histCav.Rank       = dbRank.CavernsRank.Value;
                histCav.Score      = dbRank.Caverns.Value;
                histCav.CreateDT   = dbRank.UpdateDT;
                Session.SaveOrUpdate(histCav);
            }

            //tutaj bo wyżej jeszcze średnią wyliczam...
            Session.SaveOrUpdate(dbRank);
        }