コード例 #1
0
        private bool BetAgainstIbetRequest(PrepareBetDTO oldIbetPrepare, MatchOddDTO ibetMatchOdd, eBetType ibetBetType, bool isLive, float sboMatchOdd, int ibetStake)
        {
            var againstIbetPrepare = CallPrepareBet(ibetMatchOdd, GetAgainstBetType(ibetBetType), isLive, sboMatchOdd);

            if (againstIbetPrepare.IsRunning)
            {
                //if (againstIbetPrepare.HasScore)
                //{
                if (againstIbetPrepare.HomeScore == oldIbetPrepare.HomeScore &&
                    againstIbetPrepare.AwayScore == oldIbetPrepare.AwayScore)
                {
                    if (CallConfirmBet(againstIbetPrepare, ibetStake, oldIbetPrepare.OddDef, isLive, true))
                    {
                        LastBetTime = DateTime.Now;

                        Task.Run(
                            () =>
                            UpdateBetPool(oldIbetPrepare.MatchOdd.ServerType,
                                          oldIbetPrepare.MatchOdd.MatchID, IbetBetPool,
                                          ibetStake * 2));
                        return(true);
                    }
                }
                //}
                Logger.Info("BET MGUOC IBET FAIL....TY SO THAY DOI....");
            }

            return(false);
        }
コード例 #2
0
        private bool BetAgainstIbetRequest(PrepareBetDTO oldIbetPrepare, MatchOddDTO ibetMatchOddSource, eBetType ibetBetType,
                                           bool isLive, float sboMatchOdd, int ibetStake, bool hasGetAgain)
        {
            MatchOddDTO ibetMatchOdd;

            if (hasGetAgain)
            {
                Thread.Sleep(60000);
                lock (IbetEngine.LockLive)
                {
                    ibetMatchOdd =
                        IbetEngine.LiveMatchOddDatas.FirstOrDefault(l => l.MatchID == ibetMatchOddSource.MatchID &&
                                                                    l.Odd.Equals(ibetMatchOddSource.Odd) &&
                                                                    l.OddType == ibetMatchOddSource.OddType);
                }

                if (ibetMatchOdd == null)
                {
                    return(false);
                }
            }
            else
            {
                ibetMatchOdd = ibetMatchOddSource;
            }

            var againstIbetPrepare = CallPrepareIbet(ibetMatchOdd, GetAgainstBetType(ibetBetType), isLive, sboMatchOdd);

            if (againstIbetPrepare.IsRunning)
            {
                //if (againstIbetPrepare.HasScore)
                //{
                if (againstIbetPrepare.HomeScore == oldIbetPrepare.HomeScore &&
                    againstIbetPrepare.AwayScore == oldIbetPrepare.AwayScore)
                {
                    string ibetConfirmMsg;
                    if (CallConfirmBet(againstIbetPrepare, ibetStake, oldIbetPrepare.OddDef, out ibetConfirmMsg, isLive, true))
                    {
                        LastBetTime = DateTime.Now;

                        Task.Run(
                            () =>
                            UpdateBetPool(oldIbetPrepare.MatchOdd.ServerType,
                                          oldIbetPrepare.MatchOdd.MatchID, IbetBetPool,
                                          ibetStake * 2));
                        return(true);
                    }
                }
                //}
                Logger.Info("BET MGUOC IBET FAIL....TY SO THAY DOI....");
            }

            return(false);
        }
コード例 #3
0
        private void CallConfirmBet(PrepareBetDTO prepareBet)
        {
            switch (prepareBet.MatchOdd.ServerType)
            {
            case eServerType.Ibet:
                IbetEngine.ConfirmBet(3);
                break;

            default:
                throw new Exception("CallConfirmBet => FAIL : Unknow prepareBet->MatchOdd->eServerType param");
                break;
            }
        }
コード例 #4
0
        private bool CallConfirmBet(PrepareBetDTO prepareBet, int stake, float oddDef, bool isLive = false, bool betAgainst = false)
        {
            switch (prepareBet.MatchOdd.ServerType)
            {
            case eServerType.Ibet:
                return(IbetEngine.ConfirmBet(stake, betAgainst));

            case eServerType.Sbo:
                return(SboEngine.ConfirmBet(stake, oddDef, isLive));

            default:
                throw new Exception("CallConfirmBet => FAIL : Unknow prepareBet->MatchOdd->eServerType param");
            }
        }
