protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_scoreboard);
            Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);

            _categoryTextView = FindViewById <TextView>(Resource.Id.sb_category_text_view);
            _roundTextView    = FindViewById <TextView>(Resource.Id.sb_round_text_view);
            _tourTextView     = FindViewById <TextView>(Resource.Id.sb_tour_text_view);
            _polygonTextView  = FindViewById <TextView>(Resource.Id.sb_polygon_text_view);
            _errorTextView    = FindViewById <TextView>(Resource.Id.sb_error_text_view);
            var tryAgainButton = FindViewById <Button>(Resource.Id.sb_try_again_button);

            tryAgainButton.Click += TryAgainButtonOnClick;

            var toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);

            SetSupportActionBar(toolbar);

            _loadingLayout = FindViewById <LinearLayout>(Resource.Id.sb_loading);
            _errorLayout   = FindViewById <LinearLayout>(Resource.Id.sb_error_layout);

            _vm = ServiceProvider.GetService <ScoreBoardViewModel>();
            _vm.PropertyChanged += VmOnPropertyChanged;
            _vm.ErrorOccured    += VmOnErrorOccured;

            _vm.LoadData();
            SetViewModelValues();
        }
예제 #2
0
 public static ScoreBoard Map(ScoreBoardViewModel viewModel) => new ScoreBoard
 {
     UserId           = viewModel.UserId,
     UserName         = viewModel.UserName,
     CompletedQuizzes = viewModel.CompletedQuizzes,
     TotalScore       = viewModel.TotalScore
 };
예제 #3
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="ScoreBoardManager" /> class.
 ///     Precondition: none
 ///     Postcondition: A new scoreboard manager is created
 /// </summary>
 public ScoreBoardManager()
 {
     this.ScoreBoard = new ScoreBoard();
     this.FileReader = new FileReader();
     this.SaveFile   = new SaveFileWriter();
     this.viewModel  = new ScoreBoardViewModel();
 }
예제 #4
0
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            _boardViewModel      = ServiceProvider.GetService <ScoreBoardViewModel>();
            _vm                  = ServiceProvider.GetService <OmlViewModel>();
            _vm.PropertyChanged += VmOnPropertyChanged;

            if (savedInstanceState != null && savedInstanceState.ContainsKey(SelectedItem))
            {
                _selectedItem = savedInstanceState.GetInt(SelectedItem);
            }

            var editFragment =
                (OmlItemEditFragment)Activity.SupportFragmentManager.FindFragmentByTag(OmlItemEditFragment
                                                                                       .FragmentTag);

            if (editFragment != null)
            {
                editFragment.SetItemData(_vm.Teams[_selectedItem]);
                editFragment.ItemEdited += OnItemEdited;
            }

            var confirmationFragment =
                (OmlSendingConfirmationFragment)Activity.SupportFragmentManager.FindFragmentByTag(
                    OmlSendingConfirmationFragment.FragmentTag);

            if (confirmationFragment != null)
            {
                confirmationFragment.SetViewModelData(_vm.Teams[_selectedItem]);
                confirmationFragment.Confirmed += ConfirmationDialogOnConfirmed;
            }
        }
예제 #5
0
        private ScoreBoardViewModel GetCompleteScoreBoard()
        {
            var previousScores = this.repository.GetPreviousScores();
            var currentScore   = new ScoreBoardViewModel(this.repository.GetScores());

            currentScore.SetPrevious(previousScores);
            return(currentScore);
        }
예제 #6
0
        public async Task <ResponseMessage> LeaderBoard()
        {
            try
            {
                const int topN      = 10;
                var       user      = _db.Users.Find(User.Identity.GetUserId());
                var       userOrder = await _db.Users.CountAsync(x => x.Score > user.Score);

                ScoreBoardItemViewModel userItem = null;
                if (userOrder >= topN) //user is not in topN
                {
                    userItem = new ScoreBoardItemViewModel
                    {
                        Score = user.Score,
                        Name  = user.UserName,
                        Order = userOrder
                    };
                }

                var y = await _db.Users.OrderByDescending(x => x.Score).Take(topN).ToListAsync().ConfigureAwait(false);

                var items = y.Select((x, i) =>
                                     new ScoreBoardItemViewModel {
                    Score = x.Score, Name = x.UserName, Order = i + 1
                }).ToList();
                var challenge = await _db.Challenges.OrderByDescending(x => x.Finish).FirstOrDefaultAsync();

                var result = new ScoreBoardViewModel
                {
                    Items     = items,
                    UserItem  = userItem,
                    Challenge = challenge
                };
                LogThis.BaseLog(Request, LogLevel.Info, Actions.LeaderBoardRequested,
                                new Dictionary <LogProperties, object>
                {
                    { LogProperties.AdditionalData, $"رتبه کاربر {userOrder} میباشد" },
                    { LogProperties.Id, challenge?.Id },
                    { LogProperties.IdType, challenge?.GetType() },
                    { LogProperties.Count, items.Count },
                    { LogProperties.Message, ErrorMessages.Successful }
                });
                return(Tools.ResponseMessage.OkWithResult(result));
            }
            catch (Exception e)
            {
                LogThis.BaseLog(Request, LogLevel.Error, Actions.LeaderBoardRequested,
                                new Dictionary <LogProperties, object>
                {
                    { LogProperties.Error, e }
                });
                return(Tools.ResponseMessage.InternalError);
            }
        }
예제 #7
0
        public void ScoreBoardViewModel_Should_Know_The_Players_Evolution()
        {
            var player11 = new Model.Player()
            {
                Name = "1", Score = 0
            };
            var player12 = new Model.Player()
            {
                Name = "1", Score = 50
            };

            var player21 = new Model.Player()
            {
                Name = "2", Score = 40
            };
            var player22 = new Model.Player()
            {
                Name = "2", Score = 40
            };

            var score = new Model.ScoreBoard();

            score.Players = new System.Collections.Generic.List <Model.Player>()
            {
                player12, player22
            };

            var scorePrevious = new Model.ScoreBoard()
            {
                Players = new System.Collections.Generic.List <Model.Player>()
                {
                    player11, player21
                }
            };

            var vm = new ScoreBoardViewModel(score);

            vm.SetPrevious(scorePrevious);

            var first = vm.Players.Single(p => p.Name == "1");

            Assert.AreEqual(Evolution.UP, first.Evolution);
        }
예제 #8
0
        public ActionResult GetScores()
        {
            ScoreBoardViewModel currentScore = GetCompleteScoreBoard();

            return(PartialView("ResultsView", currentScore));
        }
예제 #9
0
        public ViewResult Index()
        {
            ScoreBoardViewModel currentScore = GetCompleteScoreBoard();

            return(View(currentScore));
        }
예제 #10
0
 protected override void OnAppearing()
 {
     base.OnAppearing();
     BindingContext = new ScoreBoardViewModel();
 }
예제 #11
0
 public ScoreBoardView()
 {
     InitializeComponent();
     BindingContext = new ScoreBoardViewModel();
 }