Пример #1
0
        protected void btnMatchResult_Click(object sender, EventArgs e)
        {
            try
            {
                var guid = CasinoItem.GetCasinoItemGuidByMatch(CurrentMatch, CasinoType.MatchResult);

                if (guid.HasValue)
                {
                    if (CasinoItem.GetCasinoItem(guid.Value).CloseTime < DateTime.Now)
                    {
                        throw new Exception("已超出投注截止时间");
                    }

                    if (Bet.GetUserCasinoItemAllBet(userid, guid.Value).Count > 0)
                    {
                        throw new Exception("已经投过此注,不能重复猜比分");
                    }

                    var bet = new Bet
                    {
                        BetAmount = null,
                        BetRate = null,
                        CasinoItemGuid = guid.Value,
                        UserID = userid,
                        UserName = username
                    };

                    var matchResult = new MatchResultBetDetail
                    {
                        Home = Convert.ToInt16(tbHome.Text),
                        Away = Convert.ToInt16(tbAway.Text)
                    };

                    bet.Insert(matchResult);

                    ClientScript.RegisterClientScriptBlock(typeof(string), "succeed",
                        "alert('投注成功'); window.location.href = window.location.href;", true);
                }
            }
            catch (Exception ex)
            {
                ClientScript.RegisterClientScriptBlock(typeof(string), "failed", $"alert('{ex.Message}')", true);
            }
        }
Пример #2
0
        public void Insert(MatchResultBetDetail matchResult)
        {
            using (var conn = SQLConn.GetConnection())
            {
                conn.Open();
                var trans = conn.BeginTransaction();
                try
                {
                    if (BetCheck())
                    {
                        //update gambler statistics
                        var gambler = new Gambler(UserID, trans);
                        gambler.TotalBet += BetAmount.GetValueOrDefault(0f);

                        if (BetAmount.HasValue)
                        {
                            gambler.Cash -= BetAmount.GetValueOrDefault(0f);
                        }
                        gambler.Update(trans);

                        var banker = new Banker(CasinoItem.GetCasinoItem(CasinoItemGuid).BankerID);
                        banker.Cash += BetAmount.GetValueOrDefault(0f);
                        banker.Update(trans);

                        var key = DataAccess.Bet.InsertBet(UserID, UserName, CasinoItemGuid, BetAmount, BetRate, trans);
                        matchResult.Save(key, trans);

                        trans.Commit();
                    }
                    else
                    {
                        throw new Exception("Failed to create bet (MatchResult).");
                    }
                }
                catch
                {
                    trans.Rollback();
                }

                //conn.Close();
            }
        }
