/// <summary> /// Provides functional information about the requested market data provider /// </summary> /// <param name="msg">IMessage containg Inquiry request</param> private void SendMarketDataProviderInfo(IMessage <InquiryMessage> msg) { try { // Create the Inquiry Respons to be sent InquiryResponse inquiryResponse = _messageProcessor.GetMarketDataProviderInfo(msg.Body.MarketDataProvider); if (inquiryResponse == null) { Logger.Error("No information available for: " + msg.Body.MarketDataProvider, _type.FullName, "SendMarketDataProviderInfo"); return; } inquiryResponse.Type = Constants.InquiryTags.MarketDataProviderInfo; // Create EasyNetQ message to be published Message <InquiryResponse> message = new Message <InquiryResponse>(inquiryResponse); if (Logger.IsDebugEnabled) { Logger.Debug("Publishing Inquiry Response for: " + msg.Body.Type, _type.FullName, "OnInquiryRequestReceived"); } // Publish Messages on the exchange PublishMessages(msg.Properties.ReplyTo, message); } catch (Exception exception) { Logger.Error(exception, _type.FullName, "SendMarketDataProviderInfo"); } }
/// <summary> /// /// </summary> /// <param name="api"></param> /// <param name="param"></param> /// <returns></returns> public InquiryResponse DuitkuInquiryRequest(InquiryRequest inquiryRequest) { InquiryResponse result = new InquiryResponse(); try { string data = JsonConvert.SerializeObject(inquiryRequest); string response = request("https://passport.duitku.com/webapi/api/disbursement/inquiry", data); if (String.IsNullOrEmpty(response)) { return(new InquiryResponse()); } else { result = JsonConvert.DeserializeObject <InquiryResponse>(response); } } catch (Exception ex) { Log.WriteErrorLog("HttpHelper::DuitkuInquiryRequest", ex.Message); } return(result); }
/// <summary> /// Provides new unique Application ID in response to inquiry request /// </summary> /// <param name="msg">IMessage containg Inquiry request</param> private void SendApplictionId(IMessage <InquiryMessage> msg) { try { // Create the Inquiry Respons to be sent InquiryResponse inquiryResponse = new InquiryResponse(); string id = ApplicationIdGenerator.NextId(); inquiryResponse.Type = Constants.InquiryTags.AppID; inquiryResponse.AppId = id; // Create EasyNetQ message to be published Message <InquiryResponse> message = new Message <InquiryResponse>(inquiryResponse); if (Logger.IsDebugEnabled) { Logger.Debug("Publishing Inquiry Response for: " + msg.Body.Type, _type.FullName, "OnInquiryRequestReceived"); } // Publish Messages on the exchange PublishMessages(msg.Properties.ReplyTo, message); } catch (Exception exception) { Logger.Error(exception, _type.FullName, "SendApplictionId"); } }
/// <summary> /// Extracts Market Data Providers Info from received response from MDE /// </summary> /// <param name="inquiryResponse">TradeHub InquiryResponse object containing Market Data Provivder Info</param> private void OnMarketDataInfoReceived(InquiryResponse inquiryResponse) { try { MarketDataProviderInfo marketDataProviderInfo = new MarketDataProviderInfo(); marketDataProviderInfo.DataProviderName = inquiryResponse.MarketDataProvider; // Set Market Data Provider information received if (inquiryResponse.MarketDataProviderInfo.Contains(typeof(ILiveTickDataProvider))) { marketDataProviderInfo.ProvidesTickData = true; } if (inquiryResponse.MarketDataProviderInfo.Contains(typeof(ILiveBarDataProvider))) { marketDataProviderInfo.ProvidesLiveBarData = true; } if (inquiryResponse.MarketDataProviderInfo.Contains(typeof(IHistoricBarDataProvider))) { marketDataProviderInfo.ProvidesHistoricalBarData = true; } // Raise Event to notify listeners if (_inquiryResponseArrived != null) { _inquiryResponseArrived(marketDataProviderInfo); } } catch (Exception exception) { _asyncClassLogger.Error(exception, _type.FullName, "OnMarketDataInfoReceived"); } }
public bool SaveInquiry(InquiryResponse inquiryResp) { bool isCreated = true; if (inquiryResp.Inquiry.InquiryID > 0) { inquiryRepository.Update(inquiryResp.Inquiry); isCreated = false; } else { inquiryRepository.Add(inquiryResp.Inquiry); } inquiryRepository.SaveChanges(); SaveInquiryDetails(inquiryResp); documentService.AddDocuments(inquiryResp.InquiryDocuments, inquiryResp.Inquiry.InquiryID, DocumentType.Inquiry); //Send Notification notificationService.AddNotification(new Notification { CategoryId = (int)NotificationType.Inquiry, ItemId = inquiryResp.Inquiry.InquiryID, ActionPerformed = isCreated?(int)ActionPerformed.Created: (int)ActionPerformed.Updated, CreatedBy = inquiryResp.Inquiry.UpdatedBy, CreatedDate = DateTime.UtcNow, Title = "Inquiry - " + (inquiryResp.Inquiry.CompanyName.Length > 35? inquiryResp.Inquiry.CompanyName.Substring(0, 35) + "..." : inquiryResp.Inquiry.CompanyName) }); return(true); }
public InquiryResponse Any(AddInquiryRequest request) { InquiriesRepository repository = new InquiriesRepository(); InquiryResponse response = new InquiryResponse(); try { BAL.Model.Inquiry inqury = new BAL.Model.Inquiry { Address = request.Address, City = request.City, ClientName = request.ClientName, Comments = request.Comments, InquiryCode = request.InquiryCode, Type = request.Type, InquiryType = request.InquiryType, Region = request.Region, Quotation = request.Quotation }; //FileStream fStream = File.OpenRead("G:\\t.pdf"); //byte[] contents = new byte[fStream.Length]; //fStream.Read(contents, 0, (int)fStream.Length); //fStream.Close(); //Inquiry inq = new Inquiry //{ // Address = "Temp", // City = "Baroda", // ClientName = "Andromeda", // Comments = "Test Entry", // InquiryCode = "AQLPPS", // InquiryType = 1, // Region="Surat", // Quotation= contents //}; response.UID = repository.InsertInquiry(inqury); response.ResultSuccess = true; } catch (Exception) { ValidationErrors.AddMany(repository.ValidationErrors); ValidationErrors.Add("InquryFail", "Failed to Insert Inqury."); } finally { response.ResultMessages = Utility.GetAllValidationErrorCodesAndMessages(ValidationErrors); } return(response); }
public InquiryResponse GetInquiryResponse(int?id) { InquiryResponse inquiryResponse = new InquiryResponse(); if (id != null) { inquiryResponse.Inquiry = inquiryRepository.Find((int)id); inquiryResponse.InquiryDetails = inquiryDetailRepository.GetInquiryDailByByInquiryId((int)id).ToList(); inquiryResponse.InquiryDocuments = documentService.GetAllDocumentByRefId((int)id, (int)DocumentType.Inquiry).ToList(); } inquiryResponse.Contacts = contactRepository.GetAll().ToList(); inquiryResponse.Products = productRepository.GetAll().ToList(); return(inquiryResponse); }
/// <summary> /// Inquiry Response Arrived from Position Engine /// </summary> /// <param name="inquiryResponse"></param> private void _mqServer_InquiryResponseArrived(InquiryResponse inquiryResponse) { try { if (Logger.IsDebugEnabled) { Logger.Debug("Inquiry Response recieved from Order Execution Engine: " + inquiryResponse, _type.FullName, "OnInquiryResponseArrived"); } if (inquiryResponse.Type.Equals(TradeHubConstants.InquiryTags.AppID)) { _appId = inquiryResponse.AppId; // Start MQ Server _mqServer.Connect(_appId); // Send Application Info _mqServer.SendAppInfoMessage(_appId); //subscribe to provider if (!string.IsNullOrEmpty(_orderExecutionServer)) { SubscribeProviderPosition(_orderExecutionServer); } // Raise Event to Notify Listeners that PE-Client is ready to entertain request if (_serverConnected != null) { _serverConnected(); } } else { if (_inquiryResponseArrived != null) { _inquiryResponseArrived(inquiryResponse); } } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "_mqServer_InquiryResponseArrived"); } }
/// <summary> /// Called when a Inquiry Response is recieved /// </summary> /// <param name="inquiryResponse">Incoming TradeHub InquiryResponse</param> private void OnInquiryResponseArrived(InquiryResponse inquiryResponse) { try { if (_asyncClassLogger.IsDebugEnabled) { _asyncClassLogger.Debug("Inquiry Response recieved from Market Data Engine: " + inquiryResponse, _type.FullName, "OnInquiryResponseArrived"); } if (inquiryResponse.Type.Equals(TradeConstants.InquiryTags.AppID)) { _appId = inquiryResponse.AppId; // Start MQ Server _mqServer.Connect(_appId); // Send Application Info _mqServer.SendAppInfoMessage(_appId); // Start Heartbeat Sequence _mqServer.StartHeartbeat(); // Raise Event to Notify Listeners that MDE-Client is ready to entertain request if (_serverConnected != null) { _serverConnected(); } } else if (inquiryResponse.Type.Equals(TradeConstants.InquiryTags.MarketDataProviderInfo)) { OnMarketDataInfoReceived(inquiryResponse); } else { _asyncClassLogger.Info("Invalid Response received from MDE", _type.FullName, "OnInquiryResponseArrived"); } } catch (Exception exception) { _asyncClassLogger.Error(exception, _type.FullName, "OnInquiryResponseArrived"); } }
public bool CheckTransferStatus(string disburseId) { HttpHelper http = new HttpHelper(); InquiryStatusRequest request = new InquiryStatusRequest(); request.disburseId = disburseId; request.InitSingature(); InquiryResponse response = http.DuitkuInquiryStatusRequest(request); Log.WriteDebugLog("LoanBank::CheckTransferStatus", "{0}", JsonConvert.SerializeObject(response)); if (response.responseCode == "00") { return(true); } else { return(false); } }
/// <summary> /// Called when Inquiry request is received from MQ Server /// </summary> private void OnInquiryRequestReceived(IMessage <InquiryMessage> inquiryMessage) { try { if (Logger.IsDebugEnabled) { Logger.Debug("Application Info received from MQ Server: " + inquiryMessage.Properties.AppId, _type.FullName, "OnInquiryRequestReceived"); } // Create the Inquiry Respons to be sent InquiryResponse inquiryResponse = new InquiryResponse(); if (inquiryMessage.Body.Type.Equals(Constants.InquiryTags.AppID)) { string id = ApplicationIdGenerator.NextId(); inquiryResponse.Type = Constants.InquiryTags.AppID; inquiryResponse.AppId = id; } else if (inquiryMessage.Body.Type.Equals(Constants.InquiryTags.DisconnectClient)) { OnDisconnectApplicationReceived(inquiryMessage.Properties.AppId); return; } // Create EasyNetQ message to be published Message <InquiryResponse> message = new Message <InquiryResponse>(inquiryResponse); if (Logger.IsDebugEnabled) { Logger.Debug("Publishing Inquiry Response for: " + inquiryMessage.Body.Type, _type.FullName, "OnInquiryRequestReceived"); } // Publish Messages on the exchange PublishMessages(inquiryMessage.Properties.ReplyTo, message); } catch (Exception exception) { Logger.Error(exception, _type.FullName, "OnInquiryRequestReceived"); } }
private void SaveInquiryDetails(InquiryResponse inquiryResp) { if (inquiryResp.Inquiry.InquiryID > 0) { var inquiryDetails = inquiryDetailRepository.GetInquiryDailByByInquiryId(inquiryResp.Inquiry.InquiryID).ToList(); foreach (var inquirydetail in inquiryDetails) { inquiryDetailRepository.Delete(inquirydetail); } } if (inquiryResp.InquiryDetails != null && inquiryResp.InquiryDetails.Any()) { foreach (var inquiryDetail in inquiryResp.InquiryDetails) { inquiryDetail.InquiryID = inquiryResp.Inquiry.InquiryID; inquiryDetailRepository.Add(inquiryDetail); } } inquiryDetailRepository.SaveChanges(); }
public ActionResult Create(InquiryViewModel inquiryViewModel) { try { inquiryViewModel.InquiryModel.UpdateDate = DateTime.UtcNow; inquiryViewModel.InquiryModel.UpdatedBy = User.Identity.GetUserId(); if (inquiryViewModel.InquiryModel.InquiryID == 0) { inquiryViewModel.InquiryModel.CreatedDate = DateTime.UtcNow; inquiryViewModel.InquiryModel.CreatedBy = User.Identity.GetUserId(); inquiryViewModel.InquiryModel.UserId = User.Identity.GetUserId(); } InquiryResponse inquiryResp = new InquiryResponse(); inquiryResp.Inquiry = inquiryViewModel.InquiryModel.MapClientToServer(); //if (inquiryViewModel.InquiryDetail != null) inquiryResp.InquiryDetails = new List <InquiryDetail> { new InquiryDetail { ProductID = inquiryViewModel.InquiryModel.InquiryProductId } }; //upload files data if (inquiryViewModel.UploadFiles.Any()) { foreach (var file in inquiryViewModel.UploadFiles) { if (file != null) { var tempStream = file.InputStream; byte[] bytes = new byte[tempStream.Length]; tempStream.Read(bytes, 0, Convert.ToInt32(tempStream.Length)); Document document = new Document { DocumentData = bytes, DocumentName = file.FileName, DocumentType = file.ContentType }; inquiryResp.InquiryDocuments.Add(document); } } } if (inquiryService.SaveInquiry(inquiryResp)) { TempData["message"] = new MessageViewModel { IsSaved = true, Message = "Your data has been saved successfully!" }; } else { TempData["message"] = new MessageViewModel { IsError = true, Message = "There is some problem, please try again!" }; } return(RedirectToAction("Create")); } catch (Exception e) { return(View(inquiryViewModel)); } }
public bool Transfer(DebitUserRecord record, out string errMsg) { Redis redis = new Redis(); errMsg = String.Empty; string key = String.Format("lock_{0}", record.debitId); string retKey = String.Format("release_{0}", record.debitId); if (redis.LockTake(key, record.debitId, 300)) { try { string transferResult = redis.StringGet(retKey); if (!String.IsNullOrEmpty(transferResult)) { InquiryResponse response = JsonConvert.DeserializeObject <InquiryResponse>(transferResult); if (response.responseCode == "00") { Log.WriteDebugLog("LoanBank::Transfer", "[{0}]早已转帐成功:{1}", record.debitId, response.responseDesc); return(true); } } else { HttpHelper http = new HttpHelper(); Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 准备转帐,查询银行信息。", record.debitId); //查询,验证转帐的银行信息 InquiryResponse response = null; response = DuitkuInquiryRequest(record); Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 核对银行帐号信息:{1}", record.debitId, JsonConvert.SerializeObject(response)); if (response.responseCode == "00") { Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 核对银行帐号信息,返回成功。", record.debitId); Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 核对帐户名称,record:{1} ,response:{2}", record.debitId, record.userName.Trim().ToUpper(), response.accountName.Trim().ToUpper()); string bankUserName = response.accountName.Replace(" ", "").Trim().ToUpper(); string recordUserName = record.userName.Replace(" ", "").Trim().ToUpper(); ///相似度匹配 float rate = HttpHelper.Levenshtein(bankUserName, recordUserName); if (bankUserName.IndexOf(recordUserName) > -1 || rate >= 0.7) { Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 帐户名称正确,初使化请求准备转帐。相似度:{1}%", record.debitId, rate * 100); TransferRequest transferRequest = new TransferRequest(); transferRequest.accountName = record.userName.ToUpper(); transferRequest.amountTransfer = response.amountTransfer; transferRequest.bankCode = response.bankCode.Trim(); transferRequest.custRefNumber = response.custRefNumber.Trim(); transferRequest.disburseId = response.disburseId; transferRequest.purpose = record.purpose; transferRequest.bankAccount = record.bankAccount; transferRequest.InitSingature(record.target); Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 开始转帐,渠道为:{1},请求参数为:{2}", record.debitId, record.target, JsonConvert.SerializeObject(transferRequest)); response = http.DuitkuTransferRequest(transferRequest); Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 转帐结果为:{1}", record.debitId, JsonConvert.SerializeObject(response)); if (response.responseCode == "00") { Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 转帐成功,将结果写入缓存,30天内避免重复打款。:{1}", record.debitId, response.responseDesc); redis.StringSet(retKey, JsonConvert.SerializeObject(response), 60 * 60 * 24 * 30); return(true); } else { errMsg = String.Format("{0}({1})", response.responseDesc, response.responseCode); Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 转帐失败:{1}", record.debitId, response.responseDesc); return(false); } } else { Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 银行卡对应的名字与用户填写的名字不同:{1}!={2},相似度:{3}", record.debitId, bankUserName, recordUserName, rate); errMsg = String.Format("Bank Information Incorrect.accountName:{0} incorrect.", record.userName); return(false); } } else { errMsg = String.Format("{0}({1})", response.responseDesc, response.responseCode); Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 转帐失败:{1}", record.debitId, response.responseDesc); return(false); } } } catch (Exception ex) { Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 转帐失败,发生异常,渠道:{1}, {2}", record.debitId, record.target, ex.Message); } finally { redis.LockRelease(key, record.debitId); } return(false); } else { errMsg = "get lock fail."; return(false); } }