Пример #1
0
        private int CancelSecurities(int submitId, int commandId, List <EntrustSecurity> entrustedSecuItems)
        {
            //set the status as EntrustStatus.CancelToDB in database
            int ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(entrustedSecuItems, EntrustStatus.CancelToDB);

            if (ret <= 0)
            {
                return(ret);
            }

            int result      = 0;
            var bllResponse = _ufxWithdrawSyncBLL.Withdraw(submitId, commandId, entrustedSecuItems);

            if (BLLResponse.Success(bllResponse))
            {
                result = 1;
                ret    = _entrustCombineBLL.UpdateSecurityEntrustStatus(entrustedSecuItems, EntrustStatus.CancelSuccess);
            }
            else
            {
                ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(entrustedSecuItems, EntrustStatus.CancelFail);
            }

            return(result);
        }
Пример #2
0
        private BLLResponse GetResponse(int submitId, int commandId, List <UFXBasketWithdrawResponse> responseItems)
        {
            BLLResponse bllResponse = null;

            List <EntrustSecurity> successCancelSecuItems = new List <EntrustSecurity>();
            List <EntrustSecurity> failCancelSecuItems    = new List <EntrustSecurity>();
            int ret = -1;

            if (submitId > 0)
            {
                //TODO: check the withdraw status
                foreach (var responseItem in responseItems)
                {
                    var entrustItem = new EntrustSecurity
                    {
                        SubmitId  = submitId,
                        CommandId = commandId,
                        SecuCode  = responseItem.StockCode,
                        EntrustNo = responseItem.EntrustNo,
                    };

                    if (FailFlag.Equals(responseItem.SuccessFlag))
                    {
                        failCancelSecuItems.Add(entrustItem);
                    }
                    else
                    {
                        successCancelSecuItems.Add(entrustItem);
                    }
                }

                if (successCancelSecuItems.Count > 0)
                {
                    ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(successCancelSecuItems, Model.EnumType.EntrustStatus.CancelSuccess);
                }

                if (failCancelSecuItems.Count > 0)
                {
                    ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(successCancelSecuItems, Model.EnumType.EntrustStatus.CancelFail);
                }
            }

            //var successItems = responseItems.Where(p => SuccessFlag.Equals(p.SuccessFlag)).ToList();
            //var failItems = responseItems.Where(p => FailFlag.Equals(p.SuccessFlag)).ToList();
            if (successCancelSecuItems.Count == responseItems.Count)
            {
                bllResponse = new BLLResponse {
                    Code = Model.ConnectionCode.Success, Message = "Withdraw success!"
                };
            }
            else
            {
                bllResponse = new BLLResponse {
                    Code = Model.ConnectionCode.FailWithdraw, Message = "Withdraw failure!"
                };
            }

            return(bllResponse);
        }
Пример #3
0
        public BLLResponse Withdraw(Model.Database.EntrustCommand cmdItem, CallerCallback callerCallback)
        {
            BLLResponse bllResponse = new BLLResponse();

            UFXBasketWithdrawRequest request = new UFXBasketWithdrawRequest
            {
                BatchNo = cmdItem.BatchNo,
            };

            Callbacker callbacker = new Callbacker
            {
                Token = new CallerToken
                {
                    SubmitId  = cmdItem.SubmitId,
                    CommandId = cmdItem.CommandId,
                    WaitEvent = new AutoResetEvent(false),
                    Caller    = callerCallback,
                },

                DataHandler = WithdrawDataHandler,
            };

            var result = _securityBLL.WithdrawBasket(request, callbacker);

            if (result == Model.ConnectionCode.Success)
            {
                if (callbacker.Token.WaitEvent.WaitOne(_timeOut))
                {
                    var errorResponse = callbacker.Token.ErrorResponse as UFXErrorResponse;
                    if (errorResponse != null && T2ErrorHandler.Success(errorResponse.ErrorCode))
                    {
                        bllResponse.Code    = Model.ConnectionCode.Success;
                        bllResponse.Message = "Success Withdraw";
                    }
                    else
                    {
                        bllResponse.Code    = Model.ConnectionCode.FailWithdraw;
                        bllResponse.Message = errorResponse.ErrorMessage;
                    }
                }
                else
                {
                    bllResponse.Code    = Model.ConnectionCode.FailTimeoutWithdraw;
                    bllResponse.Message = "Fail to submit the basket withdraw to UFX!";
                }
            }
            else
            {
                bllResponse.Code    = Model.ConnectionCode.FailSubmit;
                bllResponse.Message = "Fail to submit the basket withdraw to UFX!";
            }

            return(bllResponse);
        }