Пример #3
0
        protected void gvBet_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var bet = e.Row.DataItem as Bet;

                var ltrlHome = e.Row.FindControl("ltrlHome") as Literal;
                var ltrlAway = e.Row.FindControl("ltrlAway") as Literal;
                var ltrlVs = e.Row.FindControl("ltrlVS") as Literal;

                if (bet != null && ltrlHome != null && ltrlAway != null && ltrlVs != null)
                {
                    var item = CasinoItem.GetCasinoItem(bet.CasinoItemGuid);

                    if (CurrentMatch != Guid.Empty)
                    {
                        ltrlHome.Text = _home;
                        ltrlAway.Text = _away;
                    }
                    else
                    {
                        if (item.MatchGuid != null)
                        {
                            var m = new Match(item.MatchGuid.Value);

                            var homeT = Team.Cache.Load(m.Home);
                            var awayT = Team.Cache.Load(m.Away);

                            ltrlHome.Text =
                                $"<a class=\"StrongLink\" href=\"CasinoTeam.aspx?Team={homeT.ID}\">{homeT.TeamDisplayName}</a>";
                            ltrlAway.Text =
                                $"<a class=\"StrongLink\" href=\"CasinoTeam.aspx?Team={awayT.ID}\">{awayT.TeamDisplayName}</a>";

                            ltrlVs.Text =
                                $"<a href=\"CasinoTeam.aspx?Match={m.MatchGuid}\"><em title=\"{homeT.Ground}({homeT.Capacity})\">vs</em></a>";
                        }
                    }

                    var ltrlResult = e.Row.FindControl("ltrlResult") as Literal;
                    var dt = BetDetail.GetBetDetailByBetId(bet.ID);

                    if (dt != null && ltrlResult != null)
                    {
                        var dr = dt.Rows[0];

                        switch (item.ItemType)
                        {
                            case CasinoType.SingleChoice:
                                if (dr["DetailName"].ToString() == MatchChoiceOption.HomeWinValue)
                                    ltrlResult.Text = "主队胜";
                                else if (dr["DetailName"].ToString() == MatchChoiceOption.DrawValue)
                                    ltrlResult.Text = "双方平";
                                else if (dr["DetailName"].ToString() == MatchChoiceOption.AwayWinValue)
                                    ltrlResult.Text = "客队胜";

                                break;
                            case CasinoType.MatchResult:
                                var betDetail = new MatchResultBetDetail(dt);
                                ltrlResult.Text = $"{betDetail.Home}:{betDetail.Away}";
                                break;
                        }
                    }

                    var ltrlBetResult = e.Row.FindControl("ltrlBetResult") as Literal;

                    if (ltrlBetResult != null)
                    {
                        if (!bet.IsWin.HasValue)
                        {
                            ltrlBetResult.Text = string.Empty;
                        }
                        else
                        {
                            if (bet.IsWin != null && bet.IsWin.Value)
                            {
                                if (item.ItemType == CasinoType.SingleChoice)
                                    ltrlBetResult.Text = "<span class=\"CasinoSys_True\" title=\"猜对输赢\"></span>";
                                else if (item.ItemType == CasinoType.MatchResult)
                                    ltrlBetResult.Text = "<span class=\"CasinoSys_Good\" title=\"猜对比分\"></span>";

                                e.Row.CssClass = "RowCasinoSys_True";
                            }
                            else
                            {
                                ltrlBetResult.Text = "<span class=\"CasinoSys_False\" title=\"失败\"></span>";
                            }
                        }
                    }

                    var ltrlBetRate = e.Row.FindControl("ltrlBetRate") as Literal;

                    if (ltrlBetRate != null)
                    {
                        ltrlBetRate.Text = bet.BetRate.HasValue ? Convert.ToSingle(bet.BetRate).ToString("f2") : "/";
                    }
                }
            }
        }
Пример #4
0
        public void Insert(MatchResultBetDetail matchResult)
        {
            using (var conn = SQLConn.GetConnection())
            {
                conn.Open();
                var trans = conn.BeginTransaction();
                try
                {
                    if (BetCheck())
                    {
                        //update gambler statistics
                        var gambler = new Gambler(UserID, trans);
                        gambler.TotalBet += BetAmount.GetValueOrDefault(0f);

                        if (BetAmount.HasValue)
                            gambler.Cash -= BetAmount.GetValueOrDefault(0f);
                        gambler.Update(trans);

                        var banker = new Banker(CasinoItem.GetCasinoItem(CasinoItemGuid).BankerID);
                        banker.Cash += BetAmount.GetValueOrDefault(0f);
                        banker.Update(trans);

                        var key = DataAccess.Bet.InsertBet(UserID, UserName, CasinoItemGuid, BetAmount, BetRate, trans);
                        matchResult.Save(key, trans);

                        trans.Commit();
                    }
                    else
                        throw new Exception("Failed to create bet (MatchResult).");
                }
                catch
                {
                    trans.Rollback();
                }

                //conn.Close();
            }
        }
