Esempio n. 1
0
        /// <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");
            }
        }
Esempio n. 2
0
    /// <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);
    }
Esempio n. 3
0
        /// <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");
            }
        }
Esempio n. 4
0
        /// <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");
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        /// <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");
            }
        }
Esempio n. 9
0
        /// <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");
            }
        }
Esempio n. 10
0
    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");
            }
        }
Esempio n. 12
0
        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();
        }
Esempio n. 13
0
        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));
            }
        }
Esempio n. 14
0
    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);
        }
    }