Пример #1
0
        private static EveIntelCharacterInfo[] GetEveIntelCharacterInfos(long solarsystemID, [NotNull] Dictionary <long, string> characters)
        {
            long[] characterIds = characters.Keys.ToArray();
            Dictionary <long, IntelData.IntelDataRow> result = new Dictionary <long, IntelData.IntelDataRow>();

            // try read info from local db
            IQueryable <IntelData.IntelDataRow> q = from o in _IntelData.IntelDataTable
                                                    where characterIds.Contains(o.CharacterID)
                                                    select o;
            int cached = 0;

            foreach (IntelData.IntelDataRow row in q)
            {
                result[row.CharacterID] = row;
                ++cached;
            }

            if (cached == characters.Count)
            {
                return(result.Values.Select(DataHelper.GetEveIntelCharacterInfo).ToArray());
            }

            // download infos not stored in local db and save them
            foreach (KeyValuePair <long, string> pair in characters)
            {
                if (result.ContainsKey(pair.Key))
                {
                    continue;
                }

                CvaCharacterInfo cvaCharacterInfo = CvaClient.GetCharacterInfo(pair.Key, pair.Value);
                if (cvaCharacterInfo != null)
                {
                    IntelData.IntelDataRow intelDataRow = new IntelData.IntelDataRow();
                    DataHelper.FillintelDataRow(intelDataRow, cvaCharacterInfo);
                    intelDataRow.SolarsystemID   = solarsystemID;
                    intelDataRow.SolarsystemTime = DateTime.Now;
                    _IntelData.IntelDataTable.Add(intelDataRow);
                    result.Add(intelDataRow.CharacterID, intelDataRow);
                }
            }
            return(result.Values.Select(DataHelper.GetEveIntelCharacterInfo).ToArray());
        }
Пример #2
0
 public static void FillintelDataRow([NotNull] IntelData.IntelDataRow intelDataRow, [NotNull] CvaCharacterInfo cvaCharacterInfo)
 {
     intelDataRow.CharacterID     = cvaCharacterInfo.EveId;
     intelDataRow.CharacterName   = cvaCharacterInfo.Label;
     intelDataRow.CharacterKos    = cvaCharacterInfo.Kos;
     intelDataRow.CorporationName = cvaCharacterInfo.Corp.Label;
     intelDataRow.CorporationKos  = cvaCharacterInfo.Corp.Kos;
     intelDataRow.AllianceName    = cvaCharacterInfo.Corp.Alliance?.Label;
     intelDataRow.AllianceKos     = cvaCharacterInfo.Corp.Alliance?.Kos ?? false;
 }