public void CalculateSumAndMaxTest() { IUDICO.Common.Models.User usr = new IUDICO.Common.Models.User() { Username = "******" }; IUDICO.Common.Models.Theme thm = new IUDICO.Common.Models.Theme() { Name = "Theme One" }; IUDICO.Common.Models.Shared.Statistics.AttemptResult AR = new IUDICO.Common.Models.Shared.Statistics.AttemptResult(1, usr, thm, IUDICO.Common.Models.Shared.Statistics.CompletionStatus.Completed, IUDICO.Common.Models.Shared.Statistics.AttemptStatus.Completed, IUDICO.Common.Models.Shared.Statistics.SuccessStatus.Passed, DateTime.Now, 0.5f); ThemeResult themeRes = new ThemeResult(usr, thm); List <IUDICO.Common.Models.Shared.Statistics.AttemptResult> ARL = new List <IUDICO.Common.Models.Shared.Statistics.AttemptResult>(); ARL.Add(AR); themeRes.AttemptResults = ARL; themeRes.GetThemeResultScore(); CurriculumResult target = new CurriculumResult(); target.ThemeResult.Add(themeRes); Curriculum curr = null; target.CalculateSumAndMax(usr, curr); double?SumExpected = 50.0; double?MaxExpected = 100.0; Assert.AreEqual(SumExpected, target.Sum); Assert.AreEqual(MaxExpected, target.Max); }
private ThemeResult CreateThemeResult(Theme theme, List <BattleReport> battleReports) { List <BattleReport> themeBattleReports = battleReports.Where(br => br.WinningTheme == theme.Name || br.LosingTheme == theme.Name).OrderByDescending(br => br.DatePlayed).ToList(); ThemeResult themeResult = new ThemeResult() { Name = theme.Name, NumberOfGamesPlayed = theme.NumberOfGamesPlayed, NumberOfGamesLost = theme.NumberOfGamesLost, NumberOfGamesWon = theme.NumberOfGamesWon, Winrate = theme.Winrate, NumberOfMirrorMatches = themeBattleReports.Where(br => br.WinningTheme == br.LosingTheme).Count() }; if (themeBattleReports.Count == 0) { themeResult.MostPlayedCaster = StaticDetails.NoRecords; themeResult.BestPerformingCaster = StaticDetails.NoRecords; } else { EntityResult casters = ThemeEntityResult(StaticDetails.CasterType, theme.Name, battleReports); Entity mostPlayedCaster = casters.Results.OrderByDescending(c => c.NumberOfGamesPlayed).FirstOrDefault(); themeResult.MostPlayedCaster = mostPlayedCaster.Name; themeResult.GamesWithMostPlayedCaster = mostPlayedCaster.NumberOfGamesPlayed; Entity bestPerformingCaster = casters.Results.OrderByDescending(c => c.Winrate).FirstOrDefault(); themeResult.BestPerformingCaster = bestPerformingCaster.Name; themeResult.WinrateBestPerformingCaster = bestPerformingCaster.Winrate; } return(themeResult); }
public void GetThemeResultScoreTest1() { User usr = new User() { Username = "******" }; Theme thm = new Theme() { Name = "Theme One" }; IUDICO.Common.Models.Shared.Statistics.AttemptResult AR = new IUDICO.Common.Models.Shared.Statistics.AttemptResult(1, usr, thm, IUDICO.Common.Models.Shared.Statistics.CompletionStatus.Completed, IUDICO.Common.Models.Shared.Statistics.AttemptStatus.Completed, IUDICO.Common.Models.Shared.Statistics.SuccessStatus.Passed, DateTime.Now, null); ThemeResult target = new ThemeResult(usr, thm); List <IUDICO.Common.Models.Shared.Statistics.AttemptResult> ARL = new List <IUDICO.Common.Models.Shared.Statistics.AttemptResult>(); ARL.Add(AR); target.AttemptResults = ARL; double?expected = 0.0; double?actual; actual = target.GetThemeResultScore(); Assert.AreEqual(expected, actual); }
private void button1_Click(object sender, EventArgs e) { if (treeView1.SelectedNode != null) { Program.UsingTheme = Program.ThemeTool.getThemeByName(treeView1.SelectedNode.Text); Result = ThemeResult.ChangeTheme; this.Close(); return; } MessageBox.Show("Please select a theme!", "You have not chosen a theme", MessageBoxButtons.OK); }
private void client_GetThemeCompleted(object sender, GetThemeCompletedEventArgs e) { if (e.Error == null) { ThemeResult themeResult = e.Result; if (!_themes2.ContainsKey(themeResult.Theme.Name)) { _themes2.Add(themeResult.Theme.Name, themeResult.Theme); } if (ThemeLoaded != null) { ThemeLoaded.Invoke(this, new EventArgs()); } } }
public void CalculateSpecializedResultTest() { User usr = new User() { Username = "******" }; Theme thm = new Theme() { Name = "Theme One" }; IUDICO.Common.Models.Shared.Statistics.AttemptResult AR = new IUDICO.Common.Models.Shared.Statistics.AttemptResult(1, usr, thm, IUDICO.Common.Models.Shared.Statistics.CompletionStatus.Completed, IUDICO.Common.Models.Shared.Statistics.AttemptStatus.Completed, IUDICO.Common.Models.Shared.Statistics.SuccessStatus.Passed, DateTime.Now, 0.5f); ThemeResult themeRes = new ThemeResult(usr, thm); List <AttemptResult> ARL = new List <AttemptResult>(); ARL.Add(AR); themeRes.AttemptResults = ARL; themeRes.GetThemeResultScore(); CurriculumResult currRes = new CurriculumResult(); currRes.ThemeResult.Add(themeRes); Curriculum curr = null; currRes.CalculateSumAndMax(usr, curr); SpecializedResult target = new SpecializedResult(); target.CurriculumResult.Add(currRes); target.CalculateSpecializedResult(usr); double?ExpectedSum = 50.0; double?ExpectedMax = 100.0; double?ExpectedPercent = 50.0; char ExpextedECTS = 'F'; Assert.AreEqual(ExpectedSum, target.Sum); Assert.AreEqual(ExpectedMax, target.Max); Assert.AreEqual(ExpectedPercent, target.Percent); Assert.AreEqual(ExpextedECTS, target.ECTS); }
public async Task <IActionResult> Theme(string id) { ThemeResultViewModel viewModel = new ThemeResultViewModel { Factions = await _db.Factions.OrderBy(f => f.Name).ToListAsync(), Themes = await _db.Themes.OrderBy(t => t.Name).ToListAsync() }; if (!viewModel.Themes.Any(t => t.Name == id)) { viewModel.Faction = viewModel.Factions.FirstOrDefault().Name; Faction faction = viewModel.Factions.First(f => f.Name == viewModel.Faction); viewModel.Themes = viewModel.Themes.Where(t => t.FactionId == faction.Id).ToList(); viewModel.Theme = viewModel.Themes.FirstOrDefault().Name; viewModel.StatusMessage = "Select a theme to view its results."; return(View(viewModel)); } Theme theme = viewModel.Themes.First(t => t.Name == id); Faction themesFaction = viewModel.Factions.First(f => f.Id == theme.FactionId); List <BattleReport> themeBattleReports = await _db.BattleReports.Where(br => br.ConfirmedByOpponent && (br.WinningTheme == theme.Name || br.LosingTheme == theme.Name)).OrderByDescending(br => br.DatePlayed).ToListAsync(); ThemeResult themeResult = CreateThemeResult(theme, themeBattleReports); viewModel.Faction = themesFaction.Name; viewModel.Theme = theme.Name; viewModel.Themes = viewModel.Themes.Where(t => t.FactionId == themesFaction.Id).ToList(); viewModel.StatusMessage = string.Empty; viewModel.ThemeResult = themeResult; viewModel.Casters = ThemeEntityResult(StaticDetails.CasterType, theme.Name, themeBattleReports); viewModel.GameSizes = ThemeEntityResult(StaticDetails.GameSizeType, theme.Name, themeBattleReports); viewModel.Scenarios = ThemeEntityResult(StaticDetails.ScenarioType, theme.Name, themeBattleReports); viewModel.EndConditions = ThemeEntityResult(StaticDetails.EndConditionType, theme.Name, themeBattleReports); viewModel.VersusFactions = ThemeEntityResult(StaticDetails.VersusFactionType, theme.Name, themeBattleReports); viewModel.VersusThemes = ThemeEntityResult(StaticDetails.VersusThemeType, theme.Name, themeBattleReports); viewModel.VersusCasters = ThemeEntityResult(StaticDetails.VersusCasterType, theme.Name, themeBattleReports); return(View(viewModel)); }
public ActionResult Search(String query) { if (query == "") { return(RedirectToAction("Index")); } query = query + "~"; DateTime datastart = DateTime.Now; Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("~/Data/Index"))); IndexSearcher searcher = new IndexSearcher(directory, true); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29); MultiFieldQueryParser queryParser = new MultiFieldQueryParser( Version.LUCENE_29, new String[] { "Name", "Content", "Curriculum", "User", "Group", "Theme" }, analyzer ); ScoreDoc[] scoreDocs = searcher.Search(queryParser.Parse(query), 100).scoreDocs; Hits hit = searcher.Search(queryParser.Parse(query)); int total = hit.Length(); List <ISearchResult> results = new List <ISearchResult>(); Stopwatch sw = new Stopwatch(); sw.Start(); foreach (ScoreDoc doc in scoreDocs) { ISearchResult result; Document document = searcher.Doc(doc.doc); String type = document.Get("Type").ToLower(); switch (type) { case "node": Node node = new Node(); node.Id = Convert.ToInt32(document.Get("ID")); node.Name = document.Get("Name"); node.CourseId = Convert.ToInt32(document.Get("CourseID")); node.IsFolder = Convert.ToBoolean(document.Get("isFolder")); result = new NodeResult(node, _CourseService.GetCourse(node.CourseId).Name, document.Get("Content"), _CourseService.GetCourse(node.CourseId).Updated.ToString()); break; case "course": Course course = new Course(); course.Id = Convert.ToInt32(document.Get("ID")); course.Name = document.Get("Name"); result = new CourseResult(course, _CourseService.GetCourse(course.Id).Updated.ToString(), _CourseService.GetCourse(course.Id).Owner); break; case "curriculum": Curriculum curriculum = new Curriculum(); curriculum.Id = Convert.ToInt32(document.Get("ID")); curriculum.Name = document.Get("Curriculum"); result = new CurriculumResult(curriculum, _CurriculmService.GetCurriculum(curriculum.Id).Updated.ToString()); break; case "user": User user = new User(); user.Id = Guid.Parse(document.Get("ID")); user.Name = document.Get("User"); user.RoleId = Convert.ToInt32(document.Get("RoleId")); result = new UserResult(user, _UserService.GetRole(user.RoleId).ToString()); break; case "group": Group group = new Group(); group.Id = int.Parse(document.Get("ID")); group.Name = document.Get("Group"); result = new GroupResult(group); break; case "theme": Theme theme = new Theme(); theme.Id = Convert.ToInt32(document.Get("ID")); theme.Name = document.Get("Theme"); theme.CourseRef = Convert.ToInt32(document.Get("CourseRef")); result = new ThemeResult(theme, _CourseService.GetCourse(theme.CourseRef).Name); break; default: throw new Exception("Unknown result type"); } results.Add(result); } sw.Stop(); DateTime dataend = DateTime.Now; analyzer.Close(); searcher.Close(); directory.Close(); ViewData["SearchString"] = query; ViewData["score"] = Math.Abs(dataend.Millisecond - datastart.Millisecond); //sw.ElapsedMilliseconds.ToString(); ViewData["total"] = total; return(View(results)); }
private void button2_Click(object sender, EventArgs e) { Result = ThemeResult.EditedTheme; Program.ThemeTool.registeredThemes = _localThemes; this.Close(); }
private void MakeSearch(SearchModel model) { string query = model.SearchText + "~"; DateTime datastart = DateTime.Now; Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("~/Data/Index"))); IndexSearcher searcher = new IndexSearcher(directory, true); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29); List <string> strings = new List <string>(); foreach (var checkBox in model.CheckBoxes) { if (checkBox.IsChecked) { if (checkBox.SearchType == SearchType.Courses) { //make filtration here... strings.Add("Name"); strings.Add("Content"); } if (checkBox.SearchType == SearchType.Themes) { //make filtration here... strings.Add("Theme"); } if (checkBox.SearchType == SearchType.Users) { //make filtration here... strings.Add("User"); } if (checkBox.SearchType == SearchType.Curriculums) { //make filtration here... strings.Add("Curriculum"); } //make filtration here... } } MultiFieldQueryParser queryParser = new MultiFieldQueryParser( Version.LUCENE_29, strings.ToArray(), //new String[] { "Name", "Content", "Curriculum", "User", "Group", "Theme" }, analyzer ); ScoreDoc[] scoreDocs = searcher.Search(queryParser.Parse(query), 100).scoreDocs; Hits hit = searcher.Search(queryParser.Parse(query)); int total = hit.Length(); List <Curriculum> curriculums123 = _CurriculmService.GetCurriculums(_UserService.GetCurrentUser()).ToList(); List <Course> courses123 = _CourseService.GetCourses(_UserService.GetCurrentUser()).ToList(); List <ThemeDescription> themes123 = _CurriculmService.GetThemesAvailableForUser(_UserService.GetCurrentUser()).ToList(); //List<Curriculum> themes123 = _CurriculmService.GetCurriculumsWithThemesOwnedByUser(_UserService.GetCurrentUser()).ToList(); //foreach(Curriculum curr in curriculums123){ // themes123.InsertRange(themes123.Count - 1, _CurriculmService.GetThemesByCurriculumId(curr.Id)); //} List <ISearchResult> results = new List <ISearchResult>(); Stopwatch sw = new Stopwatch(); sw.Start(); foreach (ScoreDoc doc in scoreDocs) { ISearchResult result; Document document = searcher.Doc(doc.doc); String type = document.Get("Type").ToLower(); switch (type) { case "node": Node node = new Node(); node.Id = Convert.ToInt32(document.Get("NodeID")); node.Name = document.Get("Name"); node.CourseId = Convert.ToInt32(document.Get("CourseID")); node.IsFolder = Convert.ToBoolean(document.Get("isFolder")); result = new NodeResult(node, _CourseService.GetCourse(node.CourseId).Name, document.Get("Content"), _CourseService.GetCourse(node.CourseId).Updated.ToString()); results.Add(result); break; case "course": Course course = new Course(); course.Id = Convert.ToInt32(document.Get("CourseID")); course.Name = document.Get("Name"); foreach (Course cour in courses123) { if (cour.Id == course.Id) { result = new CourseResult(course, _CourseService.GetCourse(course.Id).Updated.ToString(), _CourseService.GetCourse(course.Id).Owner); results.Add(result); break; } } break; case "curriculum": Curriculum curriculum = new Curriculum(); curriculum.Id = Convert.ToInt32(document.Get("CurriculumID")); curriculum.Name = document.Get("Curriculum"); curriculum.Owner = document.Get("Owner"); string str = _CurriculmService.GetCurriculum(curriculum.Id).Owner; foreach (Curriculum curr in curriculums123) { if (curr.Owner.Equals(curriculum.Owner)) { result = new CurriculumResult(curriculum, _CurriculmService.GetCurriculum(curriculum.Id).Updated.ToString()); results.Add(result); break; } } break; case "user": User user = new User(); user.Id = Guid.Parse(document.Get("UserID")); user.Name = document.Get("User"); //user.Roles /*user.RoleId = Convert.ToInt32(document.Get("RoleId"));*/ result = new UserResult(user); results.Add(result); break; case "group": Group group = new Group(); group.Id = int.Parse(document.Get("GroupID")); group.Name = document.Get("Group"); result = new GroupResult(group); results.Add(result); break; case "theme": Theme theme = new Theme(); theme.Id = Convert.ToInt32(document.Get("ThemeID")); theme.Name = document.Get("Theme"); if (document.Get("CourseRef") == "null") { theme.CourseRef = null; } else { theme.CourseRef = Convert.ToInt32(document.Get("CourseRef")); } foreach (ThemeDescription themdesc in themes123) { if (themdesc.Theme.Id == theme.Id) { result = new ThemeResult(theme, _CourseService.GetCourse(theme.CourseRef.Value).Name); results.Add(result); break; } } break; default: throw new Exception("Unknown result type"); } } sw.Stop(); DateTime dataend = DateTime.Now; analyzer.Close(); searcher.Close(); directory.Close(); //ViewData["SearchString"] = query; //ViewData["score"] = Math.Abs(dataend.Millisecond - datastart.Millisecond); //sw.ElapsedMilliseconds.ToString(); //ViewData["total"] = total; model.SearchResult = results; model.Total = total; model.Score = Math.Abs(dataend.Millisecond - datastart.Millisecond); }