Ejemplo n.º 1
0
        public void OnVolumeChange(VolumeDataRespose volumeData, MarketCapData capData)
        {
            try
            {
                HelperForLog.WriteLogIntoFile("OnVolumeChange", ControllerName, "Call OnVolumeChangeMethod : volumeData : " + JsonConvert.SerializeObject(volumeData) + " : Market Data : " + JsonConvert.SerializeObject(capData));
                if (volumeData != null && capData != null)
                {
                    LastPriceViewModel lastPriceData = new LastPriceViewModel();
                    lastPriceData.LastPrice = capData.LastPrice;
                    lastPriceData.UpDownBit = volumeData.UpDownBit;

                    string Base = volumeData.PairName.Split("_")[1];
                    PairData(volumeData, Base);
                    HelperForLog.WriteLogIntoFile("OnVolumeChange", ControllerName, "After Pair Data Call Base :" + Base + "  DATA :" + JsonConvert.SerializeObject(volumeData));
                    MarketData(capData, volumeData.PairName);
                    HelperForLog.WriteLogIntoFile("OnVolumeChange", ControllerName, "After Market Data Call Pair :" + volumeData.PairName + "  DATA :" + JsonConvert.SerializeObject(capData));
                    LastPrice(lastPriceData, volumeData.PairName);
                    HelperForLog.WriteLogIntoFile("OnVolumeChange", ControllerName, "After Last price Call Pair :" + volumeData.PairName + "  DATA :" + JsonConvert.SerializeObject(lastPriceData));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "An unexpected exception occured,\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
                //throw ex;
            }
        }
Ejemplo n.º 2
0
        public void ActivityNotification(string Msg, string Token)
        {
            try
            {
                SignalRComm <String> CommonData = new SignalRComm <String>();
                CommonData.EventType    = Enum.GetName(typeof(enSignalREventType), enSignalREventType.Channel);
                CommonData.Method       = Enum.GetName(typeof(enMethodName), enMethodName.ActivityNotification);
                CommonData.ReturnMethod = Enum.GetName(typeof(enReturnMethod), enReturnMethod.RecieveNotification);
                CommonData.Subscription = Enum.GetName(typeof(enSubscriptionType), enSubscriptionType.OneToOne);
                CommonData.ParamType    = Enum.GetName(typeof(enSignalRParmType), enSignalRParmType.AccessToken);
                CommonData.Data         = Msg;
                CommonData.Parameter    = null;

                //SignalRDataNotify SendData = new SignalRDataNotify();
                SignalRData SendData = new SignalRData();
                SendData.Method    = enMethodName.ActivityNotification;
                SendData.Parameter = Token;
                SendData.DataObj   = JsonConvert.SerializeObject(CommonData);
                //SendData.WalletName = Wallet;
                HelperForLog.WriteLogIntoFile("ActivityNotification", ControllerName, " MSG :" + Msg);
                _mediator.Send(SendData);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "An unexpected exception occured,\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
                //throw ex;
            }
        }
Ejemplo n.º 3
0
 public Task SellerSideWalletBal(string Token, string WalletName, string Data)
 {
     try
     {
         //_chatHubContext.Clients.Group("SellerSideWalletBal:" + Pair).SendAsync("RecieveSellerSideWalletBal", Data);
         //++++++++++++++++++++++//
         //var Redis = new RadisServices<ConnetedClientList>(this._fact);
         //ConnetedClientList User = new ConnetedClientList();
         //User = Redis.GetConnectionID(Token);
         //_chatHubContext.Clients.Client(User.ConnectionId).SendAsync("RecieveSellerSideWalletBal", Data);
         var Redis = new RadisServices <ConnetedClientToken>(this._fact);
         IEnumerable <string> ClientList = Redis.GetKey(Token);
         foreach (string s in ClientList.ToList())
         {
             var Key = s;
             Key = Key.Split(":")[1].ToString();
             string Pair = Redis.GetPairOrMarketData(Key, ":", "Pairs");
             if (Pair.Split("_")[0].ToString() == WalletName)
             {
                 _chatHubContext.Clients.Client(Key).SendAsync(Enum.GetName(typeof(enReturnMethod), enReturnMethod.RecieveSellerSideWalletBal), Data);
                 HelperForLog.WriteLogIntoFile("SellerSideWalletBal", "SocketHub", " Send Data :" + Data);
             }
             else
             {
                 // ignore Data
             }
         }
         return(Task.FromResult(0));
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, "An unexpected exception occured,\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
         return(Task.FromResult(0));
     }
 }
        public async Task <IActionResult> Withdrawal(string coin, string accWalletID, [FromBody] WithdrawalReq Request)
        {
            var accessToken = await HttpContext.GetTokenAsync("access_token");

            HelperForLog.WriteLogIntoFile(1, _basePage.UTC_To_IST(), this.ControllerContext.RouteData.Values["action"].ToString(), this.GetType().Name, JsonConvert.SerializeObject(Request), accessToken);
            WithdrawalRes Response = new WithdrawalRes();

            try
            {
                var user = await _userManager.GetUserAsync(HttpContext.User);

                if (user == null)
                {
                    Response.ReturnCode = enResponseCode.Fail;
                    Response.ReturnMsg  = EnResponseMessage.StandardLoginfailed;
                    Response.ErrorCode  = enErrorCode.StandardLoginfailed;
                }
                else
                {
                    Response = _walletService.Withdrawl(coin, accWalletID, Request, user.Id);
                }
                HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), this.ControllerContext.RouteData.Values["action"].ToString(), this.GetType().Name, JsonConvert.SerializeObject(Response), "");
                return(Ok(Response));
            }
            catch (Exception ex)
            {
                //HelperForLog.WriteErrorLog(_basePage.UTC_To_IST(), this.ControllerContext.RouteData.Values["action"].ToString(), this.GetType().Name, ex.ToString());
                //Response.ReturnCode = enResponseCode.InternalError;
                //return BadRequest(Response);
                return(BadRequest(new BizResponseClass {
                    ReturnCode = enResponseCode.InternalError, ReturnMsg = ex.ToString(), ErrorCode = enErrorCode.Status500InternalServerError
                }));
            }
        }
