Exemplo n.º 1
0
        public Match(POCO.MatchPoco poco)
        {
            Id = poco._id;
            MatchHash = poco.match_hash;
            IsBetting = poco.betting;
            Map = poco.map;
            TeamSize = poco.team_size;

            if (poco.bets != null)
            {
                foreach (POCO.BetPoco bet in poco.bets)
                {
                    Bet item = new Bet(bet);
                    Bets.Add(item);
                }
            }
        }
 public void AcceptBet(Bet bet)
 {
     RestResponse<ApiResponse> response = null;
     _userData.PgSession.BeginAndCallback(delegate
     {
         var url = _userData.PgSession.GetWebAppFunction("/api", "/game_rooms/" + GameRoom.Id + "/bets/" + bet.Id + ".json");
         var client = new RestClient(url);
         var request = new RestRequest(Method.PUT);
         response = (RestResponse<ApiResponse>)client.Execute<ApiResponse>(request);
     }, delegate
     {
         if (!response.IsOk())
         {
             string msg = response.Data.errors == null ? response.StatusCode.ToString() : string.Concat(response.Data.errors);
             MessageDialog.Show(_window, "Failed to accept bet", msg);
         }
     });
 }
 public void Init(SessionManager manager, GameRoom.GameRoomSession session, Bet bet)
 {
     _manager = manager;
     _session = session;
     _bet = bet;
 }
        public void ViewBetting(string id, Bet bet)
        {
            ChatroomSessionBase session;
            if (_chatroomUsage.TryGetValue(id, out session))
            {
                GameRoomSession gameRoomSession = session as GameRoomSession;

                BetDetailsDialogModelView modelView = new BetDetailsDialogModelView();
                modelView.Init(this, gameRoomSession, bet);

                var dialog = new BetDetailsDialogView();
                dialog.Owner = gameRoomSession.Window;
                dialog.DataContext = modelView;

                dialog.ShowDialog();
                if (dialog.DialogResult == true)
                {
                    gameRoomSession.AcceptBet(bet);
                }
            }
        }
 public void ViewBetDetails(Bet bet)
 {
     _manager.ViewBetting(_session.ChatroomId, bet);
 }
 public void CancelGameRoomBet(Bet bet)
 {
     _session.CancelBet(bet);
 }
        public Bet ToBet()
        {
            var selectedOdds = (ComboBoxItem)comboBoxOdds.SelectedItem;
            Bet bet = new Bet
            {
                Offerer = UserDataManager.UserData.User,
                OffererWager = Wager,
                OffererOdds = selectedOdds.Content.ToString(),
            };

            if (IsOneOnOneBetting)
            {
                bet.OffererChoice = UserDataManager.UserData.User;
            }
            else if (IsTeamBetting && UserDataManager.UserData.User.HasTeam)
            {
                bet.OffererChoice = UserDataManager.UserData.User.Team;
            }

            if (_match == null)
            {
                bet.MyMatch = new Match();
                bet.MyMatch.Map = _mapName;
                bet.MyMatch.TeamSize = _teamSize;
            }
            else
            {
                bet.MyMatch = _match;
                bet.MatchHash = _match.MatchHash;
            }

            return bet;
        }
 public void CancelBet(Bet bet)
 {
     RestResponse<ApiResponse> response = null;
     _userData.PgSession.BeginAndCallback(delegate
     {
         var url = _userData.PgSession.GetWebAppFunction("/api", "/game_rooms/" + GameRoom.Id + "/bets/" + bet.Id + ".json");
         var client = new RestClient(url);
         var request = new RestRequest(Method.DELETE);
         response = (RestResponse<ApiResponse>)client.Execute<ApiResponse>(request);
     }, delegate
     {
         if (response.IsOk())
         {
             if (MyMatch.Id == bet.MyMatch.Id && bet.MyMatch.State == MatchState.created)
             {
                 _myMatch = new Match();
             }
         }
         else
         {
             string msg = response.Data.errors == null ? response.StatusCode.ToString() : string.Concat(response.Data.errors);
             MessageDialog.Show(_window, "Failed to delete bet", msg);
         }
     });
 }
 private bool TryGetBetById(BetPoco poco, out Bet bet)
 {
     bet = null;
     foreach (var item in RoomBets)
     {
         if (item.Id == poco._id)
         {
             bet = item;
             return true;
         }
     }
     return false;
 }
 public void OnBetNew(BetPoco poco)
 {
     Bet bet = new Bet(_userData, MyMatch, poco);
     RoomBets.Add(bet);
     _myMatch = new Match();
 }
        public void LoadMatch()
        {
            if (string.IsNullOrWhiteSpace(GameRoom.MatchId))
                return;

            var url = _userData.PgSession.GetWebApiV1Function("/matches/" + GameRoom.MatchId + ".json", "include_bets=true");
            RestResponse<MatchAndBetsPoco> response = null;
            _userData.PgSession.BeginAndCallback(delegate
            {
                response = SocketSession.Rest<MatchAndBetsPoco>(url, Method.GET, null);
            }, delegate
            {
                if (!response.IsOk())
                    return;

                MyMatch.Update(_userData, response.Data.match);
                foreach (var betPoco in response.Data.bets)
                {
                    Bet bet = new Bet(_userData, MyMatch, betPoco);
                    RoomBets.Add(bet);
                }
            });
        }
        public void LoadBets()
        {
            if (GameRoom.Bets.Length > 0) return;

            RestResponse<List<BetPoco>> response = null;
            _userData.PgSession.BeginAndCallback(delegate
            {
                var url = _userData.PgSession.GetWebAppFunction("/api", "/game_rooms/" + GameRoom.Id + "/bets", "include_matches=true");
                var client = new RestClient(url);
                var request = new RestRequest(Method.GET);
                response = (RestResponse<List<BetPoco>>)client.Execute<List<BetPoco>>(request);
            }, delegate
            {
                if (response.IsOk())
                {
                    if (response.Data != null)
                    {
                        var bets = response.Data;
                        foreach (BetPoco bet in bets)
                        {
                            Match match = new Match(bet.match);
                            Bet item = new Bet(_userData, match, bet);
                            RoomBets.Add(item);
                        }
                    }
                }
                else
                {
                    MessageDialog.Show(_window, "Failed to get Bets", "Sorry, failed to get bet list.\r\nDetails: " + response.ErrorMessage);
                }
            });
        }
        public void CreateBet(Bet bet)
        {
            var poco = bet.ToPoco();

            RestResponse<ApiResponse> response = null;
            _userData.PgSession.BeginAndCallback(delegate
            {
                var url = _userData.PgSession.GetWebAppFunction("/api", "/game_rooms/" + GameRoom.Id + "/bets");
                var client = new RestClient(url);
                var request = new RestRequest(Method.POST) { RequestFormat = RestSharp.DataFormat.Json };
                var root = new { bet = poco };
                request.AddBody(root);
                response = (RestResponse<ApiResponse>)client.Execute<ApiResponse>(request);
            }, delegate
            {
                if (response.IsOk())
                {
                    //if (TryGetBetById(poco, out bet))
                        //bet.SetOutcome(outcome);
                }
                else
                {
                    string msg = response.Data.errors == null ? response.StatusCode.ToString() : string.Concat(response.Data.errors);
                    MessageDialog.Show(_window, "Failed to create bet", msg);
                }
            });
        }