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 }); }
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); }