Exemple #1
0
 public static void InitData(databases.baseDS.exchangeDetailRow row)
 {
     row.code       = "";
     row.marketCode = "";
     row.address    = "";
     row.isEnabled  = true;
     row.orderId    = 0;
     row.culture    = commonTypes.Consts.constDefaultCultureCode;
 }
Exemple #2
0
        protected override bool GetData(databases.baseDS.exchangeDetailRow exchangeDetailRow, ref MarketData vnIdx, ref MarketData vn30Idx)
        {
            clientSSI.AjaxWebServiceSoapClient client = null;
            try
            {
                client = new clientSSI.AjaxWebServiceSoapClient();
                client.Endpoint.Address = new System.ServiceModel.EndpointAddress(exchangeDetailRow.address);
                System.ServiceModel.BasicHttpBinding binding = (client.Endpoint.Binding as System.ServiceModel.BasicHttpBinding);

                binding.OpenTimeout  = TimeSpan.FromSeconds(Consts.constWebServiceTimeOutInSecs);
                binding.CloseTimeout = binding.OpenTimeout;
                binding.SendTimeout  = binding.OpenTimeout;

                binding.MaxReceivedMessageSize = Consts.constWebServiceMaxReceivedMessageSize;
                binding.MaxBufferSize          = Consts.constWebServiceMaxReceivedMessageSize;

                binding.ReaderQuotas.MaxStringContentLength = Consts.constWebServiceMaxStringContentLength;
                binding.ReaderQuotas.MaxBytesPerRead        = Consts.constWebServiceMaxBytesPerRead;

                CultureInfo   dataCulture = application.AppLibs.GetCulture(exchangeDetailRow.culture);
                String        s           = client.GetMarketAllIndex(0);
                List <string> tradeList   = new List <string>(s.Split('$'));
                for (int i = 0; i < tradeList.Count; i++)
                {
                    List <string> tradeData = new List <string>(tradeList[i].Split('|'));
                    if (tradeData[0].Trim() == "" || tradeData[1].Trim() == "" ||
                        tradeData[8].Trim() == "" || tradeData[9].Trim() == "")
                    {
                        continue;
                    }
                    vnIdx.Value    = decimal.Parse(tradeData[0], dataCulture);
                    vnIdx.TotalQty = decimal.Parse(tradeData[1], dataCulture);
                    vnIdx.TotalAmt = decimal.Parse(tradeData[2], dataCulture);

                    vn30Idx.Value    = decimal.Parse(tradeData[11], dataCulture);
                    vn30Idx.TotalQty = decimal.Parse(tradeData[14], dataCulture);
                    vn30Idx.TotalAmt = decimal.Parse(tradeData[15], dataCulture);
                    return(true);
                }
            }
            catch (WebException e)
            {
                return(false);
            }
            finally
            {
                if (client != null && client.State == System.ServiceModel.CommunicationState.Opened)
                {
                    client.Close();
                }
            }

            return(true);
        }
Exemple #3
0
        public virtual bool ImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            databases.baseDS.priceDataDataTable priceTbl = GetImportFromWeb(updateTime, exchangeDetailRow);
            if (priceTbl == null)
            {
                return(false);
            }

            // Different culture has different start of week, ie in VN culture : start of week is Monday (not Sunday)
            CultureInfo exchangeCulture = application.AppLibs.GetExchangeCulture(exchangeDetailRow.marketCode);

            databases.AppLibs.AggregatePriceData(priceTbl, exchangeCulture, null);
            return(true);
        }