Ejemplo n.º 5
0
 public void OnStatusSuccess(short Status, TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType)
 {
     try
     {
         GetTradeHistoryInfo historyInfo  = new GetTradeHistoryInfo();
         GetBuySellBook      BuySellmodel = new GetBuySellBook();
         //update Recent Order
         //pop OpenOrder
         //add tradehistory
         //add orderhistory
         //pop buyer/seller book;
         //HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, "Call ---- TransactionQueue :" + JsonConvert.SerializeObject(Newtransaction) + " TradeTransactionQueue :" + JsonConvert.SerializeObject(NewTradeTransaction));
         if (string.IsNullOrEmpty(Token))
         {
             Token = GetTokenByUserID(NewTradeTransaction.MemberID.ToString());
         }
         if (!string.IsNullOrEmpty(Token))
         {
             BuySellmodel.Amount      = 0;
             BuySellmodel.OrderId     = new Guid();
             BuySellmodel.RecordCount = 0;
             if (NewTradeTransaction.TrnType == 4)//Buy
             {
                 BuySellmodel.Price = NewTradeTransaction.BidPrice;
                 BuyerBook(BuySellmodel, NewTradeTransaction.PairName);
                 HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, "BuyerBook call TRNNO:" + Newtransaction.Id);
             }
             else//Sell
             {
                 BuySellmodel.Price = NewTradeTransaction.AskPrice;
                 SellerBook(BuySellmodel, NewTradeTransaction.PairName);
                 HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, "SellerBook call TRNNO:" + Newtransaction.Id);
             }
             GetAndSendRecentOrderData(Newtransaction, NewTradeTransaction, Token, OrderType);  //Update Recent
             HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, " Aftre Recent Order Socket call TRNNO:" + Newtransaction.Id);
             GetAndSendOpenOrderData(Newtransaction, NewTradeTransaction, Token, OrderType, 1); //update OpenOrder
             HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, " Aftre Open Order Socket call TRNNO:" + Newtransaction.Id);
             historyInfo = GetAndSendTradeHistoryInfoData(Newtransaction, NewTradeTransaction, OrderType);
             OrderHistory(historyInfo, historyInfo.PairName); //Order
             HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, " Aftre Order History Socket call  : TRNNO:" + Newtransaction.Id);
             TradeHistory(historyInfo, Token);                //TradeHistory
             HelperForLog.WriteLogIntoFile("OnStatusSuccess", ControllerName, " Aftre Trade History Socket call  : TRNNO:" + Newtransaction.Id);
             var msg = EnResponseMessage.SignalRTrnSuccessfullySettled;
             msg = msg.Replace("#Price#", historyInfo.Price.ToString());
             msg = msg.Replace("#Qty#", historyInfo.Amount.ToString());
             msg = msg.Replace("#Total#", historyInfo.Total.ToString());
             ActivityNotification(msg, Token);
         }
     }
     catch (Exception ex)
     {
         HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
         //throw ex;
     }
 }
        //public readonly ILogger<WebAPISendRequest> _log;

        //public WebAPISendRequest(ILogger<WebAPISendRequest> log)
        //{
        //    _log = log;
        //}

        public string  SendAPIRequestAsync(string Url, string Request, string ContentType, int Timeout = 180000, WebHeaderCollection headerDictionary = null, string MethodType = "POST")
        {
            string responseFromServer = "";

            try
            {
                object ResponseObj = new object();
                //     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                //| SecurityProtocolType.Tls11
                //| SecurityProtocolType.Tls12
                //| SecurityProtocolType.Ssl3;
                ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
                var httpWebRequest = (HttpWebRequest)WebRequest.Create(Url);
                httpWebRequest.ContentType = ContentType;

                httpWebRequest.Method    = MethodType.ToUpper();
                httpWebRequest.KeepAlive = false;
                httpWebRequest.Timeout   = Timeout;

                httpWebRequest.Headers = headerDictionary;

                //_log.LogInformation(System.Reflection.MethodBase.GetCurrentMethod().Name, Url, Request);
                HelperForLog.WriteLogIntoFile(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, Url + "Request::" + Request);
                if (Request != null)
                {
                    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    {
                        streamWriter.Write(Request);
                        streamWriter.Flush();
                        streamWriter.Close();
                    }
                }
                HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
                using (StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream()))
                {
                    responseFromServer = sr.ReadToEnd();
                    sr.Close();
                    sr.Dispose();
                }
                httpWebResponse.Close();
                //_log.LogInformation(System.Reflection.MethodBase.GetCurrentMethod().Name, responseFromServer);
                HelperForLog.WriteLogIntoFile(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, responseFromServer);
            }
            catch (Exception ex)
            {
                HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);

                //throw ex;
            }

            return(responseFromServer);
        }
Ejemplo n.º 7
0
        public void OnStatusCancel(short Status, TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType)
        {
            try
            {
                GetTradeHistoryInfo historyInfo = new GetTradeHistoryInfo();

                //pop from OpenOrder
                //update Recent order
                //add Trade history
                //HelperForLog.WriteLogIntoFile("OnStatusCancel", ControllerName, " TransactionQueue :" + JsonConvert.SerializeObject(Newtransaction) + " TradeTransactionQueue :" + JsonConvert.SerializeObject(NewTradeTransaction));
                if (string.IsNullOrEmpty(Token))
                {
                    Token = GetTokenByUserID(NewTradeTransaction.MemberID.ToString());
                }
                if (!string.IsNullOrEmpty(Token))
                {
                    GetAndSendOpenOrderData(Newtransaction, NewTradeTransaction, Token, OrderType, 1); //with amount 0, remove from OpenOrder
                    HelperForLog.WriteLogIntoFile("OnStatusCancel", ControllerName, " Aftre Open Order Socket call : TRNNO:" + Newtransaction.Id);
                    GetAndSendRecentOrderData(Newtransaction, NewTradeTransaction, Token, OrderType);  //Update Recent
                    HelperForLog.WriteLogIntoFile("OnStatusCancel", ControllerName, " Aftre Recent Order Socket call : TRNNO:" + Newtransaction.Id);
                    historyInfo = GetAndSendTradeHistoryInfoData(Newtransaction, NewTradeTransaction, OrderType);
                    TradeHistory(historyInfo, Token);//TradeHistory
                    HelperForLog.WriteLogIntoFile("OnStatusCancel", ControllerName, " Aftre Trade History Socket call : TRNNO:" + Newtransaction.Id);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "An unexpected exception occured,\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
                //throw ex;
            }
            //public void OnWalletBalChangeByUserID(WalletMasterResponse Data, string WalletTypeName, long UserID)
            //{
            //    try
            //    {
            //        //string str = "clientId=cleanarchitecture&grant_type=password&[email protected]&password=P@ssw0rd!&scope=openid profile email offline_access client_id roles phone";
            //        //str = str.Replace("=","\":\"");
            //        //str = str.Replace("&", "\",\"");
            //        //str = "{\"" + str + "\"}";
            //        //var obj = JsonConvert.DeserializeObject(str);
            //        //var jsonData= JsonConvert.SerializeObject(obj);
            //        var Redis = new RadisServices<ConnetedClientToken>(this._fact);
            //        string AccessToken = Redis.GetHashData("Tokens:" + UserID.ToString(), "Token");
            //        Token = AccessToken;
            //        BuyerSideWalletBal(Data, WalletTypeName, Token);
            //        SellerSideWalletBal(Data, WalletTypeName, Token);
            //    }
            //    catch (Exception ex)
            //    {
            //        HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
            //        //throw ex;
            //    }
        }
        public Task <string> SendRequestAsync(string Url, string Request = "", string MethodType = "GET", string ContentType = "application/json", WebHeaderCollection Headers = null, int Timeout = 9000)
        {
            string responseFromServer = "";

            try
            {
                object ResponseObj    = new object();
                var    httpWebRequest = (HttpWebRequest)WebRequest.Create(Url);

                httpWebRequest.Method = MethodType.ToUpper();
                if (Headers != null)
                {
                    httpWebRequest.Headers = Headers;
                }
                httpWebRequest.KeepAlive   = false;
                httpWebRequest.Timeout     = Timeout;
                httpWebRequest.ContentType = ContentType;
                //if (!string.IsNullOrEmpty(Headers))
                //{
                // httpWebRequest.Headers.Add(string.Format("Authorization: key={0}", Headers));
                // }


                HelperForLog.WriteLogIntoFile(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, Url);
                if (Request != "")
                {
                    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    {
                        streamWriter.Write(Request);
                        streamWriter.Flush();
                        streamWriter.Close();
                    }
                }

                HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
                using (StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream()))
                {
                    responseFromServer = sr.ReadToEnd();
                    sr.Close();
                    sr.Dispose();
                }
                httpWebResponse.Close();
                HelperForLog.WriteLogIntoFile(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, responseFromServer);
                return(Task.FromResult(responseFromServer));
            }
            catch (Exception ex)
            {
                HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
                throw ex;
            }
        }