Пример #5
0
        protected void gvBetLog_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var drv = e.Row.DataItem as DataRowView;

                if (drv != null)
                {
                    var m = new Match((Guid) drv["MatchGuid"]);

                    var hlHome = e.Row.FindControl("hlHome") as HyperLink;
                    var hlAway = e.Row.FindControl("hlAway") as HyperLink;
                    var hlVersus = e.Row.FindControl("hlVersus") as HyperLink;

                    if (hlHome != null && hlAway != null && hlVersus != null)
                    {
                        var tHome = Team.Cache.Load(m.Home);
                        var tAway = Team.Cache.Load(m.Away);

                        hlHome.Text = tHome.TeamDisplayName;
                        hlHome.NavigateUrl = $"CasinoTeam.aspx?Team={m.Home}";

                        hlAway.Text = tAway.TeamDisplayName;
                        hlAway.NavigateUrl = $"CasinoTeam.aspx?Team={m.Away}";

                        hlVersus.NavigateUrl = $"CasinoTeam.aspx?Match={m.MatchGuid}";
                        hlVersus.Text =
                            $"<em title=\"{tHome.Ground}{(tHome.Capacity.HasValue ? ("(" + tHome.Capacity.Value + ")") : string.Empty)}\">vs</em>";
                    }
                }

                var ltrlResult = e.Row.FindControl("ltrlResult") as Literal;
                var ltrlBetResult = e.Row.FindControl("ltrlBetResult") as Literal;
                var ltrlBetRate = e.Row.FindControl("ltrlBetRate") as Literal;
                var btnReturnBet = e.Row.FindControl("btnReturnBet") as LinkButton;

                if (drv != null && ltrlResult != null && ltrlBetResult != null && ltrlBetRate != null &&
                    btnReturnBet != null)
                {
                    var itemGuid = (Guid) drv["CasinoItemGuid"];

                    var item = CasinoItem.GetCasinoItem(itemGuid);
                    var dt = BetDetail.GetBetDetailByBetId((int) drv["ID"]);

                    if (dt != null)
                    {
                        var dr = dt.Rows[0];

                        switch (item.ItemType)
                        {
                            case CasinoType.SingleChoice:
                                if (dr["DetailName"].ToString() == MatchChoiceOption.HomeWinValue)
                                    ltrlResult.Text = "主队胜";
                                else if (dr["DetailName"].ToString() == MatchChoiceOption.DrawValue)
                                    ltrlResult.Text = "双方平";
                                else if (dr["DetailName"].ToString() == MatchChoiceOption.AwayWinValue)
                                    ltrlResult.Text = "客队胜";

                                break;
                            case CasinoType.MatchResult:
                                var betDetail = new MatchResultBetDetail(dt);
                                ltrlResult.Text = $"{betDetail.Home}:{betDetail.Away}";

                                break;
                        }
                    }

                    if (!Convert.IsDBNull(drv["IsWin"]))
                    {
                        ltrlBetResult.Visible = true;
                        btnReturnBet.Visible = false;
                        if (Convert.ToBoolean(drv["IsWin"]))
                        {
                            if (item.ItemType == CasinoType.SingleChoice)
                                ltrlBetResult.Text = "<span class=\"CasinoSys_True\" title=\"猜对输赢\"></span>";
                            else if (item.ItemType == CasinoType.MatchResult)
                                ltrlBetResult.Text = "<span class=\"CasinoSys_Good\" title=\"猜对比分\"></span>";

                            e.Row.CssClass = "RowCasinoSys_True";
                        }
                        else
                        {
                            ltrlBetResult.Text = "<span class=\"CasinoSys_False\" title=\"失败\"></span>";
                        }
                    }
                    else if (Convert.IsDBNull(drv["IsWin"]) && (CurrentUserId == userid) &&
                             (item.CloseTime > DateTime.Now))
                    {
                        btnReturnBet.Visible = true;
                        btnReturnBet.CommandArgument = drv["ID"].ToString();
                    }
                    else
                    {
                        ltrlBetResult.Visible = false;
                        btnReturnBet.Visible = false;
                    }
                }

                if (drv != null && ltrlBetRate != null)
                {
                    ltrlBetRate.Text = Convert.IsDBNull(drv["BetRate"]) ? "/" : Convert.ToSingle(drv["BetRate"]).ToString("f2");
                }
            }
        }
