private void FilterStudiedWords() { if (studiedWords == null || view == null || StudiedFilter == null || InProcessFilter == null || NotStudiedFilter == null) { return; } var filteredStudiedWords = studiedWords; if (!(bool)StudiedFilter.IsChecked) { filteredStudiedWords = filteredStudiedWords .Where(w => w.Status != "Изучено") .ToList(); } if (!(bool)InProcessFilter.IsChecked) { filteredStudiedWords = filteredStudiedWords .Where(w => w.Status != "В процессе") .ToList(); } if (!(bool)NotStudiedFilter.IsChecked) { filteredStudiedWords = filteredStudiedWords .Where(w => w.Status != "Не изучено") .ToList(); } view = new ProfilePageView( view.Statistics, view.UsedSets, new ObservableCollection <StudiedWordView>(filteredStudiedWords), view.CreatedSets); DataContext = view; }
public ProfilePageView(ProfilePageView view) { Statistics = view.Statistics; UsedSets = view.UsedSets; StudiedWords = view.StudiedWords; CreatedSets = view.CreatedSets; UpdIconPath = view.UpdIconPath; }
private void UpdatePage() { var studiedSetDtos = CatLangRestClient.GetStudiedSets(); var studiedsSetsInfo = studiedSetDtos .Select(s => CatLangRestClient.GetSetById(s.SetId)) .ToList(); var studiedSets = new ObservableCollection <StudiedSetView>( studiedSetDtos .Select(s => new StudiedSetView( studiedsSetsInfo.Single(i => i.Id == s.SetId).StudyTopic, studiedsSetsInfo.Single(i => i.Id == s.SetId).AuthorName, s.IsStudied ? "Изучено" : "Не изучено", s.AttemptsCount.ToString(), s.CorrectAnswers + " из " + s.AnswersCount)) .ToList()); var studiedWordsDtos = CatLangRestClient.GetStudiedWords(); studiedWords = studiedWordsDtos .Select(w => new StudiedWordView( w.Word, w.RiskFactor + "%", w.CorrectAnswers, w.IncorrectAnswers, w.LastAppearanceDate.Date.ToShortDateString(), GetWordsStudyStatus(w.Status))) .OrderBy(w => w.Word.Original) .ToList(); var viewStudiedWords = new ObservableCollection <StudiedWordView>(studiedWords); var createdSets = CatLangRestClient.GetCreatedSets(); var createdSetsView = new ObservableCollection <CreatedSetDto>(createdSets); var averageComplexity = studiedsSetsInfo.Count == 0 ? 0 : Math.Round(studiedsSetsInfo.Sum(s => s.Complexity) / studiedsSetsInfo.Count, 2); var averageAttemptsCount = studiedSetDtos.Count == 0 ? 0 : Math.Round((double)studiedSetDtos.Sum(s => s.AttemptsCount) / studiedSetDtos.Count, 2); var statistics = new UserStatisticsView( createdSets.Count, averageComplexity, studiedWords.Count, studiedSets.Count, averageAttemptsCount); view = new ProfilePageView(statistics, studiedSets, viewStudiedWords, createdSetsView); DataContext = view; FilterStudiedWords(); }