Пример #4
0
        private void CriarCookie(bool lembrar, BLLResponse <Usuario> response)
        {
            UserLogado user = new UserLogado
            {
                ID             = response.Data.ID,
                Nome           = response.Data.Nome,
                PathFotoPerfil = response.Data.PathFotoPerfil
            };

            string userData = SerializarUser(user);

            FormsAuthenticationTicket ticket =
                new FormsAuthenticationTicket(1, FormsAuthentication.FormsCookieName, DateTime.Now, DateTime.Now.AddDays(1), lembrar, userData);
            string     cookieEncriptado = FormsAuthentication.Encrypt(ticket);
            HttpCookie cookie           = new HttpCookie(FormsAuthentication.FormsCookieName, cookieEncriptado);

            cookie.HttpOnly = true;
            cookie.Expires  = DateTime.Now.AddDays(1);
            Response.Cookies.Add(cookie);
        }
Пример #5
0
        //private void CancelRedo(int submitId, List<CancelRedoItem> cancelRedoItems)
        //{
        //    //var submitId = cancelRedoItems.Select(p => p.SubmitId).Single();
        //    //if (submitId <= 0)
        //    //{
        //    //    //TODO: fail to get the submitId
        //    //    return;
        //    //}
        //    //set the cancel status
        //    //int ret = _entrustBLL.Cancel(cancelRedoItems);

        //    //Call the UFX to cancel

        //    //Update the EntrustCommand
        //    //_entrustBLL.Submit(

        //    //ret = _entrustBLL.CancelSuccess(cancelRedoItems);
        //}


        //TODO: validate before submit
        private string Submit(int commandId, List <CancelRedoItem> cancelRedoItems, CallerCallback callback)
        {
            EntrustCommand cmdItem = new EntrustCommand
            {
                CommandId = commandId,
                Copies    = 0,
            };

            string msg      = string.Empty;
            var    response = _entrustBLL.SubmitOne(cmdItem, cancelRedoItems, callback);

            if (!BLLResponse.Success(response))
            {
                int submitId = cancelRedoItems.Select(p => p.SubmitId).Distinct().Single();

                string format = ConfigManager.Instance.GetLabelConfig().GetLabelText(msgEntrustCancelResubmitFail);
                msg = string.Format(format, submitId, response.Message);
            }

            return(msg);
        }