Пример #6
0
        public void CalcBonus()
        {
            if (string.IsNullOrEmpty(ResultHome.ToString()) || string.IsNullOrEmpty(ResultAway.ToString()))
            {
                throw new Exception("You can not calc bonus without a match result");
            }

            using (var conn = SQLConn.GetConnection())
            {
                conn.Open();
                var trans = conn.BeginTransaction();

                try
                {
                    var itemGuid = DataAccess.CasinoItem.GetCasinoItemGuidByMatch(MatchGuid,
                        (int)CasinoType.SingleChoice, trans);

                    if (itemGuid.HasValue)
                    {
                        //single choice bonus
                        var item = CasinoItem.GetCasinoItem(itemGuid.Value);
                        var banker = new Banker(item.BankerID);

                        var totalEarning = 0f;

                        var betList = Bet.GetBetByCasinoItemGuid(itemGuid.Value, trans);

                        foreach (var bet in betList)
                        {
                            var dt = DataAccess.BetDetail.GetBetDetailByBetId(bet.ID);

                            if (dt != null)
                            {
                                var gambler = new Gambler(bet.UserID, trans);

                                if (bet.IsWin == null)
                                {
                                    var isWin = false;

                                    var dr = dt.Rows[0];

                                    if (dr["DetailName"].ToString() == MatchChoiceOption.HomeWinValue &&
                                        ResultHome > ResultAway)
                                        isWin = true;
                                    else if (dr["DetailName"].ToString() == MatchChoiceOption.DrawValue &&
                                             ResultHome == ResultAway)
                                        isWin = true;
                                    else if (dr["DetailName"].ToString() == MatchChoiceOption.AwayWinValue &&
                                             ResultHome < ResultAway)
                                        isWin = true;

                                    bet.IsWin = isWin;

                                    if (bet.BetAmount.HasValue)
                                    {
                                        totalEarning += bet.BetAmount.Value;

                                        if (isWin)
                                        {
                                            bet.Earning = bet.BetAmount * bet.BetRate;

                                            if (bet.Earning != null)
                                            {
                                                bet.EarningDesc = $"{bet.Earning.Value:N2}";

                                                totalEarning -= bet.Earning.Value;

                                                //add gambler cash

                                                gambler.Cash += bet.Earning.Value;
                                                gambler.Win++;

                                                banker.Cash -= bet.Earning.Value;
                                            }
                                        }
                                        else
                                        {
                                            gambler.Lose++;

                                            bet.Earning = 0;
                                            bet.EarningDesc = string.Empty;
                                        }
                                    }
                                }

                                bet.Update(trans);
                                gambler.Update(trans);
                            }
                        }

                        banker.Update(trans);

                        item.Earning = totalEarning;
                        item.Save(trans);
                    }

                    itemGuid = DataAccess.CasinoItem.GetCasinoItemGuidByMatch(MatchGuid, (int)CasinoType.MatchResult,
                        trans);

                    if (itemGuid.HasValue)
                    {
                        //match result bonus
                        var betList = Bet.GetBetByCasinoItemGuid(itemGuid.Value, trans);

                        var item = CasinoItem.GetCasinoItem(itemGuid.Value);
                        item.Earning = 0;
                        item.Save(trans);

                        foreach (var bet in betList)
                        {
                            var gambler = new Gambler(bet.UserID, trans);

                            var dt = DataAccess.BetDetail.GetBetDetailByBetId(bet.ID);

                            var betDetail = new MatchResultBetDetail(dt);

                            if (bet.IsWin == null)
                            {
                                if (betDetail.Home == ResultHome && betDetail.Away == ResultAway)
                                {
                                    //win
                                    bet.IsWin = true;
                                    bet.Earning = 0;
                                    bet.EarningDesc = "RP+1";

                                    gambler.Win++;

                                    //update user rp

                                    Users.UpdateUserExtCredits(bet.UserID, 4, 1);
                                }
                                else
                                {
                                    //lose
                                    bet.IsWin = false;
                                    bet.Earning = 0;
                                    bet.EarningDesc = string.Empty;

                                    gambler.Lose++;
                                }
                            }

                            bet.Update(trans);
                            gambler.Update(trans);
                        }
                    }

                    trans.Commit();
                }
                catch
                {
                    trans.Rollback();
                }
            }
        }
