Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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]);
     }
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        /// <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);
        }
Exemplo n.º 10
0
        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
        }