public List <SummaryNote> GetAllSumary() { var listado = this.context.ReportNotes .Include(s => s.Student) .Include(t => t.Test) .GroupBy(x => x.Student); List <SummaryNote> summaryNotes = new List <SummaryNote>(); foreach (var item in listado) { SummaryNote summary = new SummaryNote(); summary.TestNoteViews = new List <TestNoteView>(); summary.Student = item.Key; var sty = item.GetEnumerator(); decimal final = 0; foreach (ReportNote test in item) { TestNoteView camp = new TestNoteView(); camp.Id = test.Test.Id; camp.IsAvailable = test.Test.IsAvailable; camp.Name = test.Test.Name; camp.Note = test.Note; camp.Percentage = test.Test.Percentage; final += camp.Note * (camp.Percentage / 100); summary.TestNoteViews.Add(camp); } summary.Final = final; summaryNotes.Add(summary); } return(summaryNotes); }
public async Task <SummaryNote> Get(Guid bottleId) { var allNotes = await _noteStore.GetByBottle(bottleId); var summaryNote = new SummaryNote { BottleId = bottleId }; float?SummarizeRating(IEnumerable <float?> allRatings) { float?summarizedValue = null; if (allRatings.Count() > 0) { summarizedValue = (float)(allRatings.Sum(rating => rating) / allRatings.Count()); } return(summarizedValue); } summaryNote.Rating = SummarizeRating(allNotes.Where(note => note.Rating != null).Select(note => note.Rating)); Dictionary <string, int> SummarizeTags(IEnumerable <string> allTags) { var summary = new Dictionary <string, int>(); foreach (string tags in allTags) { string[] tagArr = tags.Split(','); foreach (string tag in tagArr) { if (!summary.ContainsKey(tag)) { summary.Add(tag, 0); } summary[tag] = summary[tag] + 1; } } return(summary); } summaryNote.Tags = SummarizeTags(allNotes.Where(note => note.Tags != null).Select(note => note.Tags)); return(summaryNote); }