Пример #7
0
        public void CalcBonus()
        {
            if (string.IsNullOrEmpty(ResultHome.ToString()) || string.IsNullOrEmpty(ResultAway.ToString()))
            {
                throw new Exception("You can not calc bonus without a match result");
            }

            using (var conn = SQLConn.GetConnection())
            {
                conn.Open();
                var trans = conn.BeginTransaction();

                try
                {
                    var itemGuid = DataAccess.CasinoItem.GetCasinoItemGuidByMatch(MatchGuid,
                                                                                  (int)CasinoType.SingleChoice, trans);

                    if (itemGuid.HasValue)
                    {
                        //single choice bonus
                        var item   = CasinoItem.GetCasinoItem(itemGuid.Value);
                        var banker = new Banker(item.BankerID);

                        var totalEarning = 0f;

                        var betList = Bet.GetBetByCasinoItemGuid(itemGuid.Value, trans);

                        foreach (var bet in betList)
                        {
                            var dt = DataAccess.BetDetail.GetBetDetailByBetId(bet.ID);

                            if (dt != null)
                            {
                                var gambler = new Gambler(bet.UserID, trans);

                                if (bet.IsWin == null)
                                {
                                    var isWin = false;

                                    var dr = dt.Rows[0];

                                    if (dr["DetailName"].ToString() == MatchChoiceOption.HomeWinValue &&
                                        ResultHome > ResultAway)
                                    {
                                        isWin = true;
                                    }
                                    else if (dr["DetailName"].ToString() == MatchChoiceOption.DrawValue &&
                                             ResultHome == ResultAway)
                                    {
                                        isWin = true;
                                    }
                                    else if (dr["DetailName"].ToString() == MatchChoiceOption.AwayWinValue &&
                                             ResultHome < ResultAway)
                                    {
                                        isWin = true;
                                    }

                                    bet.IsWin = isWin;

                                    if (bet.BetAmount.HasValue)
                                    {
                                        totalEarning += bet.BetAmount.Value;

                                        if (isWin)
                                        {
                                            bet.Earning = bet.BetAmount * bet.BetRate;

                                            if (bet.Earning != null)
                                            {
                                                bet.EarningDesc = $"{bet.Earning.Value:N2}";

                                                totalEarning -= bet.Earning.Value;

                                                //add gambler cash

                                                gambler.Cash += bet.Earning.Value;
                                                gambler.Win++;

                                                banker.Cash -= bet.Earning.Value;
                                            }
                                        }
                                        else
                                        {
                                            gambler.Lose++;

                                            bet.Earning     = 0;
                                            bet.EarningDesc = string.Empty;
                                        }
                                    }
                                }

                                bet.Update(trans);
                                gambler.Update(trans);
                            }
                        }

                        banker.Update(trans);

                        item.Earning = totalEarning;
                        item.Save(trans);
                    }

                    itemGuid = DataAccess.CasinoItem.GetCasinoItemGuidByMatch(MatchGuid, (int)CasinoType.MatchResult,
                                                                              trans);

                    if (itemGuid.HasValue)
                    {
                        //match result bonus
                        var betList = Bet.GetBetByCasinoItemGuid(itemGuid.Value, trans);

                        var item = CasinoItem.GetCasinoItem(itemGuid.Value);
                        item.Earning = 0;
                        item.Save(trans);

                        foreach (var bet in betList)
                        {
                            var gambler = new Gambler(bet.UserID, trans);

                            var dt = DataAccess.BetDetail.GetBetDetailByBetId(bet.ID);

                            var betDetail = new MatchResultBetDetail(dt);

                            if (bet.IsWin == null)
                            {
                                if (betDetail.Home == ResultHome && betDetail.Away == ResultAway)
                                {
                                    //win
                                    bet.IsWin       = true;
                                    bet.Earning     = 0;
                                    bet.EarningDesc = "RP+1";

                                    gambler.Win++;

                                    //update user rp

                                    Users.UpdateUserExtCredits(bet.UserID, 4, 1);
                                }
                                else
                                {
                                    //lose
                                    bet.IsWin       = false;
                                    bet.Earning     = 0;
                                    bet.EarningDesc = string.Empty;

                                    gambler.Lose++;
                                }
                            }

                            bet.Update(trans);
                            gambler.Update(trans);
                        }
                    }

                    trans.Commit();
                }
                catch
                {
                    trans.Rollback();
                }
            }
        }
