private void ComputeAbsence(AbsenceBranch Node, string Label) { Node.Label = Label; Node.LessonCount = Node.Children.Sum(x => x.LessonCount); Node.JustifiedAbsenceCount = Node.Children.Sum(x => x.JustifiedAbsenceCount); Node.UnjustifiedAbsenceCount = Node.Children.Sum(x => x.UnjustifiedAbsenceCount); }
private AbsenceBranch GetStudentAbsenceBySubject(ClassSubject przedmiot, List <SchoolStudent> StudentAllocation, List <SchoolLesson> LessonByClass, List <StudentAbsence> AbsenceByStudent, List <SchoolSubjectGroup> lstSubjectGroup) { AbsenceBranch StudentAbsenceBySubject = new AbsenceBranch(); var lstAbsenceByStudent = AbsenceByStudent.Where(x => x.SubjectID == przedmiot.SubjectID).ToList(); var Absencja = ComputeAbsence(StudentAllocation, lstAbsenceByStudent, LessonByClass, przedmiot, lstSubjectGroup); StudentAbsenceBySubject.Level = 2; StudentAbsenceBySubject.Label = przedmiot.SubjectName; StudentAbsenceBySubject.LessonCount = Absencja.LessonCount; StudentAbsenceBySubject.JustifiedAbsenceCount = Absencja.JustifiedCount; StudentAbsenceBySubject.UnjustifiedAbsenceCount = Absencja.UnjustifiedCount; return(StudentAbsenceBySubject); }
private void PrintModelObjectData(AbsenceBranch 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.StudentAbsencePercent.ToString()); AspectToPrint.Add(Node.LessonCount.ToString()); AspectToPrint.Add(Node.StudentAbsenceCount.ToString()); AspectToPrint.Add(Node.JustifiedAbsenceCount.ToString()); AspectToPrint.Add(Node.UnjustifiedAbsenceCount.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, StringAlignment.Center, Brushes.Black, true, false, FillBackground); x += Kolumna[i].Size; } y += LineHeight; }
private List <AbsenceBranch> GetAbsenceTree() { List <AbsenceBranch> AbsenceTree = new List <AbsenceBranch>(); pbrKlasa.Maximum = lstKlasa.Count; pbrKlasa.Value = 0; lblKlasa.Text = ""; foreach (var K in lstKlasa) { //IdentUnit Klasa = new IdentUnit { ID = K.ID, Name = K.Name }; var lstSubjectByClass = lstPrzedmiot.Where(x => x.ClassID == K.ID).OrderBy(x => x.SubjectPriority).ToList(); var ClassNode = new AbsenceBranch(); ClassNode.Level = 0; ClassNode.Children = GetClassAbsence(K, lstSubjectByClass); ComputeAbsence(ClassNode, K.Name); pbrKlasa.Value++; lblKlasa.Text = pbrKlasa.Value.ToString() + "/" + pbrKlasa.Maximum; Refresh(); AbsenceTree.Add(ClassNode); //tlvStudent.Expand(ClassNode); } return(AbsenceTree); }
private List <AbsenceBranch> GetClassAbsence(IdentUnit Klasa, List <ClassSubject> lstPrzedmiot) { List <AbsenceBranch> ClassAbsence = new List <AbsenceBranch>(); List <SchoolStudent> lstFilteredStudent = new List <SchoolStudent>(); switch (cbSeek.SelectedIndex) { case 0: lstFilteredStudent = lstStudent.Where(x => x.StudentClass.ID == Klasa.ID).Where(x => x.ActivationStatus == true).ToList(); break; case 1: lstFilteredStudent = lstStudent.Where(x => x.StudentClass.ID == Klasa.ID).Where(x => x.ActivationStatus == true).Where(x => x.Student.Name.StartsWith(txtSeek.Text, StringComparison.CurrentCultureIgnoreCase)).ToList(); break; } pbrStudent.Maximum = lstFilteredStudent.Count; pbrStudent.Value = 0; lblStudent.Text = ""; foreach (var S in lstFilteredStudent) { IdentUnit Student = new IdentUnit { ID = S.Student.ID, Name = S.Student.Name }; var lstStudentByAllocation = lstStudent.Where(x => x.Student.ID == Student.ID).ToList(); var StudentNode = new AbsenceBranch(); StudentNode.Level = 1; StudentNode.Children = GetStudentAbsence(Klasa, Student, lstStudentByAllocation, lstPrzedmiot); ComputeAbsence(StudentNode, S.Student.Name); pbrStudent.Value++; lblStudent.Text = pbrStudent.Value.ToString() + "/" + pbrStudent.Maximum; Refresh(); ClassAbsence.Add(StudentNode); } return(ClassAbsence); }
private void tlvAnaliza_PrintPage(object sender, PrintPageEventArgs e) { #region -------------------------- Print variables definitions ----------------------- PH.G = e.Graphics; PrintDocument Doc = (PrintDocument)sender; float x = IsPreview ? UserSession.User.Settings.LeftMargin : UserSession.User.Settings.LeftMargin - e.PageSettings.PrintableArea.Left; float y = IsPreview ? UserSession.User.Settings.TopMargin : UserSession.User.Settings.TopMargin - e.PageSettings.PrintableArea.Top; Font TextFont = UserSession.User.Settings.TextFont; Font SubHeaderFont = UserSession.User.Settings.SubHeaderFont; Font HeaderFont = UserSession.User.Settings.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, PageNumberLocation.Footer); #endregion #region ------------------------------ Report header ----------------------------------- if (PageNumber == 1) { y += LineHeight; PH.DrawText(ReportHeader[0], HeaderFont, x, y, PrintWidth, HeaderLineHeight, StringAlignment.Center, Brushes.Black, false); y += HeaderLineHeight * 2; } #endregion #region ------------------------------- Column Settings -------------------------- List <TableCell> Kolumna = new List <TableCell>(); foreach (OLVColumn Col in tlvStudent.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 = 3; int ColOffset = 0; if (PageNumber == 1) { for (int i = 0; i < Kolumna.Count(); i++) { PH.DrawText(Kolumna[i].Label, new Font(TextFont, FontStyle.Bold), x + ColOffset, y, Kolumna[i].Size, LineHeight * MultiplyLine, StringAlignment.Center, Brushes.Black); 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, StringAlignment.Center, Brushes.Black); ColOffset += Kolumna[i].Size; } y += LineHeight * 1.5F; #endregion #region ------------------------ Table body -------------------------------- int index = 0; int Indent = 0; bool Shade = false; Font PrintFont = null; var ListItems = tlvStudent.FilteredObjects.Cast <AbsenceBranch>(); while (y + LineHeight * 2 < PrintHeight && Offset[0] < ListItems.Count()) { AbsenceBranch ListItem = ListItems.ToArray()[Offset[0]]; y += LineHeight * 0.5f; PrintFont = new Font(TextFont, FontStyle.Bold); switch (ListItem.Level) { case 0: Indent = 0; MultiplyLine = 2; Shade = true; index = 0; break; case 1: Indent = 20; MultiplyLine = 2; Shade = false; index = 0; break; case 2: Indent = 40; MultiplyLine = 1; Shade = false; PrintFont = TextFont; if (index > 0) { y -= LineHeight * 0.5f; } index++; break; } PrintModelObjectData(ListItem, x, ref y, Kolumna, PrintFont, LineHeight * MultiplyLine, Indent, Shade); Offset[0]++; } if (Offset[0] < ListItems.Count()) { PrintNextPage(Doc, e); } #endregion }