Exemple #4
0
        public static bool ImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            bool retVal = true;

            switch (exchangeDetailRow.code.Trim().ToUpper())
            {
            case "HOSE_MHBS":
                Stock.hoseImport hoseImport = new Stock.hoseImport();
                retVal = hoseImport.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "HASTC_MHBS":
                Stock.htastcImport htastcImport = new Stock.htastcImport();
                retVal = htastcImport.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "HOSE_SSI":
            case "HASTC_SSI":
                Stock.ssi_StockImport ssiStockImport = new Stock.ssi_StockImport();
                retVal = ssiStockImport.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "VNIDX_SSI":
                Stock.ssi_vnIdxImport vnIdxSSI = new Stock.ssi_vnIdxImport();
                retVal = vnIdxSSI.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "VNIDX_VSE":
                Stock.vnIdxImport vnIdxVSE = new Stock.vnIdxImport();
                retVal = vnIdxVSE.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "HN_IDX1":     //??
                Stock.hnIdxImport hnIdxImport = new Stock.hnIdxImport();
                retVal = hnIdxImport.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "GOLD_FOREX":
                Gold.forexImport forexImport = new Gold.forexImport();
                retVal = forexImport.ImportFromWeb(updateTime, exchangeDetailRow);
                break;

            case "GOLD_KITCO":
                Gold.kitcoImport kitcoImport = new Gold.kitcoImport();
                retVal = kitcoImport.ImportFromWeb(updateTime, exchangeDetailRow);
                break;
            }
            return(retVal);
        }
Exemple #5
0
        protected virtual bool GetData(databases.baseDS.exchangeDetailRow exchangeDetailRow, ref MarketData vnIdx, ref MarketData vn30Idx)
        {
            CultureInfo dataCulture = common.language.GetCulture("en-US");

            //Hose
            clientHOSE.HoSTC_ServiceSoapClient client = new Imports.clientHOSE.HoSTC_ServiceSoapClient();
            client.Endpoint.Address = new System.ServiceModel.EndpointAddress(exchangeDetailRow.address);

            System.ServiceModel.BasicHttpBinding binding = (client.Endpoint.Binding as System.ServiceModel.BasicHttpBinding);

            binding.OpenTimeout  = TimeSpan.FromSeconds(Consts.constWebServiceTimeOutInSecs);
            binding.CloseTimeout = binding.OpenTimeout;
            binding.SendTimeout  = binding.OpenTimeout;

            binding.MaxReceivedMessageSize = Consts.constWebServiceMaxReceivedMessageSize;
            binding.MaxBufferSize          = Consts.constWebServiceMaxReceivedMessageSize;

            binding.ReaderQuotas.MaxStringContentLength = Consts.constWebServiceMaxStringContentLength;
            binding.ReaderQuotas.MaxBytesPerRead        = Consts.constWebServiceMaxBytesPerRead;

            string[]      arr     = client.GetLiveTotalMKT().Split('*');
            string        content = string.Empty;
            List <string> rows    = new List <string>();

            foreach (var item in arr)
            {
                if (item.Trim() == "")
                {
                    continue;
                }
                rows.Add(item);
                content += item + Environment.NewLine;
            }
            string[] dRow = rows[8].Split('|');

            vnIdx.Value    = decimal.Parse(dRow[0], dataCulture);
            vnIdx.TotalQty = decimal.Parse(dRow[4], dataCulture);
            vnIdx.TotalAmt = decimal.Parse(dRow[5], dataCulture);

            vn30Idx.Value    = decimal.Parse(dRow[10], dataCulture);
            vn30Idx.TotalQty = 0;
            vn30Idx.TotalAmt = 0;

            return(true);
        }
        public virtual bool ImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            try
            {
                databases.baseDS.priceDataDataTable priceTbl = GetImportFromWeb(updateTime, exchangeDetailRow);
                if (priceTbl == null)
                {
                    return(false);
                }

                // Different culture has different start of week, ie in VN culture : start of week is Monday (not Sunday)
                CultureInfo exchangeCulture = application.AppLibs.GetExchangeCulture(exchangeDetailRow.marketCode);
                databases.AppLibs.AggregatePriceData(priceTbl, exchangeCulture, null);
                return(true);
            }
            catch (Exception er)
            {
                //retVal = false;
                commonClass.SysLibs.WriteSysLog(common.SysSeverityLevel.Error, "SRV004", er);
                return(false);
            }
        }
