Beispiel #1
0
        public void                                     LoadPrices(IPriceProvider a_PriceProvider, Settings.V2._PriceSettings a_Settings, bool a_Silent)
        {
            StopUpdaterThread();

            m_ItemsDB.ResetItemPrices();

            ItemPrices.PricesDataTable pricesTable = new ItemPrices.PricesDataTable();

            string selectSQL = "Select * from " + pricesTable.TableName + " where " +
                               "(" + pricesTable.ProviderIDColumn.ColumnName + " = @ProviderID) AND " +
                               "(" + pricesTable.RegionIDColumn.ColumnName + " = @RegionID) AND " +
                               "(" + pricesTable.SolarIDColumn.ColumnName + " = @SolarID) AND " +
                               "(" + pricesTable.StationIDColumn.ColumnName + " = @StationID) AND" +
                               "(" + pricesTable.PriceTypeColumn.ColumnName + " = @PriceType)";

            SQLiteCommand sqlCommand  = new SQLiteCommand(selectSQL, m_DbConnection);
            PriceRecord   priceFilter = a_PriceProvider.GetCurrentFilter();

            sqlCommand.Parameters.AddWithValue("@ProviderID", (UInt32)priceFilter.Provider);
            sqlCommand.Parameters.AddWithValue("@RegionID", priceFilter.RegionID);
            sqlCommand.Parameters.AddWithValue("@SolarID", priceFilter.SolarID);
            sqlCommand.Parameters.AddWithValue("@StationID", priceFilter.StationID);
            sqlCommand.Parameters.AddWithValue("@PriceType", (UInt32)priceFilter.PriceType);

            SQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlCommand);

            adapter.Fill(pricesTable);

            foreach (ItemPrices.PricesRow currRow in pricesTable.Rows)
            {
                DbRecordToItemRecord(currRow);
            }

            TestMarketPrices(a_PriceProvider, a_Settings, a_Silent);
        }
Beispiel #2
0
        private List <PriceRecord> ParseReplyXML(XmlDocument a_Xml)
        {
            XmlNodeList        xmlItems = a_Xml.GetElementsByTagName("row");
            List <PriceRecord> result   = new List <PriceRecord>();

            foreach (XmlNode currNode in xmlItems)
            {
                PriceRecord newRecord = GetCurrentFilter();

                String attr_buysell = currNode.Attributes["buysell"].Value;
                if ("b" == attr_buysell)
                {
                    newRecord.PriceType = PriceTypes.Buy95Pct;
                }
                else if ("s" == attr_buysell)
                {
                    newRecord.PriceType = PriceTypes.Sell95Pct;
                }
                else
                {
                    throw new FormatException("Invalid response xml format");
                }

                newRecord.TypeID     = Convert.ToUInt32(currNode.Attributes["typeID"].Value);
                newRecord.Price      = Convert.ToDouble(currNode.Attributes["price"].Value, CultureInfo.InvariantCulture);
                newRecord.UpdateTime = (UInt64)DateTime.UtcNow.ToFileTimeUtc();

                result.Add(newRecord);
            }

            return(result);
        }
Beispiel #3
0
        protected PriceRecord                   ComposePrice(JToken a_Value, UInt32 a_TypeID, PriceTypes a_PriceType)
        {
            PriceRecord result = GetCurrentFilter();

            result.PriceType  = a_PriceType;
            result.Price      = a_Value.Value <double>();
            result.TypeID     = a_TypeID;
            result.UpdateTime = (UInt64)DateTime.UtcNow.ToFileTimeUtc();

            return(result);
        }
Beispiel #4
0
 private static void                     PriceRecordToDbRecord(PriceRecord a_PriceRecord, ItemPrices.PricesRow a_DbRecord)
 {
     a_DbRecord.ProviderID = (UInt32)a_PriceRecord.Provider;
     a_DbRecord.RegionID   = a_PriceRecord.RegionID;
     a_DbRecord.SolarID    = a_PriceRecord.SolarID;
     a_DbRecord.StationID  = a_PriceRecord.StationID;
     a_DbRecord.PriceType  = (UInt32)a_PriceRecord.PriceType;
     a_DbRecord.TypeID     = a_PriceRecord.TypeID;
     a_DbRecord.Price      = a_PriceRecord.Price;
     a_DbRecord.UpdateTime = a_PriceRecord.UpdateTime;
 }
        private PriceRecord                             ComposePrice(XmlNode a_ItemNode, UInt32 a_TypeID, PriceTypes a_PriceType)
        {
            PriceRecord result = GetCurrentFilter();

            result.PriceType  = a_PriceType;
            result.Price      = ReadInnerDouble(a_ItemNode);
            result.TypeID     = a_TypeID;
            result.UpdateTime = (UInt64)DateTime.UtcNow.ToFileTimeUtc();

            return(result);
        }
Beispiel #6
0
 public bool                                     IsMatchesFilter(PriceRecord a_Filter)
 {
     return
         (
         (this.Provider == a_Filter.Provider) &&
         (this.RegionID == a_Filter.RegionID) &&
         (this.SolarID == a_Filter.SolarID) &&
         (this.StationID == a_Filter.StationID) &&
         (this.PriceType == a_Filter.PriceType)
         );
 }
