Beispiel #1
0
        public void SetProductDataToSave(CMEProduct.ProductsMain prodobjTmp)
        {
            DataTable dt = typeProductTable();

            foreach (var item in prodobjTmp._embedded.products)
            {
                string prodGuid = item.productGuid.ToString();

                dt.Rows.Add(
                    item.productGuid,
                    item.productGuidInt,
                    item.productName,
                    item.securityType,
                    item.clearingSymbol,
                    item.masterSymbol,
                    item.exchangeClearing,
                    item.exchangeGlobex,
                    item.assetClass,
                    item.assetSubClass,
                    item.sector,
                    item.subSector,
                    item.dailyFlag,
                    item.settlePxCcy,
                    item.minGlobexOrdQty,
                    item.maxGlobexOrdQty,
                    item.tradePxCcy,
                    item.globexGroupCode,
                    item.itcCode,
                    item.pxQuoteMethod,                     //codeMethod in Table
                    item.lastUpdated
                    );

                CME_API cmeAPI        = new CME_API();
                string  cmeLink       = cmeAPI.CreateLink(1);           // Get instrument link
                string  prodInstrLnk  = cmeLink + prodGuid + "/instruments";
                int     pageSizeInstr = Convert.ToInt32(ConfigurationManager.AppSettings.Get("CMEAPI_PageSize"));
                string  paramInstrLnk = "?page=0&size=" + pageSizeInstr.ToString();
                var     jsonProdInst  = new WebClient().DownloadString(prodInstrLnk + paramInstrLnk);

                CMEInstrument.InstrumentMain instrobjTmp = JsonConvert.DeserializeObject <CMEInstrument.InstrumentMain>(jsonProdInst);

                DataTable dtInst = typeInstrumentTable();

                Console.Write("Collecting product instrument for " + prodGuid);
                for (int iCnt = 0; iCnt < instrobjTmp._metadata.totalPages; iCnt++)
                {
                    Console.WriteLine("Collecting Instrument information from source." + instrobjTmp._metadata.totalElements.ToString() + " - " + iCnt.ToString() + " of " + instrobjTmp._metadata.totalPages.ToString());
                    if (iCnt > 0)
                    {
                        paramInstrLnk = "?page=" + iCnt.ToString() + "&size=" + pageSizeInstr.ToString();
                        jsonProdInst  = new WebClient().DownloadString(prodInstrLnk + paramInstrLnk);

                        instrobjTmp = JsonConvert.DeserializeObject <CMEInstrument.InstrumentMain>(jsonProdInst);
                    }
                    if (instrobjTmp._embedded != null)
                    {
                        foreach (var inst in instrobjTmp._embedded.instruments)
                        {
                            dtInst.Rows.Add(
                                inst.guid,
                                inst.guidInt,
                                inst.productGuidInt,
                                inst.instrumentName,
                                inst.globexSecurityId,
                                inst.globexSymbol,
                                inst.positionRemovalDate,
                                inst.lastUpdated,
                                inst.lastTradeDate,
                                inst.lastNoticeDate,
                                inst.lastDeliveryDate,
                                inst.globexLastTradeDate,
                                inst.globexFirstTradeDate,
                                inst.firstTradeDate,
                                inst.firstNoticeDate,
                                inst.firstDeliveryDate,
                                inst.finalSettlementDate,
                                inst.initialInventoryDueDate,
                                inst.lastInventoryDueDate,
                                inst.contractMonth,
                                inst.valuationMethod,
                                inst.strikePx,
                                inst.couponRate,
                                inst.tccAlias,
                                inst.itcAlias,                                 // iccalias in DataTable name
                                inst.gbxAlias,
                                inst.clrAlias,
                                inst.firstPositionDate,
                                inst.exchangeClearing
                                );
                        }
                        DtExecNonQuerySP(dtInst, "USP_CME_InstrumentInsert", "@tblInstrument");
                        Console.WriteLine("Instrument " + prodGuid + " saved....");
                    }
                }

                Console.WriteLine("Product " + prodGuid);
            }

            DtExecNonQuerySP(dt, "USP_CME_ProductInsert", "@tblProducts");
        }