/// <summary> /// Store the specified API Character record in the database. /// </summary> /// <param name="apiChar"></param> public static void Store(APICharacter apiChar) { EMMADataSet.APICharactersDataTable table = new EMMADataSet.APICharactersDataTable(); lock (apiCharTableAdapter) { EMMADataSet.APICharactersRow data = LoadCharFromDB(apiChar.CharID); bool newRow = false; if (data == null) { newRow = true; data = table.NewAPICharactersRow(); data.ID = apiChar.CharID; } data.CharSheet = apiChar.CharSheet.InnerXml; data.CorpSheet = apiChar.CorpSheet.InnerXml; data.LastCharSheetUpdate = apiChar.CharSheetXMLLastUpdate; data.LastCorpSheetUpdate = apiChar.CorpSheetXMLLastUpdate; data.LastCharAssetsUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Char, APIDataType.Assets); data.LastCharJournalUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Char, APIDataType.Journal); data.LastCharOrdersUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Char, APIDataType.Orders); data.LastCharTransUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Char, APIDataType.Transactions); data.LastCorpAssetsUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Corp, APIDataType.Assets); data.LastCorpJournalUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Corp, APIDataType.Journal); data.LastCorpOrdersUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Corp, APIDataType.Orders); data.LastCorpTransUpdate = apiChar.GetLastAPIUpdateTime(CharOrCorp.Corp, APIDataType.Transactions); data.CorpFinanceAccess = apiChar.CorpFinanceAccess; data.HighestCharJournalID = apiChar.GetHighestID(CharOrCorp.Char, APIDataType.Journal); data.HighestCharTransID = apiChar.GetHighestID(CharOrCorp.Char, APIDataType.Transactions); data.HighestCorpJournalID = apiChar.GetHighestID(CharOrCorp.Corp, APIDataType.Journal); data.HighestCorpTransID = apiChar.GetHighestID(CharOrCorp.Corp, APIDataType.Transactions); try { if (newRow) { table.AddAPICharactersRow(data); apiCharTableAdapter.Update(table); } else { apiCharTableAdapter.Update(data); } } catch (Exception ex) { throw new EMMADataException(ExceptionSeverity.Critical, "Error storing eve character " + "data in the EMMA database.", ex); } } }
/// <summary> /// Return the specified API character row direct from the EMMA database /// </summary> /// <returns></returns> private static EMMADataSet.APICharactersRow LoadCharFromDB(long charID) { EMMADataSet.APICharactersRow retVal = null; EMMADataSet.APICharactersDataTable charData = new EMMADataSet.APICharactersDataTable(); lock (apiCharTableAdapter) { apiCharTableAdapter.ClearBeforeFill = true; apiCharTableAdapter.FillByID(charData, charID); if (charData != null) { if (charData.Count == 1) { retVal = charData[0]; } } } return retVal; }