public IActionResult ShowQuestions(ViewModelSearch viewModelSearch) { // Fill the Dropdowns with all the Data from the Db viewModelSearch.FillAllDropdowns(_context, _logger); // Set Filters for the Dropdown Lists viewModelSearch = SetAllFilters(viewModelSearch); viewModelSearch.FilterUniversitiesByFederalState(_context, _logger); // questions should be rendered viewModelSearch.SearchExecuted = true; ////Build the filter and load the Questions from the Database //List<DtQuestion> filteredQuestions = _context.Questions // .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) // .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) // .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) // .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) // .ToList(); //viewModelSearch.Questions = filteredQuestions.OrderByDescending(q => q.UpVotes).ToList(); return(View("Index", viewModelSearch)); }
public PageSearch() { this.InitializeComponent(); _viewModel = new ViewModelSearch(); DataContext = _viewModel; }
/// <summary> /// Filters the FieldsOfStudies-Dropdown /// Gets all FieldsOfStudies from the filtered Questions and Adds them to the Dropdown /// </summary> /// <param name="questions"></param> /// <param name="viewModelSearch"></param> /// <returns></returns> public void SetFilterForFieldsOfStudies(List <DtQuestion> questions, ViewModelSearch viewModelSearch) { var fieldsOfStudies = questions .Select(q => q.FieldOfStudies) .Distinct() .OrderBy(fos => fos.FieldOfStudiesName) .ToList(); // if no filter was set or no element was returned all Elements stay in the List if (fieldsOfStudies.Count == 0) { try { fieldsOfStudies = _context.FieldsOfStudies.OrderBy(f => f.FieldOfStudiesName).ToList(); } catch (Exception ex) { _logger.LogError(ex, "Error while loading filtered Questions from the Database"); } } viewModelSearch.FieldsOfStudies.Clear(); foreach (var item in fieldsOfStudies) { viewModelSearch.FieldsOfStudies.Add( new SelectListItem { Value = item.FieldOfStudiesID.ToString(), Text = item.FieldOfStudiesName }); } }
/// <summary> /// Filters the FieldsOfStudies-Dropdown /// Gets all Subjects from the filtered Questions and Adds them to the Dropdown /// </summary> /// <param name="questions"></param> /// <param name="viewModelSearch"></param> /// <returns></returns> public void SetFilterForSubjects(List <DtQuestion> questions, ViewModelSearch viewModelSearch) { var subjects = questions .Select(q => q.Subject) .Distinct() .OrderBy(s => s.SubjectName) .ToList(); // if no filter was set or no element was returned all Elements stay in the List if (subjects.Count == 0) { try { subjects = _context.Subjects.OrderBy(s => s.SubjectName).ToList(); } catch (Exception ex) { _logger.LogError(ex, "Error while loading filtered Questions from the Database"); } } viewModelSearch.Subjects.Clear(); foreach (var item in subjects) { viewModelSearch.Subjects.Add( new SelectListItem { Value = item.SubjectID.ToString(), Text = item.SubjectName }); } }
public IActionResult Index() { ViewModelSearch viewModelSearch = new ViewModelSearch(); // Fill the Dropdowns with all the Data from the Db viewModelSearch.FillAllDropdowns(_context, _logger); return(View(viewModelSearch)); }
public void OrderQuestionsByUpvotesTest() { HomeController homeController = new HomeController(_context, null); ViewModelSearch viewModelSearch = new ViewModelSearch(); homeController.ShowQuestions(viewModelSearch); Assert.AreEqual(5, viewModelSearch.Questions.First().UpVotes); Assert.AreEqual(4, viewModelSearch.Questions[1].UpVotes); Assert.AreEqual(2, viewModelSearch.Questions[2].UpVotes); }
/// <summary> /// Gets all Questions from the Database for the applied Filter hands them to the 3 Filter Functions /// </summary> /// <param name="viewModelSearch"></param> /// <returns></returns> public ViewModelSearch SetAllFilters(ViewModelSearch viewModelSearch) { List <DtQuestion> questions = null; try { // Get all Questions for the applied Filter questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); if (questions.Count == 0) { if (viewModelSearch.SubjectId.HasValue) { viewModelSearch.SubjectId = null; } else if (viewModelSearch.FieldOfStudiesId.HasValue) { viewModelSearch.FieldOfStudiesId = null; viewModelSearch.SubjectId = null; } questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); } } catch (Exception ex) { _logger.LogError(ex, "Error while loading filtered Questions from the Database"); } //if no filter is set, the Dropdowns don´t have to be filtered if (viewModelSearch.UniversityId.HasValue) { SetFilterForFieldsOfStudies(questions, viewModelSearch); SetFilterForSubjects(questions, viewModelSearch); } if (viewModelSearch.FieldOfStudiesId.HasValue) { SetFilterForSubjects(questions, viewModelSearch); } viewModelSearch.Questions = questions; return(viewModelSearch); }
public void FillAllDropdownsTest() { HomeController homeController = new HomeController(_context, null); ViewModelSearch viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); Assert.AreEqual(9, viewModelSearch.Universities.Count); Assert.AreEqual(8, viewModelSearch.FieldsOfStudies.Count); Assert.AreEqual(7, viewModelSearch.Subjects.Count); Assert.AreEqual(16, viewModelSearch.FederalStates.Count); }
public IActionResult Index(ViewModelSearch viewModelSearch) { // Fill the Dropdowns with all the Data from the Db viewModelSearch.FillAllDropdowns(_context, _logger); // Set Filters for the Dropdown Lists SetAllFilters(viewModelSearch); // questions should NOT be rendered viewModelSearch.SearchExecuted = false; viewModelSearch.FilterUniversitiesByFederalState(_context, _logger); return(View(viewModelSearch)); }
public void SetFilterForUniversitiesTest() { HomeController homeController = new HomeController(_context, null); ViewModelSearch viewModelSearch = new ViewModelSearch(); // First Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.FieldOfStudiesId = 1; viewModelSearch.SubjectId = 1; List <DtQuestion> questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForUniversities(questions, viewModelSearch); Assert.AreEqual(3, viewModelSearch.Universities.Count); Assert.AreEqual("BA Dresden", viewModelSearch.Universities.First().Text); Assert.AreEqual("BA Leipzig", viewModelSearch.Universities.Last().Text); // Second Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.FieldOfStudiesId = 1; viewModelSearch.SubjectId = 2; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForUniversities(questions, viewModelSearch); Assert.AreEqual(9, viewModelSearch.Universities.Count); Assert.AreEqual("BA Dresden", viewModelSearch.Universities.First().Text); Assert.AreEqual("Universität Würzburg", viewModelSearch.Universities.Last().Text); }
protected override void OnCreate(Bundle savedInstanceState) { ViewModelState.Initialise(new NavigationService(this), new DeviceIntegration(this)); base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Search); var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar); SetSupportActionBar(toolbar); SupportActionBar.Title = "Search"; ViewModelSearch viewModel = new ViewModelSearch(); EditText searchTerm = FindViewById <EditText>(Resource.Id.searchTerm); new ConnectorEditText(searchTerm, viewModel.SearchTerm); _connectorListView = new ConnectorListView <ListItemMovie>(this, FindViewById <ListView>(Resource.Id.searchResults), viewModel, nameof(ViewModelSearch.SearchResults), nameof(ViewModelSearch.TappedSearchResult), (item) => Resource.Layout.TemplateListItemMovie, (context, movie, view, parent) => { if (view == null) { LayoutInflater layoutInflator = context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater; view = layoutInflator.Inflate(Resource.Layout.TemplateListItemMovie, parent, false); } view.FindViewById <TextView>(Resource.Id.listItemMovieTitle).Text = movie.Title; view.FindViewById <TextView>(Resource.Id.listItemMovieYearAndGenre).Text = movie.YearAndGenre; return(view); }); searchTerm.EditorAction += (sender, args) => { viewModel.CommandSearch.Execute(null); }; }
public ViewControllerSearch(IntPtr handle) : base(handle) { _viewModel = new ViewModelSearch(); }
public void SetFilterForSubjectsTest() { HomeController homeController = new HomeController(_context, null); ViewModelSearch viewModelSearch = new ViewModelSearch(); // First Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 1; viewModelSearch.FieldOfStudiesId = 1; List <DtQuestion> questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForSubjects(questions, viewModelSearch); Assert.AreEqual(1, viewModelSearch.Subjects.Count); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.First().Text); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.Last().Text); // Second Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 1; viewModelSearch.FieldOfStudiesId = null; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForSubjects(questions, viewModelSearch); Assert.AreEqual(1, viewModelSearch.Subjects.Count); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.First().Text); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.Last().Text); // Third Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 2; viewModelSearch.FieldOfStudiesId = null; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForSubjects(questions, viewModelSearch); Assert.AreEqual(2, viewModelSearch.Subjects.Count); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.First().Text); Assert.AreEqual("Berechenbarkeit und Komplexität", viewModelSearch.Subjects.Last().Text); // Fourth Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 1; viewModelSearch.FieldOfStudiesId = 5; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForSubjects(questions, viewModelSearch); Assert.AreEqual(7, viewModelSearch.Subjects.Count); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.First().Text); Assert.AreEqual("Stochastik", viewModelSearch.Subjects.Last().Text); // Fifth Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 1; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForSubjects(questions, viewModelSearch); Assert.AreEqual(1, viewModelSearch.Subjects.Count); Assert.AreEqual("Automaten und formale Sprachen", viewModelSearch.Subjects.First().Text); }
public void SetFilterForFieldsOfStudiesTest() { HomeController homeController = new HomeController(_context, null); ViewModelSearch viewModelSearch = new ViewModelSearch(); // First Test viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 1; viewModelSearch.SubjectId = 1; List <DtQuestion> questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForFieldsOfStudies(questions, viewModelSearch); Assert.AreEqual(1, viewModelSearch.FieldsOfStudies.Count); Assert.AreEqual("Informatik", viewModelSearch.FieldsOfStudies.First().Text); Assert.AreEqual("Informatik", viewModelSearch.FieldsOfStudies.Last().Text); // Second Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 2; viewModelSearch.SubjectId = null; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForFieldsOfStudies(questions, viewModelSearch); Assert.AreEqual(2, viewModelSearch.FieldsOfStudies.Count); Assert.AreEqual("Bauingenieurwesen", viewModelSearch.FieldsOfStudies.First().Text); Assert.AreEqual("Informatik", viewModelSearch.FieldsOfStudies.Last().Text); // Third Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = null; viewModelSearch.SubjectId = 2; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForFieldsOfStudies(questions, viewModelSearch); Assert.AreEqual(1, viewModelSearch.FieldsOfStudies.Count); Assert.AreEqual("Bauingenieurwesen", viewModelSearch.FieldsOfStudies.First().Text); Assert.AreEqual("Bauingenieurwesen", viewModelSearch.FieldsOfStudies.Last().Text); // Fourth Test viewModelSearch = new ViewModelSearch(); viewModelSearch.FillAllDropdowns(_context, null); viewModelSearch.UniversityId = 5; viewModelSearch.SubjectId = 1; questions = _context.Questions .Where(q => (viewModelSearch.FieldOfStudiesId != null ? q.FieldOfStudiesID == viewModelSearch.FieldOfStudiesId : q.FieldOfStudiesID != 0)) .Where(q => (viewModelSearch.SubjectId != null ? q.SubjectID == viewModelSearch.SubjectId : q.SubjectID != 0)) .Where(q => (viewModelSearch.UniversityId != null ? q.UniversityID == viewModelSearch.UniversityId : q.UniversityID != 0)) .Where(q => (viewModelSearch.FederalStateId != null ? q.University.FederalStateID == viewModelSearch.FederalStateId : q.University.FederalStateID != 0)) .ToList(); homeController.SetFilterForFieldsOfStudies(questions, viewModelSearch); Assert.AreEqual(8, viewModelSearch.FieldsOfStudies.Count); Assert.AreEqual("Bauingenieurwesen", viewModelSearch.FieldsOfStudies.First().Text); Assert.AreEqual("Philosophie", viewModelSearch.FieldsOfStudies.Last().Text); }
private void FillTabControl() { LoggedInWindowTabItem tabStart = new LoggedInWindowTabItem() { Name = "start", Content = new UserControlStart() }; LoggedInWindowTabItem tabSession = new LoggedInWindowTabItem() { Name = "session", Content = new UserControlSession() }; LoggedInWindowTabItem tabSearch = new LoggedInWindowTabItem() { Name = "search", Content = new UserControlSearch() }; LoggedInWindowTabItem tabPlaylist = new LoggedInWindowTabItem() { Name = "playlist", Content = new UserControlPlaylist() }; LoggedInWindowTabItem tabLibrary = new LoggedInWindowTabItem() { Name = "library", Content = new UserControlPlaylist() }; LoggedInWindowTabItem tabUser = new LoggedInWindowTabItem() { Name = "user", Content = new UserControlPlaylist() }; LoggedInWindowTabItem tabFeatured = new LoggedInWindowTabItem() { Name = "featured", Content = new UserControlPlaylist() }; TabItems = new ObservableCollection <LoggedInWindowTabItem>() { tabStart, tabSession, tabSearch, tabPlaylist, tabLibrary, tabUser, tabFeatured }; //Tabitems have to be created for viemodel start tabStart.ViewModel = ViewModelStart = new ViewModelStart(this); tabSession.ViewModel = ViewModelSession = new ViewModelSession(this); tabSearch.ViewModel = ViewModelSearch = new ViewModelSearch(this); tabPlaylist.ViewModel = ViewModelPlaylists = new ViewModelPlaylists(this); //temp tabLibrary.ViewModel = tabUser.ViewModel = tabFeatured.ViewModel = new ViewModelPlaylists(this); SelectedTabItem = tabStart; }
private void Control_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { viewModel = e.NewValue as ViewModelSearch; }