Пример #8
0
        protected void gvMatch_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var drv = e.Row.DataItem as DataRowView;

                if (drv != null)
                {
                    var m = new Match((Guid)drv["MatchGuid"]);

                    var ltrlLeagueInfo = e.Row.FindControl("ltrlLeagueInfo") as Literal;

                    if (ltrlLeagueInfo != null)
                    {
                        var strLeague =
                            "<a href=\"CasinoGame.aspx?League={0}\" title=\"{1}\"><img src=\"{2}\" alt=\"{1}\" class=\"CasinoSys_CategoryImg\" /></a>";

                        var strLeagueName = $"{m.LeagueName}{(m.Round.HasValue ? $" 第{m.Round}轮" : string.Empty)}";

                        ltrlLeagueInfo.Text = string.Format(strLeague, m.LeagueGuid, strLeagueName,
                            League.Cache.Load(m.LeagueGuid).LeagueLogo);
                    }

                    var lblHome = e.Row.FindControl("lblHome") as Label;
                    var lblAway = e.Row.FindControl("lblAway") as Label;
                    var hlVersus = e.Row.FindControl("hlVersus") as HyperLink;

                    if (lblHome != null && lblAway != null && hlVersus != null)
                    {
                        var tHome = Team.Cache.Load(m.Home);
                        var tAway = Team.Cache.Load(m.Away);

                        var strTeamName =
                            "<a class=\"StrongLink\" href=\"CasinoTeam.aspx?Team={0}\"  title=\"{1}\">{2}</a> ";
                        var strTeamLogo = "<img src=\"{3}\" alt=\"{1}\" /> ";

                        lblHome.Text = string.Format(strTeamName + strTeamLogo,
                            tHome.ID, tHome.TeamEnglishName, tHome.TeamDisplayName, tHome.TeamLogo);
                        lblAway.Text = string.Format(strTeamLogo + strTeamName,
                            tAway.ID, tAway.TeamEnglishName, tAway.TeamDisplayName, tAway.TeamLogo);

                        hlVersus.NavigateUrl = $"CasinoTeam.aspx?Match={m.MatchGuid}";
                        hlVersus.Text =
                            $"<em title=\"{tHome.Ground}{(tHome.Capacity.HasValue ? ("(" + tHome.Capacity.Value + ")") : string.Empty)}\">vs</em>";
                    }

                    var guid = CasinoItem.GetCasinoItemGuidByMatch(m.MatchGuid, CasinoType.SingleChoice);

                    if (guid.HasValue)
                    {
                        var item = CasinoItem.GetCasinoItem(guid.Value);

                        if (item != null)
                        {
                            var options = ((SingleChoice)item).Options;

                            var winOption = options.Find(option => option.OptionValue == MatchChoiceOption.HomeWinValue);
                            var drawOption = options.Find(option => option.OptionValue == MatchChoiceOption.DrawValue);
                            var loseOption = options.Find(option => option.OptionValue == MatchChoiceOption.AwayWinValue);

                            if (!string.IsNullOrEmpty(winOption.OptionValue) &&
                                !string.IsNullOrEmpty(drawOption.OptionValue) &&
                                !string.IsNullOrEmpty(loseOption.OptionValue) &&
                                winOption.OptionRate.HasValue &&
                                drawOption.OptionRate.HasValue &&
                                loseOption.OptionRate.HasValue)
                            {
                                var ltrlWinRate = e.Row.FindControl("ltrlWinRate") as Literal;
                                var ltrlDrawRate = e.Row.FindControl("ltrlDrawRate") as Literal;
                                var ltrlLoseRate = e.Row.FindControl("ltrlLoseRate") as Literal;

                                if (ltrlWinRate != null)
                                    ltrlWinRate.Text = Convert.ToSingle(winOption.OptionRate.Value).ToString("f2");
                                if (ltrlDrawRate != null)
                                    ltrlDrawRate.Text = Convert.ToSingle(drawOption.OptionRate.Value).ToString("f2");
                                if (ltrlLoseRate != null)
                                    ltrlLoseRate.Text = Convert.ToSingle(loseOption.OptionRate.Value).ToString("f2");
                            }
                        }
                    }

                    //bet for match result

                    guid = CasinoItem.GetCasinoItemGuidByMatch(m.MatchGuid, CasinoType.MatchResult);

                    if (guid.HasValue)
                    {
                        var item = CasinoItem.GetCasinoItem(guid.Value);

                        if (item?.ItemGuid != null)
                        {
                            var bets = Bet.GetUserCasinoItemAllBet(userid, item.ItemGuid.Value);

                            if (bets.Count != 0)
                            {
                                var betDetail = new MatchResultBetDetail(BetDetail.GetBetDetailByBetId(bets[0].ID));

                                var tbHomeScore = e.Row.FindControl("tbHomeScore") as TextBox;
                                var tbAwayScore = e.Row.FindControl("tbAwayScore") as TextBox;

                                if (tbHomeScore != null)
                                {
                                    tbHomeScore.Text = betDetail.Home.ToString();
                                    tbHomeScore.ReadOnly = true;
                                    tbHomeScore.Style.Add("border", "none");
                                    tbHomeScore.Style.Add("font-weight", "bold");
                                    tbHomeScore.Style.Add("background", "none");
                                    tbHomeScore.Style.Add("color", "#aa0000");
                                }

                                if (tbAwayScore != null)
                                {
                                    tbAwayScore.Text = betDetail.Away.ToString();
                                    tbAwayScore.ReadOnly = true;
                                    tbAwayScore.Style.Add("border", "none");
                                    tbAwayScore.Style.Add("font-weight", "bold");
                                    tbAwayScore.Style.Add("background", "none");
                                    tbAwayScore.Style.Add("color", "#aa0000");
                                }
                            }
                            else
                            {
                                _itemAvailable = true;
                            }
                        }
                    }
                }
            }
        }