Пример #6
0
        public List <EntrustFlowItem> QueryHistory(List <Portfolio> portfolios, DateTime startDate, DateTime endDate, int timeOut, CallerCallback callback)
        {
            List <EntrustFlowItem> entrustItems = new List <EntrustFlowItem>();
            int intStart = DateUtil.GetIntDate(startDate);
            int intEnd   = DateUtil.GetIntDate(endDate);

            foreach (var portfolio in portfolios)
            {
                List <UFXQueryFuturesHistEntrustRequest> requests = new List <UFXQueryFuturesHistEntrustRequest>();

                UFXQueryFuturesHistEntrustRequest request = new UFXQueryFuturesHistEntrustRequest();
                request.StartDate = intStart;
                request.EndDate   = intEnd;
                request.CombiNo   = portfolio.PortfolioNo;

                requests.Add(request);

                Callbacker callbacker = new Callbacker
                {
                    Token = new CallerToken
                    {
                        SubmitId  = -2,
                        CommandId = -2,
                        InArgs    = portfolio,
                        OutArgs   = entrustItems,
                        WaitEvent = new AutoResetEvent(false),
                        Caller    = callback,
                    },

                    DataHandler = QueryDataHandler,
                };

                var result = _securityBLL.QueryFuturesEntrustHistory(requests, callbacker);

                BLLResponse bllResponse = new BLLResponse();
                if (result == Model.ConnectionCode.Success)
                {
                    if (callbacker.Token.WaitEvent.WaitOne(timeOut))
                    {
                        var errorResponse = callbacker.Token.ErrorResponse as UFXErrorResponse;
                        if (errorResponse != null && T2ErrorHandler.Success(errorResponse.ErrorCode))
                        {
                            bllResponse.Code    = ConnectionCode.Success;
                            bllResponse.Message = "Success Entrust";
                        }
                        else
                        {
                            bllResponse.Code    = ConnectionCode.FailEntrust;
                            bllResponse.Message = "Fail Entrust: " + errorResponse.ErrorMessage;
                        }
                    }
                    else
                    {
                        bllResponse.Code    = ConnectionCode.FailEntrust;
                        bllResponse.Message = "Fail Entrust: Timeout";
                    }
                }
                else
                {
                    bllResponse.Code    = result;
                    bllResponse.Message = "Fail to submit in ufx.";
                }
            }

            return(entrustItems);
        }
        public List <DealFlowItem> QueryToday(List <Portfolio> portfolios, int timeOut, CallerCallback callback)
        {
            List <DealFlowItem> dealItems = new List <DealFlowItem>();

            foreach (var portfolio in portfolios)
            {
                List <UFXQueryDealRequest> requests = new List <UFXQueryDealRequest>();

                UFXQueryDealRequest request = new UFXQueryDealRequest();

                request.AccountCode = portfolio.FundCode;
                request.CombiNo     = portfolio.PortfolioNo;
                requests.Add(request);

                Callbacker callbacker = new Callbacker
                {
                    Token = new CallerToken
                    {
                        SubmitId  = -1,
                        CommandId = -1,
                        InArgs    = portfolio,
                        OutArgs   = dealItems,
                        WaitEvent = new AutoResetEvent(false),
                        Caller    = callback,
                    },

                    DataHandler = QueryDataHandler,
                };

                var result = _securityBLL.QueryDeal(requests, callbacker);

                BLLResponse bllResponse = new BLLResponse();
                if (result == Model.ConnectionCode.Success)
                {
                    if (callbacker.Token.WaitEvent.WaitOne(timeOut))
                    {
                        var errorResponse = callbacker.Token.ErrorResponse as UFXErrorResponse;
                        if (errorResponse != null && T2ErrorHandler.Success(errorResponse.ErrorCode))
                        {
                            bllResponse.Code    = ConnectionCode.Success;
                            bllResponse.Message = "Success QueryDeal";
                        }
                        else
                        {
                            bllResponse.Code    = ConnectionCode.FailQueryDeal;
                            bllResponse.Message = "Fail QueryDeal: " + errorResponse.ErrorMessage;
                        }
                    }
                    else
                    {
                        bllResponse.Code    = ConnectionCode.FailTimeoutQueryDeal;
                        bllResponse.Message = "Fail QueryDeal: Timeout!";
                    }
                }
                else
                {
                    bllResponse.Code    = result;
                    bllResponse.Message = "Fail to QueryDeal in ufx.";
                }
            }

            return(dealItems);
        }
