public TeamsDataManager(TeamsContextViewModel tc, TeamsFeatureViewModel tvm, CacheFileManager fm, ContextCacheManager c) 
 {
     _teamsContext = tc;
     _teamsViewModel = tvm;
     _fileManager = fm;
     _cacheManager = c;
 }
 public async Task<bool> SaveTeamsContextAsync(TeamsContextViewModel context)
 {
     bool returnValue = true;
     var jsonString = JsonConvert.SerializeObject(context);
     returnValue = await _fileManager.CacheUpdateAsync(Config.TC_CacheFileKey, jsonString);
     return returnValue;
 }
        public TeamsFeature()
        {
            this.InitializeComponent();

            this.navigationHelper = new NavigationHelper(this);
            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;

            teamsContext = TeamsContextViewModel.Instance;
        }
        public void ReHydrateMe(TeamsContextViewModel cache)
        {
            TeamsContextViewModel gospel = TeamsContextViewModel.Instance;

            gospel.LastOpponentFilterFranchiseId = cache.LastOpponentFilterFranchiseId;
            gospel.LastSearchFranchiseId = cache.LastSearchFranchiseId;
            gospel.LastSearchOpponentId = cache.LastSearchOpponentId;
            gospel.LastDrillDownFranchiseId = cache.LastDrillDownFranchiseId;
            gospel.LastDrillDownOpponentId = cache.LastDrillDownOpponentId;
            gospel.LastDrillDownYearId = cache.LastDrillDownYearId;

            gospel.SelectedTeamId = cache.SelectedTeamId;
            gospel.SelectedOpponentId = cache.SelectedOpponentId;
            gospel.SelectedYearId = cache.SelectedYearId;
        }
        public TeamsFeature()
        {
            InitializeComponent();

            teamsContext = TeamsContextViewModel.Instance;
        }
        public async Task<bool> LoadTeamDrillDownDataAsync(TeamsContextViewModel context, string cachedJson = "")
        {
            List<TeamsDrillDownModel> items;

            if (string.IsNullOrEmpty(cachedJson))
            {
                var dataContext = new DataContext();
                var svcResult = string.Empty;

                svcResult = await dataContext.GetTeamDrillDownAsync(context.SelectedTeamId, context.SelectedOpponentId, context.SelectedYearId);
                if (svcResult == null) { return false; } //no results message
                //TeamsDrillDownDataString = svcResult;
                items = JsonConvert.DeserializeObject<List<TeamsDrillDownModel>>(svcResult);
            }
            else
            {
                items = JsonConvert.DeserializeObject<List<TeamsDrillDownModel>>(cachedJson);
            }

            var groupedItems =
                from item in items
                orderby item.GameDate descending
                select new TeamsDrillDownViewModel
                {
                    GameDate = item.GameDate,
                    Team = item.Team,
                    Opponent = item.Opponent,
                    Win = item.Win,
                    Loss = item.Loss,
                    RunsFor = item.RunsFor,
                    RunsAgainst = item.RunsAgainst
                } into list
                group list by list.GameDate into listByYear
                select new KeyedList<string, TeamsDrillDownViewModel>(listByYear);

            TeamDrillDownItems.Clear();
            foreach (var viewModelItem in groupedItems)
            {
                TeamDrillDownItems.Add(viewModelItem);
            }
            return true;
        }
        public void LoadOpponentsData(TeamsContextViewModel context, string cachedJson = "")
        {
            if (!string.IsNullOrEmpty(cachedJson) && FranchiseList.Count <= 0)
            {
                var franchises = JsonConvert.DeserializeObject<List<FranchiseModel>>(cachedJson);
                foreach (var franchise in franchises)
                {
                    FranchiseList.Add(new TeamsFranchisesViewModel()
                    {
                        LineOne = franchise.GetDisplayName(),
                        LineTwo = franchise.GetDetail(),
                        TeamId = franchise.RetroId,
                        Location = franchise.Location
                    });
                }
            }

            var groupedItems =
                from team in FranchiseList
                where team.TeamId != context.SelectedTeamId
                orderby team.Location
                select new TeamsOpponentsViewModel
                {
                    FirstLetter = team.Location.Substring(0, 1), 
                    LineOne = team.LineOne, 
                    LineTwo = team.LineTwo, 
                    TeamId = team.TeamId, 
                    Location = team.Location
                } into list
                group list by list.FirstLetter into listByYear
                select new KeyedList<string, TeamsOpponentsViewModel>(listByYear);

            OpponentsItems.Clear();
            foreach (var viewModelItem in groupedItems)
            {
                OpponentsItems.Add(viewModelItem);
            }
        }