Пример #9
0
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gvMatch.Rows)
            {
                var tbHomeScore = row.FindControl("tbHomeScore") as TextBox;
                var tbAwayScore = row.FindControl("tbAwayScore") as TextBox;

                if (tbHomeScore != null && tbAwayScore != null && gvMatch.DataKeys[row.RowIndex] != null)
                {
                    var matchGuid = (Guid)gvMatch.DataKeys[row.RowIndex].Value;

                    var guid = CasinoItem.GetCasinoItemGuidByMatch(matchGuid, CasinoType.MatchResult);

                    if (guid.HasValue)
                    {
                        var item = CasinoItem.GetCasinoItem(guid.Value);

                        if (item?.ItemGuid != null)
                        {
                            short homeScore, awayScore;

                            if (short.TryParse(tbHomeScore.Text, out homeScore) && short.TryParse(tbAwayScore.Text, out awayScore))
                            {
                                //save
                                if (CasinoItem.GetCasinoItem(guid.Value).CloseTime < DateTime.Now)
                                {
                                    continue;
                                }

                                if (homeScore < 0 || awayScore < 0)
                                {
                                    continue;
                                }

                                var bets = Bet.GetUserCasinoItemAllBet(userid, item.ItemGuid.Value);

                                if (bets.Count > 0)
                                {
                                    //already bet
                                    continue;
                                }

                                try
                                {
                                    var bet = new Bet
                                    {
                                        BetAmount = null,
                                        BetRate = null,
                                        CasinoItemGuid = guid.Value,
                                        UserID = userid,
                                        UserName = username
                                    };

                                    if (bet.BetCheck())
                                    {
                                        var matchResult = new MatchResultBetDetail
                                        {
                                            Home = homeScore,
                                            Away = awayScore
                                        };

                                        bet.Insert(matchResult);
                                    }
                                }
                                catch
                                {
                                    ClientScript.RegisterClientScriptBlock(typeof(string), "failed",
                                        "alert('投注失败'); window.location.href = window.location.href;", true);
                                }
                            }
                        }
                    }
                }
            }

            ClientScript.RegisterClientScriptBlock(typeof(string), "failed",
                "alert('您的投注单已提交'); window.location.href = window.location.href;", true);
        }