Пример #8
0
        public BLLResponse Submit(Model.Database.EntrustCommand cmdItem, List <EntrustSecurity> entrustItems, CallerCallback callerCallback)
        {
            var cmdEntrustItems = entrustItems.Where(p => p.CommandId == cmdItem.CommandId && p.SubmitId == cmdItem.SubmitId).ToList();

            if (cmdEntrustItems == null || cmdEntrustItems.Count == 0)
            {
                return(new BLLResponse(ConnectionCode.EmptyEntrustItem, "Empty EntrustCommandItem or EntrustSecurityItem."));
            }

            UpdateUFXSetting();
            var tradeCommandItem = _tradeCommandBLL.GetTradeCommand(cmdItem.CommandId);
            var portfolio        = LoginManager.Instance.GetPortfolio(tradeCommandItem.PortfolioCode);
            //var stockholder = LoginManager.Instance.GetHolder(tradeCommandItem.

            var ufxRequests = new List <UFXBasketEntrustRequest>();
            var futuItem    = cmdEntrustItems.Find(p => p.SecuType == Model.SecurityInfo.SecurityType.Futures);

            foreach (var secuItem in cmdEntrustItems)
            {
                UFXBasketEntrustRequest request = new UFXBasketEntrustRequest
                {
                    StockCode             = secuItem.SecuCode,
                    EntrustPrice          = secuItem.EntrustPrice,
                    EntrustAmount         = secuItem.EntrustAmount,
                    PriceType             = EntrustRequestHelper.GetEntrustPriceType(secuItem.EntrustPriceType),
                    ExtSystemId           = secuItem.RequestId,
                    ThirdReff             = EntrustRequestHelper.GenerateThirdReff(secuItem.CommandId, secuItem.SubmitId, secuItem.RequestId),
                    LimitEntrustRatio     = _limitEntrustRatio,
                    FutuLimitEntrustRatio = _futuLimitEntrustRatio,
                    OptLimitEntrustRatio  = _optLimitEntrustRatio,
                };

                if (secuItem.SecuType == Model.SecurityInfo.SecurityType.Stock)
                {
                    request.EntrustDirection = EntrustRequestHelper.GetEntrustDirection(secuItem.EntrustDirection);
                    request.FuturesDirection = string.Empty;
                }
                else if (secuItem.SecuType == Model.SecurityInfo.SecurityType.Futures)
                {
                    request.EntrustDirection = EntrustRequestHelper.GetEntrustDirection(secuItem.EntrustDirection);
                    request.FuturesDirection = EntrustRequestHelper.GetFuturesDirection(secuItem.EntrustDirection);
                }

                var secuInfo = SecurityInfoManager.Instance.Get(secuItem.SecuCode, secuItem.SecuType);
                if (secuInfo != null)
                {
                    request.MarketNo = EntrustRequestHelper.GetMarketNo(secuInfo.ExchangeCode);
                }

                if (tradeCommandItem != null)
                {
                    request.AccountCode = tradeCommandItem.AccountCode;
                    request.CombiNo     = tradeCommandItem.PortfolioCode;
                }

                ufxRequests.Add(request);
            }

            Callbacker callbacker = new Callbacker
            {
                Token = new CallerToken
                {
                    SubmitId  = cmdItem.SubmitId,
                    CommandId = cmdItem.CommandId,
                    Caller    = callerCallback,
                    WaitEvent = new AutoResetEvent(false),
                },

                DataHandler = EntrustDataHandler,
            };

            var result = _securityBLL.EntrustBasket(ufxRequests, callbacker);

            BLLResponse bllResponse = new BLLResponse();

            if (result == Model.ConnectionCode.Success)
            {
                if (callbacker.Token.WaitEvent.WaitOne(_timeOut))
                {
                    var errorResponse = callbacker.Token.ErrorResponse as UFXErrorResponse;
                    if (errorResponse != null && T2ErrorHandler.Success(errorResponse.ErrorCode))
                    {
                        bllResponse.Code    = ConnectionCode.Success;
                        bllResponse.Message = "Success Entrust";
                    }
                    else
                    {
                        bllResponse.Code    = ConnectionCode.FailEntrust;
                        bllResponse.Message = "Fail Entrust: " + errorResponse.ErrorCode + " " + errorResponse.ErrorMessage + " " + errorResponse.MessageDetail;
                    }
                }
                else
                {
                    bllResponse.Code    = ConnectionCode.FailTimeoutEntrust;
                    bllResponse.Message = "Timeout to entrust.";
                }
            }
            else
            {
                bllResponse.Code    = result;
                bllResponse.Message = "Fail to submit in ufx.";
            }

            return(bllResponse);
        }