Exemple #7
0
        public override databases.baseDS.priceDataDataTable GetImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            try
            {
                databases.importDS.importPriceDataTable importPriceTbl;
                metaStock meta = GetMeta();
                if (meta == null)
                {
                    return(null);
                }

                //try
                //{
                importPriceTbl = GetPriceFromWeb(updateTime, meta, exchangeDetailRow);
                Imports.Libs.AddNewCode(exchangeDetailRow.marketCode, importPriceTbl, null);
                databases.DbAccess.UpdateData(importPriceTbl);
                ////}
                //catch (Exception er)
                //{
                //    commonClass.SysLibs.WriteSysLog(common.SysSeverityLevel.Error, "SRV004 - Import price error", er);
                //    throw er;
                //}

                //try
                //{
                databases.baseDS.priceDataDataTable priceTbl = new databases.baseDS.priceDataDataTable();
                Imports.Libs.AddImportPrice(importPriceTbl, priceTbl);
                databases.DbAccess.UpdateData(priceTbl);
                return(priceTbl);
                //}
                //catch (Exception er)
                //{
                //    commonClass.SysLibs.WriteSysLog(common.SysSeverityLevel.Error, "SRV004 - Price Data table", er);
                //    throw er;
                //}
            }

            catch (Exception er)
            {
                commonClass.SysLibs.WriteSysLog(common.SysSeverityLevel.Error, "SRV004 - GetImport From Web error", er);
                return(null);
            }
        }
Exemple #8
0
        /// <summary>
        /// Import data from URL to tables : importPrice
        /// The function also detect and add new companies to the database
        /// </summary>
        /// <param name="url">URL to get data</param>
        /// <param name="priceMeta">meta describe the webpage structure</param>
        /// <param name="stockExchangeCode">stock exchange code of imported data </param>
        /// <param name="importPriceTbl"> where to store imported data </param>
        public databases.importDS.importPriceDataTable GetPriceFromWeb(DateTime updateTime, metaStock priceMeta, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            bool bHaveData = false; //Kiem tra xem bang co du lieu hay ko
            //Data in
            CultureInfo CultureInfoUS = common.language.GetCulture("en-US");

            databases.importDS.importPriceDataTable importPriceTbl = new databases.importDS.importPriceDataTable();
            this.mappingList = CreateMapping(priceMeta, importPriceTbl);

            // Get the URL specified
            var webGet   = new HtmlWeb();
            var document = webGet.Load(exchangeDetailRow.address);

            // Get <a> tags that have a href attribute and non-whitespace inner text
            var linksOnPage = from item in document.DocumentNode.Descendants()
                              where item.Name == "td" && item.Attributes["id"] == null
                              select new
            {
                Text = item.InnerText
            };

            bool    fError = false;
            int     igmoreRowCount = 0, columnCount = 0;
            decimal val = 0;

            databases.importDS.importPriceRow importRow = null;
            databases.importDS.importPriceRow oldImportRow;
            string stockCode;

            foreach (var item in linksOnPage)
            {
                //Check whether to ignore some items at the first
                if (++igmoreRowCount <= priceMeta.noRowIgnore)
                {
                    continue;
                }
                if (fError)
                {
                    break;
                }

                if (columnCount == priceMeta.startAtColId)
                {
                    stockCode = item.Text.Trim();
                    importRow = importPriceTbl.NewimportPriceRow();
                    databases.AppLibs.InitData(importRow);
                    importRow.onDate        = updateTime;
                    importRow.stockCode     = stockCode;
                    importRow.isTotalVolume = true;
                    columnCount++;
                    continue;
                }
                //Last column
                if (columnCount == priceMeta.endAtColId)
                {
                    if (importRow.closePrice > 0)
                    {
                        //Only add new when there are some changes
                        oldImportRow = lastImportData.Find(importRow);
                        if (!lastImportData.IsSameData(importRow, oldImportRow))
                        {
                            importPriceTbl.AddimportPriceRow(importRow);
                            lastImportData.Update(importRow);
                        }
                        else
                        {
                            importRow.CancelEdit();
                        }
                    }
                    else
                    {
                        importRow.CancelEdit();
                    }
                    columnCount = 0;
                    continue;
                }
                object obj = this.mappingList.GetValue(columnCount.ToString());
                if (obj != null)
                {
                    val = 0; common.system.StrToDecimal(item.Text, CultureInfoUS, out val);

                    //15/07: Kiem tra gia tri co bang 0 hay ko. Neu co thi se co loi doc du lieu
                    if (val != 0)
                    {
                        bHaveData = true;
                    }
                    importRow[(string)obj] = val;
                }
                columnCount++;
            }

            //Neu ko co du lieu
            if (!bHaveData)
            {
                throw new Exception();
            }

            return(importPriceTbl);
        }