Пример #10
0
        protected void gvBet_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var bet = e.Row.DataItem as Bet;

                var ltrlHome = e.Row.FindControl("ltrlHome") as Literal;
                var ltrlAway = e.Row.FindControl("ltrlAway") as Literal;
                var btnReturnBet = e.Row.FindControl("btnReturnBet") as LinkButton;

                if (bet != null)
                {
                    var item = CasinoItem.GetCasinoItem(bet.CasinoItemGuid);

                    if (item.MatchGuid != null)
                    {
                        var m = new Match(item.MatchGuid.Value);
                        {
                            var homeT = Team.Cache.Load(m.Home);
                            var awayT = Team.Cache.Load(m.Away);

                            if (ltrlHome != null) ltrlHome.Text = homeT.TeamDisplayName;
                            if (ltrlAway != null) ltrlAway.Text = awayT.TeamDisplayName;
                        }
                    }

                    var ltrlResult = e.Row.FindControl("ltrlResult") as Literal;
                    var dt = BetDetail.GetBetDetailByBetId(bet.ID);

                    if (dt != null && ltrlResult != null)
                    {
                        var dr = dt.Rows[0];

                        switch (item.ItemType)
                        {
                            case CasinoType.SingleChoice:
                                if (dr["DetailName"].ToString() == MatchChoiceOption.HomeWinValue)
                                {
                                    ltrlResult.Text = "主队胜";
                                }
                                else if (dr["DetailName"].ToString() == MatchChoiceOption.DrawValue)
                                {
                                    ltrlResult.Text = "双方平";
                                }
                                else if (dr["DetailName"].ToString() == MatchChoiceOption.AwayWinValue)
                                {
                                    ltrlResult.Text = "客队胜";
                                }

                                break;
                            case CasinoType.MatchResult:
                                var betDetail = new MatchResultBetDetail(dt);
                                ltrlResult.Text = $"{betDetail.Home}:{betDetail.Away}";
                                break;
                        }
                    }
                }

                var ltrlBetRate = e.Row.FindControl("ltrlBetRate") as Literal;

                if (bet != null)
                {
                    if (ltrlBetRate != null)
                        ltrlBetRate.Text = bet.BetRate.HasValue ? Convert.ToSingle(bet.BetRate).ToString("f2") : "/";

                    if (btnReturnBet != null)
                    {
                        btnReturnBet.Visible = true;
                        btnReturnBet.CommandArgument = bet.ID.ToString();
                    }
                }
            }
        }
Пример #11
0
        protected void gvBet_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var ltrlResult = e.Row.FindControl("ltrlResult") as Literal;
                var ltrlBetRate = e.Row.FindControl("ltrlBetRate") as Literal;
                var ltrlBonusCalc = e.Row.FindControl("ltrlBonusCalc") as Literal;

                if (ltrlResult != null && ltrlBetRate != null && ltrlBonusCalc != null)
                {
                    var bet = e.Row.DataItem as Bet;

                    if (bet != null)
                    {
                        var item = CasinoItem.GetCasinoItem(bet.CasinoItemGuid);

                        switch (item.ItemType)
                        {
                            case CasinoType.SingleChoice:
                                var dt = BetDetail.GetBetDetailByBetId(bet.ID);
                                foreach (DataRow dr in dt.Rows)
                                {
                                    if (dr["DetailName"].ToString() == MatchChoiceOption.HomeWinValue)
                                        ltrlResult.Text = "主队胜";
                                    else if (dr["DetailName"].ToString() == MatchChoiceOption.DrawValue)
                                        ltrlResult.Text = "双方平";
                                    else if (dr["DetailName"].ToString() == MatchChoiceOption.AwayWinValue)
                                        ltrlResult.Text = "客队胜";
                                }
                                break;
                            case CasinoType.MatchResult:
                                var matchResult = new MatchResultBetDetail(BetDetail.GetBetDetailByBetId(bet.ID));
                                ltrlResult.Text = $"{matchResult.Home} : {matchResult.Away}";
                                break;
                        }
                    }

                    if (bet?.BetRate != null)
                    {
                        ltrlBetRate.Text = Convert.ToSingle(bet.BetRate).ToString("f2");
                        ltrlBonusCalc.Text = "+" +
                                             ((Convert.ToSingle(bet.BetRate) - 1) * Convert.ToSingle(bet.BetAmount))
                                                 .ToString("N2");
                    }
                    else
                    {
                        ltrlBetRate.Text = "/";
                        ltrlBonusCalc.Text = "RP+1";
                    }
                }
            }
        }