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()); }
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; }