Exemple #9
0
        public override databases.baseDS.priceDataDataTable GetImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            if (!Get_IDX_HASTC(exchangeDetailRow.address, ref hastcIdx))
            {
                return(null);
            }
            databases.importDS.importPriceDataTable importPriceTbl = new databases.importDS.importPriceDataTable();
            AddImportRow(updateTime, hastcIdx, true, importPriceTbl);

            Imports.Libs.AddNewCode(exchangeDetailRow.marketCode, importPriceTbl, null);
            databases.DbAccess.UpdateData(importPriceTbl);

            databases.baseDS.priceDataDataTable priceTbl = new databases.baseDS.priceDataDataTable();
            Imports.Libs.AddImportPrice(importPriceTbl, priceTbl);
            databases.DbAccess.UpdateData(priceTbl);
            return(priceTbl);
        }
Exemple #10
0
        /// <summary>
        /// Private - SU dung ASPWebservices
        /// </summary>
        /// <param name="updateTime"></param>
        /// <param name="exchangeDetailRow"></param>
        /// <returns></returns>
        private databases.importDS.importPriceDataTable GetPriceFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            int idx = 0;

            clientSSI.AjaxWebServiceSoapClient client = null;
            try
            {
                client = new clientSSI.AjaxWebServiceSoapClient();
                //client = new clientSSI.AjaxWebServiceSoapClient(exchangeDetailRow.address);
                //HoSTC_ServiceSoapClient
                client.Endpoint.Address = new System.ServiceModel.EndpointAddress(exchangeDetailRow.address);
                System.ServiceModel.BasicHttpBinding binding = (client.Endpoint.Binding as System.ServiceModel.BasicHttpBinding);

                binding.OpenTimeout  = TimeSpan.FromSeconds(Consts.constWebServiceTimeOutInSecs);
                binding.CloseTimeout = binding.OpenTimeout;
                binding.SendTimeout  = binding.OpenTimeout;

                binding.MaxReceivedMessageSize = Consts.constWebServiceMaxReceivedMessageSize;
                binding.MaxBufferSize          = Consts.constWebServiceMaxReceivedMessageSize;

                binding.ReaderQuotas.MaxStringContentLength = Consts.constWebServiceMaxStringContentLength;
                binding.ReaderQuotas.MaxBytesPerRead        = Consts.constWebServiceMaxBytesPerRead;

                String s = String.Empty;
                switch (exchangeDetailRow.code.ToUpper().Trim())
                {
                case "HOSE_SSI":
                    //s = client.GetDataHoSTC2();
                    s = client.GetHoseStockQuote(0);
                    break;

                case "HASTC_SSI":
                    //s = client.GetDataHaSTC2();
                    break;

                default: return(null);
                }
                //Parsing
                List <string> tradeList = new List <string>(s.Split('#'));
                databases.importDS.importPriceDataTable importPriceTbl = new databases.importDS.importPriceDataTable();
                CultureInfo dataCulture = application.AppLibs.GetCulture(exchangeDetailRow.culture);
                for (idx = 0; idx < tradeList.Count; idx++)
                {
                    List <string> tradeData = new List <string>(tradeList[idx].Split('|'));
                    if (tradeData[8].Trim() == "" || tradeData[9].Trim() == "")
                    {
                        continue;
                    }
                    databases.importDS.importPriceRow importRow = importPriceTbl.NewimportPriceRow();
                    databases.AppLibs.InitData(importRow);
                    importRow.stockCode     = tradeData[0].ToString();
                    importRow.onDate        = updateTime;
                    importRow.closePrice    = decimal.Parse(tradeData[8], dataCulture);
                    importRow.volume        = decimal.Parse(tradeData[9], dataCulture);
                    importRow.isTotalVolume = false;//day ko phai total volume. Cai nay la volume tung thoi diem
                    importPriceTbl.AddimportPriceRow(importRow);
                }
                return(importPriceTbl);
            }
            catch (Exception er)
            {
                common.SysLog.WriteLog("Error : " + er.Message);
                return(null);
            }
            finally
            {
                if (client != null && client.State == System.ServiceModel.CommunicationState.Opened)
                {
                    client.Close();
                }
            }
        }