Beispiel #7
0
        public PriceRecord                              GetCurrentFilter()
        {
            PriceRecord filter = new PriceRecord();

            filter.Provider   = PriceProviders.FuzzworkCoUk;
            filter.RegionID   = m_Settings.IsRegion ? m_Settings.RegionID : 0;
            filter.SolarID    = 0;
            filter.StationID  = m_Settings.IsRegion ? 0 : m_Settings.StationID;
            filter.PriceType  = m_Settings.PriceType;
            filter.TypeID     = 0;
            filter.Price      = 0;
            filter.UpdateTime = 0;

            return(filter);
        }
Beispiel #8
0
        public PriceRecord                              GetCurrentFilter()
        {
            PriceRecord filter = new PriceRecord();

            filter.Provider   = PriceProviders.EveMarketdataCom;
            filter.RegionID   = m_Settings.RegionID;
            filter.SolarID    = m_Settings.SolarID;
            filter.StationID  = m_Settings.StationID;
            filter.PriceType  = m_Settings.PriceType;
            filter.TypeID     = 0;
            filter.Price      = 0;
            filter.UpdateTime = 0;

            return(filter);
        }
Beispiel #9
0
        public void                                     DropPrices(IPriceProvider a_PriceProvider)
        {
            StopUpdaterThread();

            ItemPrices.PricesDataTable pricesTable = new ItemPrices.PricesDataTable();

            string selectSQL = "Delete from " + pricesTable.TableName + " where " +
                               "(" + pricesTable.ProviderIDColumn.ColumnName + " = @ProviderID) AND " +
                               "(" + pricesTable.RegionIDColumn.ColumnName + " = @RegionID) AND " +
                               "(" + pricesTable.SolarIDColumn.ColumnName + " = @SolarID) AND " +
                               "(" + pricesTable.StationIDColumn.ColumnName + " = @StationID) AND" +
                               "(" + pricesTable.PriceTypeColumn.ColumnName + " = @PriceType)";

            SQLiteCommand sqlCommand  = new SQLiteCommand(selectSQL, m_DbConnection);
            PriceRecord   priceFilter = a_PriceProvider.GetCurrentFilter();

            sqlCommand.Parameters.AddWithValue("@ProviderID", (UInt32)priceFilter.Provider);
            sqlCommand.Parameters.AddWithValue("@RegionID", priceFilter.RegionID);
            sqlCommand.Parameters.AddWithValue("@SolarID", priceFilter.SolarID);
            sqlCommand.Parameters.AddWithValue("@StationID", priceFilter.StationID);
            sqlCommand.Parameters.AddWithValue("@PriceType", (UInt32)priceFilter.PriceType);

            sqlCommand.ExecuteNonQuery();
        }
Beispiel #10
0
        private void                            ApplyPrices(List <PriceRecord> a_Prices, PriceRecord a_Filter)
        {
            ItemPrices.PricesDataTable newDbData = new ItemPrices.PricesDataTable();

            foreach (PriceRecord currRecord in a_Prices)
            {
                ItemPrices.PricesRow dbRecord = newDbData.NewPricesRow();
                PriceRecordToDbRecord(currRecord, dbRecord);
                newDbData.Rows.Add(dbRecord);

                // Price provider can return more data then requested (for example, all price types at once, or all regions at once).
                // If data matches currently selected filter, apply it to loaded items.
                if (currRecord.IsMatchesFilter(a_Filter))
                {
                    DbRecordToItemRecord(dbRecord);
                }
            }

            // Store everything in database
            m_Database.ReplaceRows(newDbData, newDbData.Rows);
        }
Beispiel #11
0
        private void BtnLoadMineralPrices_Click(object sender, EventArgs e)
        {
            List <UInt32> loadPricesFor = new List <UInt32>();

            loadPricesFor.Add((UInt32)EveTypeIDs.Tritanium);
            loadPricesFor.Add((UInt32)EveTypeIDs.Pyerite);
            loadPricesFor.Add((UInt32)EveTypeIDs.Mexallon);
            loadPricesFor.Add((UInt32)EveTypeIDs.Isogen);
            loadPricesFor.Add((UInt32)EveTypeIDs.Noxcium);
            loadPricesFor.Add((UInt32)EveTypeIDs.Zydrine);
            loadPricesFor.Add((UInt32)EveTypeIDs.Megacyte);
            loadPricesFor.Add((UInt32)EveTypeIDs.Morphite);

            IPriceProvider provider = PriceProviderAuto.GetPriceProvider(m_Settings.PriceLoad.Minerals);

            // @@@@ Check for exceptions?
            List <PriceRecord> prices      = provider.GetPrices(loadPricesFor);
            PriceRecord        priceFilter = provider.GetCurrentFilter();

            foreach (PriceRecord currRecord in prices)
            {
                if (!currRecord.IsMatchesFilter(priceFilter))
                {
                    continue;
                }

                switch ((EveTypeIDs)currRecord.TypeID)
                {
                case EveTypeIDs.Tritanium:
                    TxtTritanium.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Pyerite:
                    TxtPyerite.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Mexallon:
                    TxtMexallon.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Isogen:
                    TxtIsogen.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Noxcium:
                    TxtNoxcium.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Zydrine:
                    TxtZydrine.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Megacyte:
                    TxtMegacyte.Value = (decimal)currRecord.Price;
                    break;

                case EveTypeIDs.Morphite:
                    TxtMorphite.Value = (decimal)currRecord.Price;
                    break;
                }
            }
        }