Пример #1
0
        private void BloombergAdHocRequestDataReadyHandler(BloombergAdHocRequestData returnedReq)
        {
            NLogger.Instance.Info("{0} Ad hoc data received for request ID {1} for {2} at {3}.", Process.GetCurrentProcess().Id,
                                  returnedReq.OriginalRequestItem.ID,
                                  returnedReq.OriginalRequestItem.BBTicker,
                                  DateTime.Now.ToString("HH:mm"));

            //call db.savevalues with the original Request Item
            var valueArray = returnedReq.ReturnData.EndsWith("|") ?
                             returnedReq.ReturnData.Substring(0, returnedReq.ReturnData.Length - 1).Split('|') :
                             returnedReq.ReturnData.Split('|');

            //fill asset class to last value;
            returnedReq.OriginalRequestItem.TickerDownloadAssetClass = valueArray[valueArray.Length - 1];

            //fill errors
            if (valueArray[0].StartsWith("Problem with Request format", StringComparison.OrdinalIgnoreCase)
                ||
                valueArray[0].StartsWith("Error_Code", StringComparison.OrdinalIgnoreCase)
                )
            {
                returnedReq.OriginalRequestItem.Errors += string.Format("Toronto AdHoc Service/Bloomberg AdHoc Data License Webservice error: {0}", valueArray[0]);
            }
            else
            {
                //error log NA NS or blanks.
                var fieldList = returnedReq.OriginalRequestItem.BBFieldList.Split(',');
                for (int i = 0; i < fieldList.Length; i++)
                {
                    var returnedValue = valueArray[i];
                    var key           = fieldList[i];

                    //Clean values
                    valueArray[i] = Static.CleanValueReturnedFromBloomberg(returnedReq.OriginalRequestItem.BBTicker, key, valueArray[i]);

                    //dont write N.A.
                    if (returnedValue.Equals("N.A.") || returnedValue.Equals("N.S.") || returnedValue.Trim().Equals(string.Empty))
                    {
                        returnedReq.OriginalRequestItem.Errors += string.Format("[{0}|returned {1}]", key, returnedValue.Trim().Equals(string.Empty) ? "blank string" : returnedValue);
                        valueArray[i] = null;
                    }
                }
                returnedReq.OriginalRequestItem.Data.Add(DateTime.Now, valueArray);
            }
            Db.SaveValues(new List <RequestItem> {
                returnedReq.OriginalRequestItem
            });

            CostReportUserAttribution(new List <RequestItem> {
                returnedReq.OriginalRequestItem
            });
        }
Пример #2
0
        public virtual void ProcessDataRequests(IEnumerable <RequestItem> requestItems)
        {
            int tickerCount     = 0;
            int tickerCountHits = 0;
            int fieldCount      = 0;
            int fieldCountHits  = 0;

            foreach (var item in requestItems)
            {
                tickerCount++;
                //calendar holidays
                if (item.BBFieldList.StartsWith("CALENDAR_NON_SETTLEMENT_DATES["))
                {
                    var list       = Db.GetCalendarNonSetttlementDates(new CalendarNonSettlementDateRequest(item.BBFieldList));
                    var listString = new List <string>();
                    foreach (var thisDate in list)
                    {
                        listString.Add(thisDate.ToString("yyyy-MM-dd"));
                    }
                    var returnedValuesFromDatawarehouse = new List <string> {
                        string.Concat(string.Join(";", listString.ToArray()), ";")
                    };
                    item.Data.Add(DateTime.Now, returnedValuesFromDatawarehouse.ToArray());
                }
                else
                {
                    var t = GetDataFromDatawarehouse(item);
                    item.WarehouseData = t;
                    if (t == null)
                    {
                        item.Errors += "Ticker not found in warehouse";
                    }
                    else
                    {
                        item.TickerDownloadAssetClass = t.DL_ASSET_CLASS;
                        if (!t.TickerFoundInBackOfficeFiles && !t.TickerFoundInPerSecurityPull)
                        {
                            item.Errors += "Ticker not found in Bloomberg per security pull or overnight back office files.";
                        }
                        else if (t.BLOOMBERGERRORCODE != null && !t.BLOOMBERGERRORCODE.Equals("0") && !t.BLOOMBERGERRORCODE.Equals("10"))
                        {
                            item.Errors += string.Format("Bloomberg returned an error code: {0}", t.BLOOMBERGERRORCODE);
                        }
                        else
                        {
                            tickerCountHits++;
                            var returnedValuesFromDatawarehouse = new List <string>();
                            foreach (var field in item.riFields)
                            {
                                fieldCount++;
                                var       cleanField = field.Key.ToUpper().Trim();
                                FieldInfo myf        = t.GetType().GetField(cleanField);

                                if (myf != null && myf.GetValue(t) != null)
                                {
                                    fieldCountHits++;
                                    var returnedValue = myf.GetValue(t).ToString();

                                    //Clean values
                                    returnedValue = Static.CleanValueReturnedFromBloomberg(item.OriginalInputTicker, cleanField, returnedValue);

                                    //dont write N.A.
                                    if (returnedValue.Equals("N.A.") || returnedValue.Equals("N.S.") || returnedValue.Trim().Equals(string.Empty))
                                    {
                                        returnedValuesFromDatawarehouse.Add(null);
                                        item.Errors += string.Format("[{0}|cache returned {1}]", field.Key, returnedValue.Trim().Equals(string.Empty) ? "blank string" : returnedValue);
                                    }
                                    else
                                    {
                                        returnedValuesFromDatawarehouse.Add(returnedValue);
                                    }
                                }
                                else
                                {
                                    returnedValuesFromDatawarehouse.Add(null);
                                    item.Errors += string.Format("[{0}|{1}]", field.Key, "field not found in cache");
                                }
                            }

                            item.Data.Add(DateTime.Now, returnedValuesFromDatawarehouse.ToArray());
                        }
                    }
                    CostReportUserAttribution(new List <RequestItem> {
                        item
                    });
                }
                //save
                Db.SaveValues(new List <RequestItem> {
                    item
                });
            }

            NLogger.Instance.Info("Hit rate: Tickers: " + tickerCountHits + "/" + tickerCount + " Fields: " + fieldCountHits + "/" + fieldCount);
        }