Ejemplo n.º 9
0
 public void OnStatusPartialSuccess(short Status, TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType)
 {
     try
     {
         GetBuySellBook BuySellmodel = new GetBuySellBook();
         //update Buyer/seller book
         //HelperForLog.WriteLogIntoFile("OnStatusPartialSuccess", ControllerName, " TransactionQueue :" + JsonConvert.SerializeObject(Newtransaction) + " TradeTransactionQueue :" + JsonConvert.SerializeObject(NewTradeTransaction));
         if (string.IsNullOrEmpty(Token))
         {
             Token = GetTokenByUserID(NewTradeTransaction.MemberID.ToString());
         }
         if (!string.IsNullOrEmpty(Token))
         {
             List <GetBuySellBook> list = new List <GetBuySellBook>();
             if (NewTradeTransaction.TrnType == 4)//Buy
             {
                 list = _frontTrnRepository.GetBuyerBook(NewTradeTransaction.PairID, NewTradeTransaction.BidPrice);
                 foreach (var model in list)
                 {
                     BuySellmodel = model;
                     break;
                 }
                 if (BuySellmodel.OrderId.ToString() != "00000000-0000-0000-0000-000000000000")
                 {
                     BuyerBook(BuySellmodel, NewTradeTransaction.PairName);
                     HelperForLog.WriteLogIntoFile("OnStatusPartialSuccess", ControllerName, "BuyerBook call TRNNO:" + Newtransaction.Id);
                 }
             }
             else//Sell
             {
                 list = _frontTrnRepository.GetSellerBook(NewTradeTransaction.PairID, NewTradeTransaction.AskPrice);
                 foreach (var model in list)
                 {
                     BuySellmodel = model;
                     break;
                 }
                 if (BuySellmodel.OrderId.ToString() != "00000000-0000-0000-0000-000000000000")
                 {
                     SellerBook(BuySellmodel, NewTradeTransaction.PairName);
                     HelperForLog.WriteLogIntoFile("OnStatusPartialSuccess", ControllerName, "SellerBook call TRNNO:" + Newtransaction.Id);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, "An unexpected exception occured,\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
         //throw ex;
     }
 }
        public async Task Invoke(HttpContext context)
        {
            var injectedRequestStream = new MemoryStream();

            try
            {
                var requestLog =
                    $"REQUEST Host:{context.Request.Host} ,HttpMethod: {context.Request.Method}, Path: {context.Request.Path}";
                //string Path = context.Request.Path.ToString();
                //string[] PathDetails = Path.Split("/");

                var accessToken = await context.Request.HttpContext.GetTokenAsync("access_token");

                using (var bodyReader = new StreamReader(context.Request.Body))
                {
                    var bodyAsText = bodyReader.ReadToEnd();
                    if (string.IsNullOrWhiteSpace(bodyAsText) == false)
                    {
                        requestLog += $", Body : {bodyAsText}";
                    }

                    var bytesToWrite = Encoding.UTF8.GetBytes(bodyAsText);
                    injectedRequestStream.Write(bytesToWrite, 0, bytesToWrite.Length);
                    injectedRequestStream.Seek(0, SeekOrigin.Begin);
                    context.Request.Body = injectedRequestStream;
                }

                //if (PathDetails?[1] == "api")
                if (context.Request.Path.Value.Split("/")[1] != "swagger")
                {
                    HelperForLog.WriteLogIntoFile(1, _basePage.UTC_To_IST(), context.Request.Path.ToString(), context.Request.Path.ToString(), requestLog, accessToken);
                }
                //else if (PathDetails?[1] != "swagger")
                // HelperForLog.WriteLogIntoFile(1, _basePage.UTC_To_IST(), "", "", requestLog);
                //_logger.LogInformation(1, requestLog);
                await _next.Invoke(context);
            }
            catch (Exception ex)
            {
                HelperForLog.WriteErrorLog(_basePage.UTC_To_IST(), "", "", ex.ToString());
            }
            finally
            {
                injectedRequestStream.Dispose();
            }
        }
Ejemplo n.º 11
0
        public override void OnResultExecuting(ResultExecutingContext context)
        {
            try
            {
                //_logger.LogWarning("ClassFilter OnResultExecuting");
                // _logger.LogWarning(((string[])((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value)[0]);
                //base.OnResultExecuting(context);

                if (!context.ModelState.IsValid)
                {
                    //context.Result = new ValidationFailedResult(context.ModelState);
                    context.Result = new MyResponse(context.ModelState);
                }

                if (((Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest)((Microsoft.AspNetCore.Http.DefaultHttpContext)context.HttpContext).Request).Path.ToString() != _configuration["ASOSToken"].ToString())
                {
                    string ReturnCode = ((Core.ApiModels.BizResponseClass)((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value)?.ErrorCode.ToString();
                    if (ReturnCode == "Status500InternalServerError")
                    {
                        string ReturnMsg = ((CleanArchitecture.Core.ApiModels.BizResponseClass)((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value).ReturnMsg;
                        HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), context.HttpContext.Request.Path.ToString(), context.HttpContext.Request.Path.ToString(), ReturnMsg);
                        HelperForLog.WriteErrorLog(_basePage.UTC_To_IST(), context.HttpContext.Request.Path.ToString(), context.HttpContext.Request.Path.ToString(), ReturnMsg);
                        ((CleanArchitecture.Core.ApiModels.BizResponseClass)((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value).ReturnMsg = "Error occurred.";
                    }
                }

                //if (((Microsoft.AspNetCore.Mvc.SignInResult)context.Result).AuthenticationScheme.ToString() != "ASOS")
                //{
                //    string ReturnCode = ((Core.ApiModels.BizResponseClass)((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value)?.ErrorCode.ToString();
                //    if (ReturnCode == "Status500InternalServerError")
                //    {
                //        string ReturnMsg = ((CleanArchitecture.Core.ApiModels.BizResponseClass)((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value).ReturnMsg;
                //        HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), context.HttpContext.Request.Path.ToString(), context.HttpContext.Request.Path.ToString(), ReturnMsg);
                //        HelperForLog.WriteErrorLog(_basePage.UTC_To_IST(), context.HttpContext.Request.Path.ToString(), context.HttpContext.Request.Path.ToString(), ReturnMsg);
                //        ((CleanArchitecture.Core.ApiModels.BizResponseClass)((Microsoft.AspNetCore.Mvc.ObjectResult)context.Result).Value).ReturnMsg = "Error occurred.";
                //    }
                //}
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
        }
Ejemplo n.º 12
0
 public void OnWalletBalChange(WalletMasterResponse Data, string WalletTypeName, string Token, short TokenType = 1)
 {
     try
     {
         if (TokenType == Convert.ToInt16(enTokenType.ByUserID))
         {
             Token = GetTokenByUserID(Token);
         }
         if (!string.IsNullOrEmpty(Token))
         {
             BuyerSideWalletBal(Data, WalletTypeName, Token);
             SellerSideWalletBal(Data, WalletTypeName, Token);
             HelperForLog.WriteLogIntoFile("OnWalletBalChange", ControllerName, " Wallet Name : " + WalletTypeName + " Data :" + JsonConvert.SerializeObject(Data));
         }
     }
     catch (Exception ex)
     {
         HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
         //throw ex;
     }
 }
Ejemplo n.º 13
0
 public void GetAndSendOpenOrderData(TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType, short IsPop = 0)
 {
     try
     {
         ActiveOrderInfo OpenOrderModel = new ActiveOrderInfo();
         OpenOrderModel.Id                = Newtransaction.Id;
         OpenOrderModel.TrnDate           = Newtransaction.TrnDate;
         OpenOrderModel.Type              = (NewTradeTransaction.TrnType == 4) ? "BUY" : "SELL";
         OpenOrderModel.Order_Currency    = NewTradeTransaction.Order_Currency;
         OpenOrderModel.Delivery_Currency = NewTradeTransaction.Delivery_Currency;
         if (IsPop == 1)
         {
             OpenOrderModel.Amount = 0;
         }
         else
         {
             OpenOrderModel.Amount = (NewTradeTransaction.BuyQty == 0) ? NewTradeTransaction.SellQty : (NewTradeTransaction.SellQty == 0) ? NewTradeTransaction.BuyQty : NewTradeTransaction.BuyQty;
         }
         OpenOrderModel.Price       = (NewTradeTransaction.BidPrice == 0) ? NewTradeTransaction.AskPrice : (NewTradeTransaction.AskPrice == 0) ? NewTradeTransaction.BidPrice : NewTradeTransaction.BidPrice;
         OpenOrderModel.IsCancelled = NewTradeTransaction.IsCancelled;
         OpenOrderModel.OrderType   = Enum.GetName(typeof(enTransactionMarketType), OrderType);
         OpenOrderModel.PairId      = NewTradeTransaction.PairID;
         OpenOrderModel.PairName    = NewTradeTransaction.PairName;
         OpenOrder(OpenOrderModel, Token);
         HelperForLog.WriteLogIntoFile("GetAndSendOpenOrderData", ControllerName, " After OpenOrder call TRNNO:" + Newtransaction.Id);
         if (IsPop != 1)//send notification
         {
             var msg = EnResponseMessage.SignalRTrnSuccessfullyCreated;
             msg = msg.Replace("#Price#", OpenOrderModel.Price.ToString());
             msg = msg.Replace("#Qty#", OpenOrderModel.Amount.ToString());
             ActivityNotification(msg, Token);
         }
     }
     catch (Exception ex)
     {
         HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
         //throw ex;
     }
 }
Ejemplo n.º 14
0
 public void GetAndSendRecentOrderData(TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType, short IsPop = 0)
 {
     try
     {
         RecentOrderInfo model = new RecentOrderInfo();
         model.TrnNo     = NewTradeTransaction.TrnNo;
         model.Type      = (NewTradeTransaction.TrnType == 4) ? "BUY" : "SELL";
         model.Price     = (NewTradeTransaction.BidPrice == 0) ? NewTradeTransaction.AskPrice : (NewTradeTransaction.AskPrice == 0) ? NewTradeTransaction.BidPrice : NewTradeTransaction.BidPrice;
         model.Qty       = (NewTradeTransaction.BuyQty == 0) ? NewTradeTransaction.SellQty : (NewTradeTransaction.SellQty == 0) ? NewTradeTransaction.BuyQty : NewTradeTransaction.BuyQty;
         model.DateTime  = Newtransaction.TrnDate;
         model.Status    = NewTradeTransaction.StatusMsg;
         model.PairId    = NewTradeTransaction.PairID;
         model.PairName  = NewTradeTransaction.PairName;
         model.OrderType = Enum.GetName(typeof(enTransactionMarketType), OrderType);
         RecentOrder(model, Token);
         HelperForLog.WriteLogIntoFile("GetAndSendRecentOrderData", ControllerName, "After Socket call RecentOrder TRNNO:" + Newtransaction.Id);
     }
     catch (Exception ex)
     {
         HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
         //throw ex;
     }
 }
Ejemplo n.º 15
0
        public WalletDrCrResponse DepositionWalletOperation(string timestamp, string address, string coinName, decimal amount, long TrnRefNo, enServiceType serviceType, enWalletTrnType trnType, enWalletTranxOrderType enWalletTranx, enWalletLimitType enWalletLimit, enTrnType routeTrnType, string Token = "")
        {
            try
            {
                WalletMaster           dWalletobj, cWalletObj;
                string                 DrRemarks = "", CrRemarks = "";
                WalletTypeMaster       walletTypeMaster;
                WalletTransactionQueue objTQDr, objTQCr;
                //long walletTypeID;
                WalletDrCrResponse resp = new WalletDrCrResponse();
                long owalletID, orgID;
                WalletTransactionOrder woObj;
                HelperForLog.WriteLogIntoFile("DepositionWalletOperation", "WalletService", "timestamp:" + timestamp + "," + "coinName:" + coinName + ",TrnRefNo=" + TrnRefNo.ToString() + ",address=" + address + ",amount=" + amount.ToString() + ",Token=" + Token);


                // moved inside InsertWalletTQDebit
                //walletTypeMaster = _WalletTypeMasterRepository.GetSingle(e => e.WalletTypeName == coinName);
                //if (walletTypeMaster == null)
                //{
                //    return new WalletDrCrResponse { ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.InvalidReq, ErrorCode = enErrorCode.InvalidCoinName };
                //}
                owalletID = GetWalletByAddress(address);
                if (owalletID == 0)
                {
                    return(new WalletDrCrResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.InvalidAddress, ErrorCode = enErrorCode.InvalidAddress
                    });
                }
                cWalletObj = _commonRepository.GetById(owalletID);
                orgID      = _walletRepository1.getOrgID();
                if (orgID == 0)
                {
                    return(new WalletDrCrResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.OrgIDNotFound, ErrorCode = enErrorCode.OrgIDNotFound
                    });
                }
                dWalletobj = _commonRepository.FindBy(e => e.WalletTypeID == cWalletObj.WalletTypeID && e.UserID == orgID && e.IsDefaultWallet == 1 && e.Status == 1).FirstOrDefault();
                if (dWalletobj == null)
                {
                    //tqObj = InsertIntoWalletTransactionQueue(Guid.NewGuid().ToString(), orderType, amount, TrnRefNo, UTC_To_IST(), null, dWalletobj.Id, coinName, userID, timestamp, 2, EnResponseMessage.InvalidWallet);
                    return(new WalletDrCrResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.InvalidWallet, ErrorCode = enErrorCode.InvalidWallet
                    });
                }
                //ntrivedi 03-11-2018
                var charge = _commonWalletFunction.GetServiceLimitChargeValue(enTrnType.Deposit, coinName);
                if (charge.MaxAmount < amount && charge.MinAmount > amount)
                {
                    return(new WalletDrCrResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.ProcessTrn_AmountBetweenMinMaxMsg, ErrorCode = enErrorCode.ProcessTrn_AmountBetweenMinMax
                    });
                }
                resp = InsertWalletTQDebit(timestamp, dWalletobj.Id, coinName, amount, TrnRefNo, serviceType, enWalletTrnType.Dr_Debit, enWalletTranx, enWalletLimit);
                if (resp.ReturnCode != 0 || resp.Status != enTransactionStatus.Initialize)
                {
                    return(new WalletDrCrResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = resp.StatusMsg, ErrorCode = resp.ErrorCode
                    });
                }
                if (cWalletObj.Status != 1 || cWalletObj.IsValid == false)
                {
                    // insert with status=2 system failed
                    objTQCr = InsertIntoWalletTransactionQueue(Guid.NewGuid(), enWalletTranxOrderType.Credit, amount, TrnRefNo, UTC_To_IST(), null, dWalletobj.Id, coinName, dWalletobj.UserID, timestamp, enTransactionStatus.SystemFail, EnResponseMessage.InvalidWallet, trnType);
                    objTQCr = _walletRepository1.AddIntoWalletTransactionQueue(objTQCr, 1);
                    return(new WalletDrCrResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.InvalidWallet, ErrorCode = enErrorCode.InvalidWallet, TrnNo = objTQCr.TrnNo, Status = objTQCr.Status, StatusMsg = objTQCr.StatusMsg
                    });
                }

                objTQDr = _walletRepository1.GetTransactionQueue(resp.TrnNo);
                TrnAcBatch batchObj = _trnBatch.Add(new TrnAcBatch(UTC_To_IST()));
                DrRemarks = "Debit for Deposition TrnNo:" + TrnRefNo;
                WalletLedger       walletLedgerDr = GetWalletLedgerObj(dWalletobj.Id, cWalletObj.Id, amount, 0, enWalletTrnType.Dr_Debit, serviceType, objTQDr.TrnNo, DrRemarks, dWalletobj.Balance, 1);
                TransactionAccount tranxAccounDrt = GetTransactionAccount(dWalletobj.Id, 1, batchObj.Id, amount, 0, objTQDr.TrnNo, DrRemarks, 1);
                dWalletobj.DebitBalance(amount);
                objTQDr.Status    = enTransactionStatus.Success;
                objTQDr.StatusMsg = "Success";
                DrRemarks         = "Credit for Deposition TrnNo:" + TrnRefNo;
                objTQCr           = InsertIntoWalletTransactionQueue(Guid.NewGuid(), enWalletTranxOrderType.Credit, amount, TrnRefNo, UTC_To_IST(), null, cWalletObj.Id, coinName, cWalletObj.UserID, timestamp, 0, "Inserted", trnType);
                objTQCr           = _walletRepository1.AddIntoWalletTransactionQueue(objTQCr, 1);
                woObj             = InsertIntoWalletTransactionOrder(null, UTC_To_IST(), cWalletObj.Id, dWalletobj.Id, amount, coinName, objTQCr.TrnNo, objTQDr.TrnNo, 0, "Inserted");
                woObj             = _walletRepository1.AddIntoWalletTransactionOrder(woObj, 1);
                WalletLedger       walletLedgerCr = GetWalletLedgerObj(cWalletObj.Id, dWalletobj.Id, 0, amount, trnType, serviceType, objTQCr.TrnNo, DrRemarks, cWalletObj.Balance, 1);
                TransactionAccount tranxAccountCr = GetTransactionAccount(cWalletObj.Id, 1, batchObj.Id, 0, amount, objTQCr.TrnNo, DrRemarks, 1);
                cWalletObj.CreditBalance(amount);
                //var objTQ = InsertIntoWalletTransactionQueue(Guid.NewGuid(), orderType, TotalAmount, TrnRefNo, UTC_To_IST(), null, cWalletobj.Id, coinName, userID, timestamp, 1, "Updated");
                objTQCr.Status      = enTransactionStatus.Success;
                objTQCr.StatusMsg   = "Success";
                objTQCr.UpdatedDate = UTC_To_IST();
                woObj.Status        = enTransactionStatus.Success;
                woObj.StatusMsg     = "Deposition success for RefNo :" + TrnRefNo;
                woObj.UpdatedDate   = UTC_To_IST();
                objTQDr.SettedAmt   = amount;
                _walletRepository1.WalletCreditDebitwithTQ(walletLedgerDr, walletLedgerCr, tranxAccountCr, tranxAccounDrt, dWalletobj, cWalletObj, objTQCr, objTQDr, woObj);
                //ntrivedi temperory
                //vsolanki 2018-11-1---------------socket method   --------------------------
                WalletMasterResponse walletMasterObj = new WalletMasterResponse();
                walletMasterObj.AccWalletID   = cWalletObj.AccWalletID;
                walletMasterObj.Balance       = cWalletObj.Balance;
                walletMasterObj.WalletName    = cWalletObj.Walletname;
                walletMasterObj.PublicAddress = cWalletObj.PublicAddress;
                walletMasterObj.AccWalletID   = cWalletObj.AccWalletID;
                walletMasterObj.CoinName      = coinName;
                var msg = EnResponseMessage.CreditWalletMsg;
                msg = msg.Replace("#Coin#", coinName);
                msg = msg.Replace("#TrnType#", routeTrnType.ToString());
                msg = msg.Replace("#TrnNo#", TrnRefNo.ToString());
                try
                {
                    _signalRService.OnWalletBalChange(walletMasterObj, coinName, cWalletObj.UserID.ToString(), 2);
                    _signalRService.SendActivityNotification(msg, cWalletObj.UserID.ToString(), 2);
                }
                catch (Exception ex2)
                {
                    HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex2);
                }
                // OnWalletBalChange(walletMasterObj, coinName,  Token);
                //-------------------------------


                //vsolanki 2018-11-1---------------socket method   --------------------------
                //WalletMasterResponse walletMasterObj1 = new WalletMasterResponse();
                //walletMasterObj.AccWalletID = cWalletObj.AccWalletID;
                //walletMasterObj.Balance = cWalletObj.Balance;
                //walletMasterObj.WalletName = cWalletObj.Walletname;
                //walletMasterObj.PublicAddress = cWalletObj.PublicAddress;
                //walletMasterObj.AccWalletID = cWalletObj.AccWalletID;
                //walletMasterObj.CoinName = coinName;
                //_signalRService.OnWalletBalChange(walletMasterObj1, coinName, Token);

                //OnWalletBalChange(walletMasterObj, coinName, Token);
                //-------------------------------



                //CreditWalletDrArryTrnID[] arryTrnID = new CreditWalletDrArryTrnID [1];
                //arryTrnID[0].Amount = amount;
                //arryTrnID[0].DrTrnRefNo = TrnRefNo;

                //resp = GetWalletCreditNew(coinName, timestamp, trnType, amount, cWalletObj.UserID, cWalletObj.AccWalletID,  arryTrnID, TrnRefNo,1,enWalletTranxOrderType.Credit,enServiceType.WalletService );
                return(new WalletDrCrResponse {
                    ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.SuccessDebit, ErrorCode = enErrorCode.Success, TrnNo = resp.TrnNo, Status = resp.Status, StatusMsg = resp.StatusMsg
                });
            }
            catch (Exception ex)
            {
                //_log.LogError(ex, "Date: " + UTC_To_IST() + ",\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
                HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
                throw ex;
            }
        }
Ejemplo n.º 16
0
        public void OnStatusHold(short Status, TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType)
        {
            try
            {
                GetTradeHistoryInfo historyInfo  = new GetTradeHistoryInfo();
                GetBuySellBook      BuySellmodel = new GetBuySellBook();
                //add buyer/seller book
                //add OpenOrder
                //add recent order
                // HelperForLog.WriteLogIntoFile("OnStatusHold", ControllerName, " TransactionQueue :" );
                if (string.IsNullOrEmpty(Token))
                {
                    Token = GetTokenByUserID(NewTradeTransaction.MemberID.ToString());
                }
                List <GetBuySellBook> list = new List <GetBuySellBook>();
                if (!string.IsNullOrEmpty(Token))
                {
                    if (NewTradeTransaction.TrnType == 4)//Buy
                    {
                        list = _frontTrnRepository.GetBuyerBook(NewTradeTransaction.PairID, NewTradeTransaction.BidPrice);
                        foreach (var model in list)
                        {
                            BuySellmodel = model;
                            break;
                        }
                        if (BuySellmodel.OrderId.ToString() != "00000000-0000-0000-0000-000000000000")
                        {
                            BuyerBook(BuySellmodel, NewTradeTransaction.PairName);
                            HelperForLog.WriteLogIntoFile("OnStatusHold", ControllerName, "BuyerBook call TRNNO:" + Newtransaction.Id + " Pair :" + NewTradeTransaction.PairName);
                        }
                    }
                    else//Sell
                    {
                        list = _frontTrnRepository.GetSellerBook(NewTradeTransaction.PairID, NewTradeTransaction.AskPrice);
                        foreach (var model in list)
                        {
                            BuySellmodel = model;
                            break;
                        }
                        if (BuySellmodel.OrderId.ToString() != "00000000-0000-0000-0000-000000000000")
                        {
                            SellerBook(BuySellmodel, NewTradeTransaction.PairName);
                            HelperForLog.WriteLogIntoFile("OnStatusHold", ControllerName, "SellerBook call TRNNO:" + Newtransaction.Id + " Pair :" + NewTradeTransaction.PairName);
                        }
                    }
                    //var msg = EnResponseMessage.SignalRTrnSuccessfullyCreated;
                    //msg = msg.Replace("#Price#", historyInfo.Price.ToString());
                    //msg = msg.Replace("#Qty#", historyInfo.Amount.ToString());
                    //ActivityNotification(msg, Token);

                    GetAndSendOpenOrderData(Newtransaction, NewTradeTransaction, Token, OrderType);
                    HelperForLog.WriteLogIntoFile("OnStatusHold", ControllerName, " Aftre Open Order Socket call  TRNNO:" + Newtransaction.Id);
                    GetAndSendRecentOrderData(Newtransaction, NewTradeTransaction, Token, OrderType);
                    HelperForLog.WriteLogIntoFile("OnStatusHold", ControllerName, " Aftre Recent Order Socket call  TRNNO:" + Newtransaction.Id);
                }
            }
            catch (Exception ex)
            {
                HelperForLog.WriteErrorLog(System.Reflection.MethodBase.GetCurrentMethod().Name, this.GetType().Name, ex);
                ////throw ex;
            }
        }
        public async Task Invoke(HttpContext context)
        {
            Stream originalBody           = context.Response.Body;
            SignalRUserConfiguration User = new SignalRUserConfiguration();

            try
            {
                using (var memStream = new MemoryStream())
                {
                    var newBody    = new MemoryStream();
                    var newContent = string.Empty;

                    context.Response.Body = memStream;

                    await next(context);

                    var responseLog = $"RESPONSE Host:{context.Request.Host}, HttpMethod: {context.Request.Method}, Path: {context.Request.Path}";

                    //string ResponsePath = context.Request.Path.ToString();
                    //string[] ResonseDetails = ResponsePath.Split("/");
                    if (context.Request.Path == "/connect/token")
                    {
                        memStream.Seek(0, SeekOrigin.Begin);
                        var content = new StreamReader(memStream).ReadToEnd();
                        memStream.Seek(0, SeekOrigin.Begin);
                        tokanreponsmodel TokenData = JsonConvert.DeserializeObject <tokanreponsmodel>(content);
                        if (TokenData != null && !string.IsNullOrEmpty(TokenData.access_token))
                        {
                            using (var bodyReader = new StreamReader(context.Request.Body))
                            {
                                var bodyAsText = bodyReader.ReadToEnd();
                                if (string.IsNullOrWhiteSpace(bodyAsText) == false)
                                {
                                    User = convertStirngToJson(HttpUtility.UrlDecode(bodyAsText));
                                    // User.username = "******";
                                }
                                if (User != null && !string.IsNullOrEmpty(User.username))
                                {
                                    var Redis    = new RadisServices <ConnetedClientToken>(this._fact);
                                    var Userdata = _userManager.FindByNameAsync(User.username).GetAwaiter().GetResult();
                                    if (Userdata != null && Userdata.Id != 0)
                                    {
                                        Redis.SaveWithOrigionalKey("Tokens:" + Userdata.Id, new ConnetedClientToken {
                                            Token = TokenData.access_token
                                        });
                                        //string AccessToken = Redis.GetHashData("Tokens:" + Userdata.Id, "Token");
                                    }
                                }
                            }
                        }
                    }

                    memStream.Position = 0;
                    string responseBody = new StreamReader(memStream).ReadToEnd();
                    var    erParams     = (dynamic)null;
                    if (responseBody.Contains("ReturnCode"))
                    {
                        erParams = JsonConvert.DeserializeObject <ErrorParams>(responseBody);
                    }

                    responseLog += $", Response : {responseBody}";
                    //if (ResponseDetails?[1] == "api")
                    //{
                    //Uday 05-11-2018 don't write log for graph method
                    if (context.Request.Path.Value.Split("/")[1] != "swagger" && !context.Request.Path.Value.Contains("GetGraphDetail"))
                    {
                        if (erParams?.ReturnCode != 9)
                        {
                            HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), context.Request.Path.ToString(), context.Request.Path.ToString(), responseLog);
                            //HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), context.Request.Path.ToString(), context.Request.Path.ToString(), responseLog);
                            //HelperForLog.WriteErrorLog(_basePage.UTC_To_IST(), context.Request.Path.ToString(), context.Request.Path.ToString(), erParams.ReturnMsg);
                        }
                    }
                    //else
                    //{
                    //    HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), context.Request.Path.ToString(), context.Request.Path.ToString(), responseLog);

                    //}

                    //}
                    //else if (ResponseDetails?[1] != "swagger")
                    //    HelperForLog.WriteLogIntoFile(2, _basePage.UTC_To_IST(), "", "", responseLog);
                    memStream.Position = 0;
                    await memStream.CopyToAsync(originalBody);
                }
            }
            catch (Exception ex)
            {
                HelperForLog.WriteErrorLog(_basePage.UTC_To_IST(), "", "", ex.ToString());
            }
            finally
            {
                context.Response.Body = originalBody;
            }
        }
        public Task <BizResponse> PROCESSSETLLEMENT(BizResponse _Resp, TradeBuyRequest TradeBuyRequestObj, ref List <long> HoldTrnNos, string accessToken = "", short IsCancel = 0)
        {
            short TrackBit = 0;

            try
            {
                TransactionQueueObj      = _TransactionRepository.GetById(TradeBuyRequestObj.TrnNo);
                TradeTransactionQueueObj = _TradeTransactionRepository.GetSingle(item => item.TrnNo == TradeBuyRequestObj.TrnNo);
                TradeBuyerListObj        = _TradeBuyerList.GetSingle(item => item.TrnNo == TradeBuyRequestObj.TrnNo);
                _TradeStopLossObj        = _TradeStopLoss.GetSingle(item => item.TrnNo == TradeBuyRequestObj.TrnNo);

                DebitWalletID   = TradeTransactionQueueObj.OrderWalletID;
                DebitAccountID  = _WalletService.GetAccWalletID(DebitWalletID);
                CreditWalletID  = TradeTransactionQueueObj.DeliveryWalletID;
                CreditAccountID = _WalletService.GetAccWalletID(CreditWalletID);

                if (TradeTransactionQueueObj.IsCancelled == 1 || IsCancel == 1)
                {
                    //Code for settlement
                    CancellationProcess(_Resp, TradeBuyRequestObj, TransactionQueueObj, TradeTransactionQueueObj);
                    return(Task.FromResult(_Resp));
                }
                if (TradeBuyRequestObj.PendingQty == 0)
                {
                    _Resp.ErrorCode  = enErrorCode.Settlement_AlreadySettled;
                    _Resp.ReturnCode = enResponseCodeService.Success;
                    _Resp.ReturnMsg  = "ALready Settled";
                    return(Task.FromResult(_Resp));
                }

                TradeBuyRequestObj.MakeTransactionHold();
                TradeBuyRequestObj.UpdatedDate  = Helpers.UTC_To_IST();
                TradeBuyRequestObj.IsProcessing = 1;
                _TradeBuyRequest.Update(TradeBuyRequestObj);

                TradeBuyerListObj.MakeTransactionHold();
                TradeBuyerListObj.UpdatedDate  = Helpers.UTC_To_IST();
                TradeBuyerListObj.IsProcessing = 1;
                _TradeBuyerList.Update(TradeBuyerListObj);

                IEnumerable <TradeSellerList> MatchSellerListBase;
                //SortedList<TradeSellerList, TradeSellerList>
                //if (TradeTransactionQueueObj.TrnType == Convert.ToInt16(enTrnType.Buy_Trade))//Take price as Highest and find lower
                //{
                //   MatchSellerListBase = _TradeSellerList.FindBy(item => item.Price <= TradeBuyRequestObj.BidPrice && item.IsProcessing == 0
                //                                       && item.BuyServiceID == TradeBuyRequestObj.PaidServiceID &&
                //                                       item.SellServiceID == TradeBuyRequestObj.ServiceID
                //                                       && (item.Status == Convert.ToInt16(enTransactionStatus.Initialize) || item.Status == Convert.ToInt16(enTransactionStatus.Hold))
                //                                       && item.RemainQty > 0);//Pending after partial Qty remain
                //}
                //else //Take price as Highest and find larger
                //{
                //    MatchSellerListBase = _TradeSellerList.FindBy(item => item.Price >= TradeBuyRequestObj.BidPrice && item.IsProcessing == 0
                //                                       && item.BuyServiceID == TradeBuyRequestObj.PaidServiceID &&
                //                                       item.SellServiceID == TradeBuyRequestObj.ServiceID
                //                                       && (item.Status == Convert.ToInt16(enTransactionStatus.Initialize) || item.Status == Convert.ToInt16(enTransactionStatus.Hold))
                //                                       && item.RemainQty > 0);//Pending after partial Qty remain
                //}
                MatchSellerListBase = _TradeSellerList.FindBy(item => item.Price >= TradeBuyRequestObj.BidPrice && item.IsProcessing == 0 &&
                                                              item.BuyServiceID == TradeBuyRequestObj.PaidServiceID &&
                                                              item.SellServiceID == TradeBuyRequestObj.ServiceID &&
                                                              (item.Status == Convert.ToInt16(enTransactionStatus.Initialize) || item.Status == Convert.ToInt16(enTransactionStatus.Hold)) &&
                                                              item.RemainQty > 0);//Pending after partial Qty remain


                //var MatchSellerList = MatchSellerListBase.OrderBy(x => x.Price).OrderBy(x => x.TrnNo);
                var MatchSellerList = MatchSellerListBase.OrderByDescending(x => x.Price).OrderBy(x => x.TrnNo);

                foreach (TradeSellerList SellerList in MatchSellerList)
                {
                    if (SellerList.IsProcessing == 1)
                    {
                        continue;
                    }

                    TrackBit = 1;
                    decimal SettlementQty = 0;
                    List <CreditWalletDrArryTrnID> CreditWalletDrArryTrnIDList = new List <CreditWalletDrArryTrnID>();
                    SellerList.IsProcessing = 1;
                    _TradeSellerList.Update(SellerList);
                    var PoolMst = _TradePoolMaster.GetById(SellerList.PoolID);
                    //====================================Partial SETTLEMENT TO MEMBER
                    if (SellerList.RemainQty < TradeBuyRequestObj.PendingQty)
                    {
                        SettlementQty = SellerList.RemainQty;//Take all Seller's Qty
                        //Topup Order create
                        PoolOrderObj = CreatePoolOrderForSettlement(TradeBuyRequestObj.UserID, SellerList.PoolID, TradeBuyRequestObj.UserID, SellerList.PoolID, TradeBuyRequestObj.TrnNo, SettlementQty, CreditWalletID, CreditAccountID);

                        TradeBuyRequestObj.PendingQty   = TradeBuyRequestObj.PendingQty - SettlementQty;
                        TradeBuyRequestObj.DeliveredQty = TradeBuyRequestObj.DeliveredQty + SettlementQty;
                        TradeBuyerListObj.DeliveredQty  = TradeBuyerListObj.DeliveredQty + SettlementQty;
                        //Here Bid Price of pool always low then user given in Order , base on above Query
                        decimal TakeDisc = 0;
                        if (SellerList.Price < TradeBuyRequestObj.BidPrice)
                        {
                            TakeDisc = (TradeBuyRequestObj.BidPrice - SellerList.Price) * SettlementQty;
                        }
                        InsertTradePoolQueue(TradeBuyRequestObj.UserID, SellerList.TrnNo, SellerList.PoolID, SellerList.RemainQty, SellerList.Price, TradeBuyRequestObj.TrnNo, SettlementQty, TradeBuyRequestObj.BidPrice, TakeDisc, 0, SellerList.Id);

                        SellerList.RemainQty = SellerList.RemainQty - SettlementQty;//this will give result 0
                        SellerList.MakeTransactionSuccess();
                        PoolMst.TotalQty = PoolMst.TotalQty - SettlementQty;
                        PoolOrderObj.MakeTransactionSuccess();
                        PoolOrderObj.DRemarks = "Delivery Success with " + SellerList.Price;
                        TransactionQueueObj.SetTransactionCode(Convert.ToInt64(enErrorCode.Settlement_PartialSettlementDone));
                        TransactionQueueObj.SetTransactionStatusMsg("Partial Settlement Done");
                        decimal SellRelQty = Helpers.DoRoundForTrading(SettlementQty * TradeBuyRequestObj.PaidQty / TradeBuyRequestObj.Qty, 8);

                        TradeTransactionQueueObj.SetTransactionCode(Convert.ToInt64(enErrorCode.Settlement_PartialSettlementDone));
                        TradeTransactionQueueObj.SetTransactionStatusMsg("Partial Settlement Done");
                        TradeTransactionQueueObj.SettledBuyQty  = TradeTransactionQueueObj.SettledBuyQty + SettlementQty;
                        TradeTransactionQueueObj.SettledSellQty = TradeTransactionQueueObj.SettledSellQty + SellRelQty;

                        CreditWalletDrArryTrnIDList.Add(new CreditWalletDrArryTrnID {
                            DrTrnRefNo = SellerList.TrnNo, Amount = SettlementQty
                        });

                        _dbContext.Database.BeginTransaction();

                        _dbContext.Set <TradePoolQueue>().Add(TradePoolQueueObj);
                        _dbContext.Entry(PoolOrderObj).State             = EntityState.Modified;
                        _dbContext.Entry(TradeBuyRequestObj).State       = EntityState.Modified;
                        _dbContext.Entry(SellerList).State               = EntityState.Modified;
                        _dbContext.Entry(PoolMst).State                  = EntityState.Modified;
                        _dbContext.Entry(TradeBuyerListObj).State        = EntityState.Modified;
                        _dbContext.Entry(TransactionQueueObj).State      = EntityState.Modified;
                        _dbContext.Entry(TradeTransactionQueueObj).State = EntityState.Modified;
                        var CreditWalletResult = _WalletService.GetWalletCreditNew(TradeTransactionQueueObj.Delivery_Currency, Helpers.GetTimeStamp(),
                                                                                   enWalletTrnType.Cr_Buy_Trade, SettlementQty, TradeBuyRequestObj.UserID,
                                                                                   CreditAccountID, CreditWalletDrArryTrnIDList.ToArray(), TradeBuyRequestObj.TrnNo, 0,
                                                                                   enWalletTranxOrderType.Credit, enServiceType.Trading, (enTrnType)TransactionQueueObj.TrnType);
                        if (CreditWalletResult.ReturnCode != enResponseCode.Success)
                        {
                            HelperForLog.WriteLogIntoFile("PROCESSSETLLEMENT RollbackTransaction", ControllerName, "Balance credit fail" + CreditWalletResult.ReturnMsg + "##TrnNo:" + TradeBuyRequestObj.TrnNo);
                            _dbContext.Database.RollbackTransaction();

                            _Resp.ErrorCode  = enErrorCode.Settlement_PartialSettlementRollback;
                            _Resp.ReturnCode = enResponseCodeService.Success;
                            _Resp.ReturnMsg  = "Partial Settlement RollBack TrnNo " + TradeBuyRequestObj.TrnNo + " With: TrnNo " + SellerList.TrnNo + "  Reason: " + CreditWalletResult.ReturnMsg;
                        }
                        else
                        {
                            _dbContext.SaveChanges();
                            _dbContext.Database.CommitTransaction();

                            HelperForLog.WriteLogIntoFile("PROCESSSETLLEMENT", ControllerName, "Partial Settlement Done with " + SellerList.TrnNo + "##TrnNo:" + TradeBuyRequestObj.TrnNo);
                            _Resp.ErrorCode  = enErrorCode.Settlement_PartialSettlementDone;
                            _Resp.ReturnCode = enResponseCodeService.Success;
                            _Resp.ReturnMsg  = "Partial Settlement Done of TrnNo " + TradeBuyRequestObj.TrnNo + " Settled: " + TradeBuyRequestObj.DeliveredQty + " Remain:" + TradeBuyRequestObj.PendingQty;
                            //Continuew as record Partially settled
                            try
                            {
                                _ISignalRService.OnStatusPartialSuccess(Convert.ToInt16(enTransactionStatus.Success), TransactionQueueObj, TradeTransactionQueueObj, accessToken, _TradeStopLossObj.ordertype);//komal                                                                                                                                                                                                                //(short Status, TransactionQueue Newtransaction, TradeTransactionQueue NewTradeTransaction, string Token, short OrderType, short IsPartial=0)
                            }
                            catch (Exception ex)
                            {
                                HelperForLog.WriteLogIntoFile("ISignalRService", ControllerName, "Partial Settlement Error " + ex.Message + "##TrnNo:" + TradeBuyRequestObj.TrnNo);
                            }
                        }
                        HoldTrnNos.Add(SellerList.TrnNo);
                    }
                    //====================================FULL SETTLEMENT TO MEMBER
                    else if (SellerList.RemainQty >= TradeBuyRequestObj.PendingQty && TradeBuyRequestObj.PendingQty != 0)
                    {
                        SettlementQty = TradeBuyRequestObj.PendingQty;
                        //Topup Order create
                        PoolOrderObj = CreatePoolOrderForSettlement(TradeBuyRequestObj.UserID, SellerList.PoolID, TradeBuyRequestObj.UserID, SellerList.PoolID, TradeBuyRequestObj.TrnNo, SettlementQty, CreditWalletID, CreditAccountID);


                        //Here Bid Price of pool always low then user given in Order , base on above Query
                        decimal TakeDisc = 0;
                        if (SellerList.Price < TradeBuyRequestObj.BidPrice)
                        {
                            TakeDisc = (TradeBuyRequestObj.BidPrice - SellerList.Price) * SettlementQty;
                        }
                        InsertTradePoolQueue(TradeBuyRequestObj.UserID, SellerList.TrnNo, SellerList.PoolID, SellerList.RemainQty, SellerList.Price, TradeBuyRequestObj.TrnNo, SettlementQty, TradeBuyRequestObj.BidPrice, TakeDisc, 0, SellerList.Id);


                        SellerList.RemainQty = SellerList.RemainQty - SettlementQty;//Update first as updated value in below line
                        SellerList.MakeTransactionHold();
                        PoolMst.TotalQty = PoolMst.TotalQty - SettlementQty;

                        TradeBuyRequestObj.DeliveredQty = TradeBuyRequestObj.DeliveredQty + SettlementQty; //Fully settled Here
                        TradeBuyRequestObj.PendingQty   = TradeBuyRequestObj.PendingQty - SettlementQty;   //this will 0

                        TradeBuyRequestObj.MakeTransactionSuccess();
                        TradeBuyerListObj.MakeTransactionSuccess();
                        TransactionQueueObj.MakeTransactionSuccess();
                        TransactionQueueObj.SetTransactionCode(Convert.ToInt64(enErrorCode.Settlement_FullSettlementDone));
                        TransactionQueueObj.SetTransactionStatusMsg("Full Settlement Done");

                        TradeTransactionQueueObj.MakeTransactionSuccess();
                        TradeTransactionQueueObj.SetTransactionCode(Convert.ToInt64(enErrorCode.Settlement_FullSettlementDone));
                        TradeTransactionQueueObj.SetTransactionStatusMsg("Full Settlement Done");
                        decimal SellRelQty = Helpers.DoRoundForTrading(SettlementQty * TradeBuyRequestObj.PaidQty / TradeBuyRequestObj.Qty, 8);
                        TradeTransactionQueueObj.SettledBuyQty  = TradeTransactionQueueObj.SettledBuyQty + SettlementQty;
                        TradeTransactionQueueObj.SettledSellQty = TradeTransactionQueueObj.SettledSellQty + SellRelQty;

                        TradeBuyerListObj.DeliveredQty = TradeBuyerListObj.DeliveredQty + SettlementQty;

                        PoolOrderObj.MakeTransactionSuccess();
                        PoolOrderObj.DRemarks = "Delivery Success with " + SellerList.Price;

                        CreditWalletDrArryTrnIDList.Add(new CreditWalletDrArryTrnID {
                            DrTrnRefNo = SellerList.TrnNo, Amount = SettlementQty
                        });

                        _dbContext.Database.BeginTransaction();

                        _dbContext.Set <TradePoolQueue>().Add(TradePoolQueueObj);
                        _dbContext.Entry(PoolOrderObj).State             = EntityState.Modified;
                        _dbContext.Entry(TradeBuyRequestObj).State       = EntityState.Modified;
                        _dbContext.Entry(SellerList).State               = EntityState.Modified;
                        _dbContext.Entry(PoolMst).State                  = EntityState.Modified;
                        _dbContext.Entry(TradeBuyerListObj).State        = EntityState.Modified;
                        _dbContext.Entry(TransactionQueueObj).State      = EntityState.Modified;
                        _dbContext.Entry(TradeTransactionQueueObj).State = EntityState.Modified;
                        var CreditWalletResult = _WalletService.GetWalletCreditNew(TradeTransactionQueueObj.Delivery_Currency, Helpers.GetTimeStamp(),
                                                                                   enWalletTrnType.Cr_Buy_Trade, SettlementQty, TradeBuyRequestObj.UserID,
                                                                                   CreditAccountID, CreditWalletDrArryTrnIDList.ToArray(), TradeBuyRequestObj.TrnNo, 1,
                                                                                   enWalletTranxOrderType.Credit, enServiceType.Trading, (enTrnType)TransactionQueueObj.TrnType);
                        if (CreditWalletResult.ReturnCode != enResponseCode.Success)
                        {
                            HelperForLog.WriteLogIntoFile("PROCESSSETLLEMENT RollbackTransaction", ControllerName, "Balance credit fail" + CreditWalletResult.ReturnMsg + "##TrnNo:" + TradeBuyRequestObj.TrnNo);
                            _dbContext.Database.RollbackTransaction();

                            _Resp.ErrorCode  = enErrorCode.Settlement_FullSettlementRollback;
                            _Resp.ReturnCode = enResponseCodeService.Success;
                            _Resp.ReturnMsg  = "Full Settlement Rollback TrnNo:" + TradeBuyRequestObj.TrnNo + " With: TrnNo " + SellerList.TrnNo + "  Reason:" + CreditWalletResult.ReturnMsg;
                        }
                        else
                        {
                            _dbContext.SaveChanges();
                            _dbContext.Database.CommitTransaction();

                            HelperForLog.WriteLogIntoFile("PROCESSSETLLEMENT", ControllerName, "Full Settlement Done with " + SellerList.TrnNo + "##TrnNo:" + TradeBuyRequestObj.TrnNo);

                            _Resp.ErrorCode  = enErrorCode.Settlement_FullSettlementDone;
                            _Resp.ReturnCode = enResponseCodeService.Success;
                            _Resp.ReturnMsg  = "Full Settlement Done of TrnNo " + TradeBuyRequestObj.TrnNo + " Settled: " + TradeBuyRequestObj.DeliveredQty + " Remain:" + TradeBuyRequestObj.PendingQty;
                            try
                            {
                                _ISignalRService.OnStatusSuccess(Convert.ToInt16(enTransactionStatus.Success), TransactionQueueObj, TradeTransactionQueueObj, accessToken, _TradeStopLossObj.ordertype); //komal
                                                                                                                                                                                                         //==============Volume update only after success
                                if (TradeTransactionQueueObj.TrnType == Convert.ToInt16(enTrnType.Buy_Trade))
                                {
                                    _IFrontTrnService.GetPairAdditionalVal(TradeTransactionQueueObj.PairID, TradeTransactionQueueObj.BidPrice, TradeTransactionQueueObj.TrnNo, TradeTransactionQueueObj.BuyQty, TradeTransactionQueueObj.TrnDate);
                                }
                                else
                                {
                                    _IFrontTrnService.GetPairAdditionalVal(TradeTransactionQueueObj.PairID, TradeTransactionQueueObj.AskPrice, TradeTransactionQueueObj.TrnNo, TradeTransactionQueueObj.SellQty, TradeTransactionQueueObj.TrnDate);
                                }

                                EmailSendAsync(TradeBuyRequestObj.UserID.ToString(), Convert.ToInt16(enTransactionStatus.Success), TradeTransactionQueueObj.PairName,
                                               TradeTransactionQueueObj.PairName.Split("_")[1], TradeTransactionQueueObj.TrnDate.ToString(),
                                               TradeTransactionQueueObj.DeliveryTotalQty, TradeTransactionQueueObj.OrderTotalQty, 0);
                            }
                            catch (Exception ex)
                            {
                                HelperForLog.WriteLogIntoFile("ISignalRService", ControllerName, "Full Settlement Error " + ex.Message + "##TrnNo:" + TradeBuyRequestObj.TrnNo);
                            }
                        }

                        HoldTrnNos.Add(SellerList.TrnNo);

                        _dbContext.Entry(SellerList).Reload();

                        SellerList.IsProcessing = 0; //Release Seller List
                        _TradeSellerList.Update(SellerList);
                        break;                       //record settled
                    }
                    //====================take always latest object from DB
                    //==========as if txn not commit so dbnot change and object value changes , so take object value from DB
                    _dbContext.Entry(TradeBuyRequestObj).Reload();
                    _dbContext.Entry(TransactionQueueObj).Reload();
                    _dbContext.Entry(TradeTransactionQueueObj).Reload();
                    _dbContext.Entry(TradeBuyerListObj).Reload();
                    _dbContext.Entry(SellerList).Reload();

                    SellerList.IsProcessing = 0;//Release Seller List
                    _TradeSellerList.Update(SellerList);
                }
                TradeBuyRequestObj.IsProcessing = 0;//Release Buy Order
                _TradeBuyRequest.Update(TradeBuyRequestObj);

                TradeBuyerListObj.IsProcessing = 0;
                _TradeBuyerList.Update(TradeBuyerListObj);
                if (TrackBit == 0)//No any record Process
                {
                    _Resp.ErrorCode  = enErrorCode.Settlement_NoSettlementRecordFound;
                    _Resp.ReturnCode = enResponseCodeService.Success;
                    _Resp.ReturnMsg  = "No Any Match Record Found";
                }
            }
            catch (Exception ex)
            {
                HelperForLog.WriteErrorLog("PROCESSSETLLEMENT:##TrnNo " + TradeBuyRequestObj.TrnNo, ControllerName, ex);
                _Resp.ReturnCode = enResponseCodeService.Fail;
                _Resp.ReturnMsg  = ex.Message;
                _Resp.ErrorCode  = enErrorCode.Settlement_SettlementInternalError;
            }
            return(Task.FromResult(_Resp));
        }