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); }
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); }
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; } }
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"); } }
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"); } }
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"); } }
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; } }