public void TestExerciseSummaryConstructor_Takes_1_value() { var x = new ExerciseSummary(13, null); Assert.Null(x.Time); Assert.Equal(13, x.Weight); }
public JsonResult GetSummary(DateTime date) { var dropdowns = new Dropdowns(); var allExercises = new List <Exercise>(); var tasks = new List <Task <int> >(); int correct = 0; Task dropdownTask = Task.Run(() => { dropdowns = GenerateDropDowns(); }); Task allexerciseTask = Task.Run(() => { allExercises = ExercisesByDate(date).ToList(); }); dropdownTask.Wait(); allexerciseTask.Wait(); var result = new ExerciseSummary(); Task domainTask = Task.Run(() => { List <KeyValuePair <string, int> > domains = new List <KeyValuePair <string, int> >(); if (dropdowns.Domains.Any()) { dropdowns.Domains.ToList().ForEach(domain => { domains.Add(new KeyValuePair <string, int>(domain, allExercises.Count(ae => ae.Domain.ToLower() == domain.ToLower()))); }); } result.Domains = domains; }); Task learningObjectiveTask = Task.Run(() => { List <KeyValuePair <string, int> > learningObjectives = new List <KeyValuePair <string, int> >(); if (dropdowns.LearningObjectives.Any()) { dropdowns.LearningObjectives.ToList().ForEach(learningObjective => { learningObjectives.Add(new KeyValuePair <string, int>(learningObjective, allExercises.Count(ae => ae.LearningObjective.ToLower().Replace(" ", "").Contains(learningObjective.ToLower().Replace(" ", ""))))); }); } result.LearningObjectives = learningObjectives; }); Task subjectsTask = Task.Run(() => { List <KeyValuePair <string, int> > subjects = new List <KeyValuePair <string, int> >(); if (dropdowns.Subjects.Any()) { dropdowns.Subjects.ToList().ForEach(subject => { subjects.Add(new KeyValuePair <string, int>(subject, allExercises.Count(ae => ae.Subject.ToLower() == subject.ToLower()))); }); } result.Subjects = subjects; }); Task correctTask = Task.Run(() => { correct = allExercises.AsParallel().Count(exercise => exercise.Correct > 0); }); Task submittedTimeTask = Task.Run(() => { List <KeyValuePair <string, int> > submittedTimes = new List <KeyValuePair <string, int> >(); allExercises.ForEach(exercise => { var hour = exercise.SubmitDateTime.Hour; var minute = exercise.SubmitDateTime.Minute; string minuteString = minute < 10 ? $"0{minute}" : $"{minute}"; string time = $"{hour}:{minuteString}"; if (!submittedTimes.Any(t => t.Key == time)) { submittedTimes.Add(new KeyValuePair <string, int>(time, 1)); } else { var value = submittedTimes.Where(t => t.Key == time).FirstOrDefault().Value; submittedTimes.Remove(new KeyValuePair <string, int>(time, value)); submittedTimes.Add(new KeyValuePair <string, int>(time, value + 1)); } }); result.SubmittedDateRanges = submittedTimes; }); domainTask.Wait(); learningObjectiveTask.Wait(); subjectsTask.Wait(); correctTask.Wait(); submittedTimeTask.Wait(); result.ExerciseCount = allExercises.Count(); result.CorrectCount = correct; result.StudentCount = allExercises.Select(exercise => exercise.UserId).Distinct().Count(); return(Json(result, JsonRequestBehavior.AllowGet)); }