Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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
        }