private void PrintModelObjectData(StaffBranch Node, float x, ref float y, List <TableCell> Kolumna, Font PrintFont, float LineHeight, int TabIndent = 0, bool FillBackground = false) { List <string> AspectToPrint = new List <string>(); AspectToPrint.Add(Node.Label); AspectToPrint.Add(Node.StudentCount.ToString()); AspectToPrint.Add(Node.TotalScoreCount); AspectToPrint.Add(Node.UnclassifiedCount); AspectToPrint.Add(Node.ExcelentCount); AspectToPrint.Add(Node.VeryGoodCount); AspectToPrint.Add(Node.GoodCount); AspectToPrint.Add(Node.SufficientCount); AspectToPrint.Add(Node.PassedCount); AspectToPrint.Add(Node.FailedCount); AspectToPrint.Add(Node.AvgScore.ToString()); AspectToPrint.Add(Node.MedianScore.ToString()); AspectToPrint.Add(Node.DominantScore.ToString()); PH.DrawText(Node.Label, PrintFont, x + TabIndent, y, Kolumna[0].Size - TabIndent, LineHeight, 0, Brushes.Black, true, false, FillBackground); x += Kolumna[0].Size; for (int i = 1; i < AspectToPrint.Count; i++) { PH.DrawText(AspectToPrint[i], PrintFont, x, y, Kolumna[i].Size, LineHeight, 1, Brushes.Black, true, false, FillBackground); x += Kolumna[i].Size; } y += LineHeight; }
private StaffBranch GetClassAnalysis(StaffUnit Teacher, StaffUnit Subject, StaffUnit Class, bool IsVirtual) { int StanKlasy, StanKlasyWirtualnej; if (!IsVirtual) { StanKlasy = lstLiczbaUczniow.Where(x => x.ClassID == Class.ID).Select(x => x.Count).FirstOrDefault(); StanKlasyWirtualnej = lstLiczbaUczniowNI.Where(x => x.SubjectID == Subject.ID).Where(x => x.ClassID == Class.ID).Select(x => x.Count).FirstOrDefault(); StanKlasy -= StanKlasyWirtualnej; if (lstLiczbaUczniowGrupa.Where(x => x.ClassID == Class.ID).Where(x => x.SubjectID == Subject.ID).Count() > 0) { var SubtractList = lstObsada.Where(T => T.Teacher.ID == Teacher.ID).Where(S => S.Subject.ID == Subject.ID).Where(C => C.Class.ID == Class.ID).Select(x => x.Subject.IdSzkolaPrzedmiot); StanKlasy -= lstLiczbaUczniowGrupa.Where(x => x.ClassID == Class.ID).Where(x => x.SubjectID == Subject.ID).Where(x => !SubtractList.Contains(x.SubjectIdBySchool)).Sum(x => x.Count); } } else { StanKlasy = lstLiczbaUczniowNI.Where(x => x.SubjectID == Subject.ID).Where(x => x.VirtualClassID == Class.ID).Select(x => x.Count).FirstOrDefault(); } var ClassNode = new StaffBranch(); ClassNode.Label = Class.Nazwa; ClassNode.StudentCount = StanKlasy; ClassNode.ScoreCount = ComputeScore(Teacher, Subject, Class, ClassNode.ScoreCount.Count()); SetAnalysisType += ClassNode.SetOption; return(ClassNode); }
private void ComputeScore(StaffBranch Node, string Label) { Node.Label = Label; Node.StudentCount = Node.Children.Sum(x => x.StudentCount); for (int i = 0; i < Node.ScoreCount.Count(); i++) { Node.ScoreCount[i] = Node.Children.Sum(x => x.ScoreCount[i]); } }
private List <StaffBranch> GetAnalysisTree() { List <StaffBranch> AnalysisTree = new List <StaffBranch>(); var SchoolNode = new StaffBranch(); SetAnalysisType += SchoolNode.SetOption; SchoolNode.Children = GetAnalysis(); ComputeScore(SchoolNode, Settings.Default.SchoolName); AnalysisTree.Add(SchoolNode); return(AnalysisTree); }
private List <StaffBranch> GetAnalysisTree() { List <StaffBranch> AnalysisTree = new List <StaffBranch>(); var SchoolNode = new StaffBranch(); SetAnalysisType += SchoolNode.SetOption; SchoolNode.Children = GetAnalysis(); ComputeScore(SchoolNode, AppSession.Schools.Where(x => x.ID == UserSession.User.Settings.SchoolID).FirstOrDefault().ToString()); AnalysisTree.Add(SchoolNode); return(AnalysisTree); }
private List <StaffBranch> GetAnalysisBySubject() { List <StaffBranch> AnalysisTree = new List <StaffBranch>(); foreach (var Przedmiot in lstObsada.Select(x => new { x.Subject.ID, x.Subject.Nazwa }).Distinct().ToList()) { SubjectUnit Subject = new SubjectUnit { ID = Przedmiot.ID, Nazwa = Przedmiot.Nazwa }; var SubjectNode = new StaffBranch(); SetAnalysisType += SubjectNode.SetOption; SubjectNode.Children = GetAnalysisByTeacher(Subject); ComputeScore(SubjectNode, Przedmiot.Nazwa); AnalysisTree.Add(SubjectNode); } return(AnalysisTree); }
/// <summary> /// Set of methods providing analysis by teacher /// </summary> /// <returns></returns> #region Get tree analysis by teacher /// <summary> /// Get analysis by teacher /// </summary> /// <returns>List of teacher's nodes </returns> private List <StaffBranch> GetAnalysisByTeacher() { List <StaffBranch> AnalysisTree = new List <StaffBranch>(); foreach (var Belfer in lstObsada.Select(x => new { x.Teacher.ID, x.Teacher.Nazwa }).Distinct().OrderBy(x => x.Nazwa).ToList()) { TeacherUnit Teacher = new TeacherUnit { ID = Belfer.ID, Nazwa = Belfer.Nazwa }; var TeacherNode = new StaffBranch(); SetAnalysisType += TeacherNode.SetOption; TeacherNode.Children = GetAnalysisBySubject(Teacher); ComputeScore(TeacherNode, Belfer.Nazwa); AnalysisTree.Add(TeacherNode); } return(AnalysisTree); }
/// <summary> /// Get analysis by teacher for pointed subject /// </summary> /// <param name="Subject">Subject's data consists of ID and Name</param> /// <returns>List of teacher nodes for pointed subject</returns> private List <StaffBranch> GetAnalysisByTeacher(StaffUnit Subject) { var lstTeacher = lstObsada.Where(x => x.Subject.ID == Subject.ID).Select(x => new { x.Teacher.ID, x.Teacher.Nazwa }).OrderBy(x => x.Nazwa).Distinct().ToList(); List <StaffBranch> AnalysisTree = new List <StaffBranch>(); foreach (var Belfer in lstTeacher) { StaffUnit Teacher = new StaffUnit { ID = Belfer.ID, Nazwa = Belfer.Nazwa }; var TeacherNode = new StaffBranch(); SetAnalysisType += TeacherNode.SetOption; TeacherNode.Children = GetAnalysisByClass(Teacher, Subject); ComputeScore(TeacherNode, Belfer.Nazwa); AnalysisTree.Add(TeacherNode); } return(AnalysisTree); }
/// <summary> /// Get analysis by subject for pointed teacher /// </summary> /// <param name="Teacher">Teacher's data consists of ID and Name</param> /// <returns>List of subject nodes for pointed teacher</returns> private List <StaffBranch> GetAnalysisBySubject(StaffUnit Teacher) { var lstSubject = lstObsada.Where(x => x.Teacher.ID == Teacher.ID).Select(x => new { x.Subject.ID, x.Subject.Nazwa }).Distinct().ToList(); List <StaffBranch> AnalysisTree = new List <StaffBranch>(); foreach (var Przedmiot in lstSubject) { StaffUnit Subject = new StaffUnit { ID = Przedmiot.ID, Nazwa = Przedmiot.Nazwa }; var SubjectNode = new StaffBranch(); SetAnalysisType += SubjectNode.SetOption; SubjectNode.Children = GetAnalysisByClass(Teacher, Subject); ComputeScore(SubjectNode, Przedmiot.Nazwa); AnalysisTree.Add(SubjectNode); } return(AnalysisTree); }
private void tlvAnaliza_PrintPage(object sender, PrintPageEventArgs e) { #region -------------------------- Print variables definitions ----------------------- PH.G = e.Graphics; PrintDocument Doc = (PrintDocument)sender; float x = IsPreview ? Settings.Default.LeftMargin : Settings.Default.LeftMargin - e.PageSettings.PrintableArea.Left; float y = IsPreview ? Settings.Default.TopMargin : Settings.Default.TopMargin - e.PageSettings.PrintableArea.Top; Font TextFont = Settings.Default.TextFont; Font SubHeaderFont = Settings.Default.SubHeaderFont; Font HeaderFont = Settings.Default.HeaderFont; float LineHeight = TextFont.GetHeight(e.Graphics); float SubHeaderLineHeight = SubHeaderFont.GetHeight(e.Graphics); float HeaderLineHeight = HeaderFont.GetHeight(e.Graphics); int PrintWidth = e.MarginBounds.Width; int PrintHeight = e.MarginBounds.Bottom; #endregion PageNumber += 1; #region --------------------------- Document header and footer ----------------------- PH.DrawHeader(x, y, PrintWidth); PH.DrawFooter(x, PrintHeight, PrintWidth); PH.DrawPageNumber("- " + PageNumber.ToString() + " -", x, PrintHeight, PrintWidth, CustomType.PageNumberLocation.Footer); #endregion #region ------------------------------ Report header ----------------------------------- if (PageNumber == 1) { y += LineHeight; PH.DrawText(ReportHeader[0], HeaderFont, x, y, PrintWidth, HeaderLineHeight, 1, Brushes.Black, false); y += HeaderLineHeight * 2; } #endregion #region ------------------------------- Column Settings -------------------------- List <TableCell> Kolumna = new List <TableCell>(); foreach (OLVColumn Col in tlvAnaliza.Columns) { Kolumna.Add(new TableCell { Name = Col.AspectName, Label = Col.Text, Size = Col.Width }); } int FirstColWidth = PrintWidth - Kolumna.Where(K => K.Name != "Label").Sum(K => K.Size); if (FirstColWidth > 0) { Kolumna.Where(K => K.Name == "Label").First().Size = FirstColWidth; } #endregion #region ------------------------------- Table header -------------------------------- float MultiplyLine = 5; int ColOffset = 0; if (PageNumber == 1) { for (int i = 0; i < Kolumna.Count() - 3; i++) { PH.DrawText(Kolumna[i].Label, new Font(TextFont, FontStyle.Bold), x + ColOffset, y, Kolumna[i].Size, LineHeight * MultiplyLine, 1, Brushes.Black); ColOffset += Kolumna[i].Size; } for (int i = Kolumna.Count() - 3; i < Kolumna.Count(); i++) { PH.DrawText(Kolumna[i].Label, new Font(TextFont, FontStyle.Bold), x + ColOffset, y, Kolumna[i].Size, LineHeight * MultiplyLine, 0, Brushes.Black, 270); ColOffset += Kolumna[i].Size; } y += LineHeight * MultiplyLine; } ColOffset = 0; for (int i = 0; i < Kolumna.Count(); i++) { PH.DrawText((i + 1).ToString(), new Font(TextFont, FontStyle.Bold | FontStyle.Italic), x + ColOffset, y, Kolumna[i].Size, LineHeight, 1, Brushes.Black); ColOffset += Kolumna[i].Size; } y += LineHeight * 1.5F; #endregion #region ------------------------ Table body -------------------------------- MultiplyLine = 3; StaffBranch Level0 = (StaffBranch)tlvAnaliza.GetModelObject(0); if (Offset[0] == 0 & Offset[1] == 0 & Offset[2] == 0) { PrintModelObjectData(Level0, x, ref y, Kolumna, new Font(TextFont, FontStyle.Bold), LineHeight * MultiplyLine, 0, true); y += LineHeight * 0.5F; } int Indent = 20; MultiplyLine = rbLiczbowoProcentowo.Checked ? 2 : 0; while (y + LineHeight * (4.5f + MultiplyLine) < PrintHeight && Offset[0] < Level0.Children.Count) { MultiplyLine = rbLiczbowoProcentowo.Checked ? 2 : 1; StaffBranch Level1 = Level0.Children[Offset[0]]; if (Offset[1] == 0 & Offset[2] == 0) { PrintModelObjectData(Level1, x, ref y, Kolumna, new Font(TextFont, FontStyle.Bold), LineHeight * MultiplyLine, Indent, true); y += LineHeight * 0.5F; } while (y + LineHeight * 2 * MultiplyLine < PrintHeight && Offset[1] < Level1.Children.Count) { StaffBranch Level2 = Level1.Children[Offset[1]]; if (Offset[2] == 0) { PrintModelObjectData(Level2, x, ref y, Kolumna, new Font(TextFont, FontStyle.Bold), LineHeight * MultiplyLine, Indent * 2, true); } while (y + LineHeight * MultiplyLine < PrintHeight && Offset[2] < Level2.Children.Count) { StaffBranch Level3 = Level2.Children[Offset[2]]; PrintModelObjectData(Level3, x, ref y, Kolumna, TextFont, LineHeight * MultiplyLine, Indent * 3); Offset[2] += 1; } if (Offset[2] < Level2.Children.Count) { PrintNextPage(Doc, e); return; } else { y += LineHeight * 0.5f; Offset[2] = 0; Offset[1] += 1; } } if (Offset[1] < Level1.Children.Count) { PrintNextPage(Doc, e); return; } else { Offset[1] = 0; Offset[0] += 1; } } if (Offset[0] < ((StaffBranch)tlvAnaliza.GetModelObject(0)).Children.Count) { PrintNextPage(Doc, e); } #endregion }