コード例 #5
0
        private bool CallConfirmBet(PrepareBetDTO prepareBet, int stake)
        {
            switch (prepareBet.MatchOdd.ServerType)
            {
            case eServerType.Ibet:
                return(IbetEngine.ConfirmBet(stake));

            case eServerType.Sbo:
                return(SboEngine.ConfirmBet(stake));

            default:
                throw new Exception("CallConfirmBet => FAIL : Unknow prepareBet->MatchOdd->eServerType param");
            }
        }
コード例 #6
0
        private bool CallConfirmBet(PrepareBetDTO prepareBet, int stake, float oddDef, out string ibetMsg,
                                    bool isLive            = false, bool betAgainst = false,
                                    eServerScan serverScan = eServerScan.Local, bool callSecondIbet = false)
        {
            ibetMsg = null;
            switch (prepareBet.MatchOdd.ServerType)
            {
            case eServerType.Ibet:
                return(IbetEngine.ConfirmBet(stake, out ibetMsg, betAgainst, serverScan));

            case eServerType.Sbo:
                return(SboEngine.ConfirmBet(stake, oddDef, isLive, serverScan));

            default:
                throw new Exception("CallConfirmBet => FAIL : Unknow prepareBet->MatchOdd->eServerType param");
            }
        }
コード例 #7
0
        public bool ProcessPrepareBet(MatchOddDTO ibetMatchOdd, eBetType ibetBetType, MatchOddDTO sboMatchOdd, eBetType sboBetType, bool isLive,
                                      eServerScan serverScan = eServerScan.Local, bool callSecond = false, string bpMatch = "", PrepareBetDTO sboPrepareBet = null)
        {
            if (isProcess && !callSecond) // || LastProcessPrepare.AddMilliseconds(200) > DateTime.Now
            {
                return(false);
            }

            try
            {
                isProcess = true;
                PrepareBetDTO ibetPrepareBet;
                if (!callSecond)
                {
                    sboMatchOdd.OldOdd = sboBetType == eBetType.Home ? sboMatchOdd.HomeOdd : sboMatchOdd.AwayOdd;

                    var taskPrepareBetSbo =
                        Task.Run(() => CallPrepareBet(sboMatchOdd, sboBetType, isLive, ibetMatchOdd.Odd));
                    ibetPrepareBet = CallPrepareBet(ibetMatchOdd, ibetBetType, isLive, sboMatchOdd.Odd);

                    if (!ibetPrepareBet.IsSuccess || taskPrepareBetSbo.Result == null)
                    {
                        return(false);
                    }

                    sboPrepareBet = taskPrepareBetSbo.Result;
                }
                else
                {
                    Logger.Warn("BAT DAU PREPARE LAN 2");
                    ibetPrepareBet = CallPrepareIbetAgain(ibetMatchOdd, ibetBetType, isLive, sboMatchOdd.Odd, bpMatch);
                    if (!ibetPrepareBet.IsSuccess)
                    {
                        return(false);
                    }
                }


                //sboMatchOdd.OldOdd = sboBetType == eBetType.Home ? sboMatchOdd.HomeOdd : sboMatchOdd.AwayOdd;

                //var taskPrepareBetSbo =
                //    Task.Run(() => CallPrepareBet(sboMatchOdd, sboBetType, isLive, ibetMatchOdd.Odd));
                //PrepareBetDTO ibetPrepareBet = CallPrepareBet(ibetMatchOdd, ibetBetType, isLive, sboMatchOdd.Odd);

                //if (!ibetPrepareBet.IsSuccess || taskPrepareBetSbo.Result == null)
                //{
                //    return false;
                //}
                //PrepareBetDTO sboPrepareBet = taskPrepareBetSbo.Result;

                if (ibetPrepareBet.IsRunning)
                {
                    bool isGood = IsGoodOddPair(ibetPrepareBet.NewOdd, sboPrepareBet.NewOdd, CompareValueDifferent);

                    if (isGood)
                    {
                        int ibetStake;
                        int sboStake;

                        if (CaculateStake(BetStakeType,
                                          ibetPrepareBet.MatchOdd.MatchID,
                                          ibetPrepareBet.MinBet,
                                          ibetPrepareBet.MaxBet,
                                          sboPrepareBet.MatchOdd.MatchID,
                                          sboPrepareBet.MinBet,
                                          sboPrepareBet.MaxBet,
                                          out ibetStake, out sboStake))
                        {
                            string ibetConfirmMsg;

                            if (CallConfirmBet(ibetPrepareBet, ibetStake, sboMatchOdd.Odd, out ibetConfirmMsg, isLive, false, serverScan, callSecond))
                            {
                                LastBetIbetSuccess = DateTime.Now;

                                if (CallConfirmBet(sboPrepareBet, sboStake, ibetMatchOdd.Odd, out ibetConfirmMsg, isLive, false, serverScan))
                                {
                                    Task.Run(
                                        () =>
                                    {
                                        UpdateBetPool(
                                            sboPrepareBet.MatchOdd.ServerType,
                                            sboPrepareBet.MatchOdd.MatchID,
                                            SboBetPool, sboStake);
                                        UpdateBetPool(
                                            ibetPrepareBet.MatchOdd.ServerType,
                                            ibetPrepareBet.MatchOdd.MatchID,
                                            IbetBetPool,
                                            ibetStake);
                                    });
                                    Logger.Info("BET SUCCESS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                                    CountBet++;
                                    LastBetTime = DateTime.Now;
                                    return(true);
                                }
                                else
                                {
                                    if (BetAgainstIbet)
                                    {
                                        Logger.Info(ProcessorName + " DAT NGUOC IBET<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");

                                        if (!BetAgainstIbetRequest(ibetPrepareBet, ibetMatchOdd, ibetBetType,
                                                                   isLive, sboMatchOdd.Odd, ibetStake, false))
                                        {
                                            Thread.Sleep(3000);
                                            Logger.Info("CALL LAN 2 BET MGUOC IBET<<<<<<<<<<<<<<<<");
                                            if (BetAgainstIbetRequest(ibetPrepareBet, ibetMatchOdd, ibetBetType,
                                                                      isLive, sboMatchOdd.Odd, ibetStake, true))
                                            {
                                                isProcess = false;
                                                return(true);
                                            }
                                            else
                                            {
                                                Logger.Info("DAT NGUOC THAT BAI, KHOI DONG LAI IBET!!!");
                                                IbetEngine.BetAgainstTransactions.Add(new BetAgainstTransaction()
                                                {
                                                    BetType    = GetAgainstBetType(ibetBetType),
                                                    IsLive     = isLive,
                                                    MatchOdd   = ibetMatchOdd,
                                                    OddCompare = sboMatchOdd.Odd,
                                                    Stake      = ibetStake,
                                                    HomeScore  = ibetPrepareBet.HomeScore,
                                                    AwayScore  = ibetPrepareBet.AwayScore
                                                });

                                                Task.Run(() =>
                                                {
                                                    Logger.Info("CALL KHOI DONG LAI IBET!!!");
                                                    IbetEngine.UpdateException(IbetEngine, eExceptionType.LoginFail);
                                                });
                                            }
                                        }
                                        else
                                        {
                                            isProcess = false;
                                            return(true);
                                        }

                                        Logger.Info("BET MGUOC IBET FAIL...DAT NGUOC THAT BAI...");
                                    }
                                }

                                LastBetTime = DateTime.Now;

                                Task.Run(
                                    () =>
                                    UpdateBetPool(ibetPrepareBet.MatchOdd.ServerType,
                                                  ibetPrepareBet.MatchOdd.MatchID, IbetBetPool,
                                                  ibetStake));
                                return(true);
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(ibetConfirmMsg))
                                {
                                    string bpValue = GetBpMatchIbet(ibetConfirmMsg);
                                    Logger.Info("GOI COMPARE LAI LAN 2, bp_match: " + bpValue);
                                    return(ProcessPrepareBet(ibetMatchOdd, ibetBetType, sboMatchOdd, sboBetType,
                                                             isLive,
                                                             serverScan, true, bpValue, sboPrepareBet));
                                }
                            }

                            FireLogScan(ibetMatchOdd, sboMatchOdd, serverScan);
                        }
                    }
                    else
                    {
                        FireLogScan(ibetMatchOdd, sboMatchOdd, serverScan);
                    }
                }
                else
                {
                    FireLogScan(ibetMatchOdd, sboMatchOdd, serverScan);
                }
                return(false);
            }
            catch (Exception ex)
            {
                Logger.Error(ProcessorName, ex);
                return(false);
            }
            finally
            {
                //LastProcessPrepare = DateTime.Now;
                isProcess = false;
            }
        }