Пример #9
0
        /// <summary>
        /// Withdraw the entrusted securites.
        /// NOTE: the entrust_no is  necessary.
        /// </summary>
        /// <param name="submitId">The entrustsecurity SubmitId.</param>
        /// <param name="commandId">The tradingcommand CommandId.</param>
        /// <param name="entrustItems">The entrustsecurity item.</param>
        /// <param name="callerCallback"></param>
        /// <returns></returns>
        public BLLResponse Withdraw(int submitId, int commandId, List <EntrustSecurity> entrustItems, CallerCallback callerCallback)
        {
            BLLResponse bllResponse = new BLLResponse();

            List <UFXWithdrawRequest> requests = new List <UFXWithdrawRequest>();

            foreach (var entrustItem in entrustItems)
            {
                UFXWithdrawRequest request = new UFXWithdrawRequest
                {
                    EntrustNo = entrustItem.EntrustNo,
                };

                requests.Add(request);
            }

            Callbacker callbacker = new Callbacker
            {
                Token = new CallerToken
                {
                    SubmitId  = submitId,
                    CommandId = commandId,
                    WaitEvent = new AutoResetEvent(false),
                    Caller    = callerCallback,
                },

                DataHandler = WithdrawDataHandler,
            };

            var result = _securityBLL.Withdraw(requests, callbacker);

            if (result == Model.ConnectionCode.Success)
            {
                if (callbacker.Token.WaitEvent.WaitOne(_timeOut))
                {
                    var errorResponse = callbacker.Token.ErrorResponse as UFXErrorResponse;
                    if (errorResponse != null && T2ErrorHandler.Success(errorResponse.ErrorCode))
                    {
                        bllResponse.Code    = Model.ConnectionCode.Success;
                        bllResponse.Message = "Success Withdraw";
                    }
                    else
                    {
                        bllResponse.Code    = Model.ConnectionCode.FailWithdraw;
                        bllResponse.Message = errorResponse.ErrorMessage;
                    }
                }
                else
                {
                    bllResponse.Code    = Model.ConnectionCode.FailTimeoutWithdraw;
                    bllResponse.Message = "Fail to submit the basket withdraw to UFX: Timeout";
                }
            }
            else
            {
                bllResponse.Code    = Model.ConnectionCode.FailSubmit;
                bllResponse.Message = "Fail to submit the basket withdraw to UFX!";
            }

            return(bllResponse);
        }
Пример #10
0
        public List <UFXHoldingResponse> Query(CallerCallback callback)
        {
            List <UFXHoldingResponse> holdingItems = new List <UFXHoldingResponse>();
            var portfolios = _productBLL.GetAll();

            foreach (var portfolio in portfolios)
            {
                var ufxRequests = new List <UFXHoldingRequest>();
                var ufxRequest  = new UFXHoldingRequest
                {
                    CombiNo = portfolio.PortfolioNo,
                };

                ufxRequests.Add(ufxRequest);

                Callbacker callbacker = new Callbacker
                {
                    Token = new CallerToken
                    {
                        SubmitId  = 90000,
                        CommandId = 90001,
                        InArgs    = portfolio.PortfolioNo,
                        OutArgs   = holdingItems,
                        WaitEvent = new AutoResetEvent(false),
                        Caller    = callback,
                    },

                    DataHandler = DataHandlerCallback,
                };

                var result = _securityBLL.QueryHolding(ufxRequests, callbacker);

                BLLResponse bllResponse = new BLLResponse();
                if (result == Model.ConnectionCode.Success)
                {
                    if (callbacker.Token.WaitEvent.WaitOne(_timeOut))
                    {
                        var errorResponse = callbacker.Token.ErrorResponse as UFXErrorResponse;
                        if (errorResponse != null && T2ErrorHandler.Success(errorResponse.ErrorCode))
                        {
                            bllResponse.Code    = ConnectionCode.Success;
                            bllResponse.Message = "Success QueryHolding";
                        }
                        else
                        {
                            bllResponse.Code    = ConnectionCode.FailQueryHolding;
                            bllResponse.Message = "Fail QueryHolding: " + errorResponse.ErrorMessage;
                        }
                    }
                    else
                    {
                        bllResponse.Code    = ConnectionCode.FailTimeoutQueryHolding;
                        bllResponse.Message = "Fail QueryHolding: Timeout";
                    }
                }
                else
                {
                    bllResponse.Code    = result;
                    bllResponse.Message = "Fail to QueryHolding in ufx.";
                }
            }

            return(holdingItems);
        }