Exemple #11
0
        /// <summary>
        /// Override method - /// Import stock data of HOSE and HASTC from  http://banggia.ssi.com.vn/AjaxWebService.asmx
        /// </summary>
        /// <param name="updateTime"></param>
        /// <param name="exchangeDetailRow"></param>
        /// <returns></returns>
        public override databases.baseDS.priceDataDataTable GetImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            databases.importDS.importPriceDataTable importPriceTbl = GetPriceFromWeb(updateTime, exchangeDetailRow);
            if (importPriceTbl == null)
            {
                return(null);
            }

            Imports.Libs.AddNewCode(exchangeDetailRow.marketCode, importPriceTbl, null);
            databases.DbAccess.UpdateData(importPriceTbl);
            databases.baseDS.priceDataDataTable priceTbl = new databases.baseDS.priceDataDataTable();
            Imports.Libs.AddImportPrice(importPriceTbl, priceTbl);
            databases.DbAccess.UpdateData(priceTbl);
            return(priceTbl);
        }
Exemple #12
0
        public override databases.baseDS.priceDataDataTable GetImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            if (!GetData(exchangeDetailRow, ref hnIdx, ref hnIdx30))
            {
                return(null);
            }
            databases.importDS.importPriceDataTable importPriceTbl = new databases.importDS.importPriceDataTable();
            AddImportRow(updateTime, hnIdx, true, importPriceTbl);
            //AddImportRow(updateTime, vn30Idx, false, importPriceTbl);

            Imports.Libs.AddNewCode(exchangeDetailRow.marketCode, importPriceTbl, null);
            databases.DbAccess.UpdateData(importPriceTbl);

            databases.baseDS.priceDataDataTable priceTbl = new databases.baseDS.priceDataDataTable();
            Imports.Libs.AddImportPrice(importPriceTbl, priceTbl);
            databases.DbAccess.UpdateData(priceTbl);
            return(priceTbl);
        }
Exemple #13
0
        public override databases.baseDS.priceDataDataTable GetImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow exchangeDetailRow)
        {
            // Different culture has differebr strt of week, ie in VN culture : start of week is Monday (not Sunday)
            if (myCulture == null)
            {
                myCulture = application.AppLibs.GetCulture(exchangeDetailRow.culture);
            }

            databases.importDS.importPriceDataTable importPriceTbl = new databases.importDS.importPriceDataTable();
            ForexData goldData = ImportKitco(exchangeDetailRow.address);

            if (null == goldData)
            {
                return(null);
            }

            AddImportRow(updateTime, goldData, false, importPriceTbl);

            Imports.Libs.AddNewCode(exchangeDetailRow.marketCode, importPriceTbl, null);
            databases.DbAccess.UpdateData(importPriceTbl);

            databases.baseDS.priceDataDataTable priceTbl = new databases.baseDS.priceDataDataTable();
            Imports.Libs.AddImportPrice(importPriceTbl, priceTbl);
            databases.DbAccess.UpdateData(priceTbl);

            return(priceTbl);
        }
 public abstract databases.baseDS.priceDataDataTable GetImportFromWeb(DateTime updateTime, databases.baseDS.exchangeDetailRow row);