private void Export()
        {
            ReportDocument           myReport            = new ReportDocument();
            List <Programs_Advisors> myAdvisors          = new List <Programs_Advisors>();
            Programs_AdvisorsDAL     myAdvisorsDAL       = new Programs_AdvisorsDAL();
            RecommendationDAL        myRecommendationDAL = new RecommendationDAL();

            try
            {
                MirrorCLS myMirror    = new MirrorCLS();
                MirrorDAL myMirrorDAL = new MirrorDAL();
                myMirror = myList[0];


                DataSet rptDS = new DataSet();


                rptDS = myRecommendationDAL.Prepare_RecommendationReport(myMirror);

                string reportPath = Server.MapPath("Reports/Recommended_Report3.rpt");
                myReport.Load(reportPath);
                myReport.SetDataSource(rptDS);


                TextObject txt;

                int iCount = myMirror.Mirror.Length;
                if (iCount > 60)
                {
                    iCount = 60;
                }
                for (int i = 0; i < 60; i++)
                {
                    txt       = (TextObject)myReport.ReportDefinition.ReportObjects["h" + (i + 1).ToString()];
                    txt.Text  = "";
                    txt.Color = Color.White;
                    txt.Color = Color.White;
                    txt.Border.BorderColor     = Color.White;
                    txt.Border.BackgroundColor = Color.White;
                    txt       = (TextObject)myReport.ReportDefinition.ReportObjects["g" + (i + 1).ToString()];
                    txt.Text  = "";
                    txt.Color = Color.White;
                    txt.Border.BorderColor     = Color.White;
                    txt.Border.BackgroundColor = Color.White;
                }

                for (int i = 0; i < iCount; i++)
                {
                    txt      = (TextObject)myReport.ReportDefinition.ReportObjects["h" + (i + 1).ToString()];
                    txt.Text = myMirror.Mirror[i].sCourse;
                    switch (myMirror.Mirror[i].iClass)
                    {
                    case 9:    //MEelect
                        txt.Text = myMirror.Mirror[i].sCourse + "*";
                        break;

                    case 11:    //CEelect
                        txt.Text = myMirror.Mirror[i].sCourse + "#";
                        break;
                    }
                    txt.Color = Color.Black;
                    txt.Border.BorderColor     = Color.Black;
                    txt.Border.BackgroundColor = Color.Silver;
                    txt       = (TextObject)myReport.ReportDefinition.ReportObjects["g" + (i + 1).ToString()];
                    txt.Text  = myMirror.Mirror[i].sGrade;
                    txt.Color = Color.Black;
                    txt.Border.BorderColor     = Color.Black;
                    txt.Border.BackgroundColor = Color.White;
                }

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["Major_txt"];
                txt.Text = myMirror.Major;


                //Previous Semester
                Campus = (InitializeModule.EnumCampus)Session["CurrentCampus"];
                txt    = (TextObject)myReport.ReportDefinition.ReportObjects["txtregisteredCourseInPrevSem"];
                if (iRegSem == 4)
                {
                    int iRegCoursesPrevSem = 0;
                    iRegCoursesPrevSem = LibraryMOD.GetRegCoursesPrevSem(myMirror.StudentNumber, iRegYear, iRegSem, Campus);

                    txt.Text = "Previous Semester Courses : " + iRegCoursesPrevSem.ToString();
                }
                else
                {
                    txt.Text  = "";
                    txt.Width = 0;
                }


                txt = (TextObject)myReport.ReportDefinition.ReportObjects["cgpa_txt"];
                if (myMirror.CGPA != 101)
                {
                    txt.Text = string.Format("{0:f}", myMirror.CGPA);
                }

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["esl_txt"];
                txt.Text = myMirror.Advisor;

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["eng_txt"];
                txt.Text = myMirror.ENG;

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["score_txt"];
                txt.Text = string.Format("{0:f}", myMirror.Score);

                txt = (TextObject)myReport.ReportDefinition.ReportObjects["Major_Free_Elective_txt"];
                string MElective = myMirrorDAL.GetMajorElectiveCourses(myMirror.StudentNumber, Campus);
                string FElective = myMirrorDAL.GetFreeElectiveCourses(myMirror.StudentNumber, Campus);
                txt.Text = "";
                if (MElective.Length > 0)
                {
                    txt.Text += "Major Electives: " + "[ " + MElective + " ]";
                }
                if (FElective.Length > 0)
                {
                    if (MElective.Length > 0)
                    {
                        txt.Text += " --- ";
                    }
                    txt.Text += "Free Electives [" + FElective + " ]";
                }

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["Session_txt"];
                txt.Text = myMirror.Period;

                txt = (TextObject)myReport.ReportDefinition.ReportObjects["Term_txt"];
                string sTerm = LibraryMOD.GetTermDesc(iRegYear, iRegSem);

                txt.Text = sTerm;

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["Advisor_txt"];
                txt.Text = LibraryMOD.GetAdvisorEmail(myMirror.Advisor);

                txt = (TextObject)myReport.ReportDefinition.ReportObjects["txtTitle"];

                txt.Text = myMirror.StudentNumber.Replace(".", "") + " - " + myMirror.Name;

                txt = (TextObject)myReport.ReportDefinition.ReportObjects["UserTXT"];
                string sUserName = Session["CurrentUserName"].ToString();
                txt.Text = sUserName;

                //coordinator_txt

                //advisors_txt

                string sCoordinator                   = "";
                string sAdvisors                      = "";
                string sMajor                         = "";
                List <Applications> myStudent         = new List <Applications>();
                ApplicationsDAL     myApplicationsDAL = new ApplicationsDAL();
                myStudent = myApplicationsDAL.GetList(Campus, " lngStudentNumber='" + myMirror.StudentNumber + "'", false);
                if (myStudent.Count > 0)
                {
                    sMajor = myStudent[0].strSpecialization;
                }
                myStudent.Clear();

                myAdvisors = myAdvisorsDAL.GetPrograms_Advisors(Campus, sMajor);
                for (int i = 0; i < myAdvisors.Count; i++)
                {
                    if (myAdvisors[i].byteCategory == 1)
                    {
                        sCoordinator += LibraryMOD.GetAdvisorEmail(myAdvisors[i].SAdvisor);
                    }
                    else
                    {
                        sAdvisors += LibraryMOD.GetAdvisorEmail(myAdvisors[i].SAdvisor) + ",";
                    }
                }

                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["coordinator_txt"];
                txt.Text = sCoordinator;
                txt      = (TextObject)myReport.ReportDefinition.ReportObjects["advisors_txt"];
                txt.Text = sAdvisors;

                myReport.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Page.Response, true, "ECTReport");
            }
            catch (Exception exp)
            {
                Console.WriteLine("{0} Exception caught.", exp);
            }
            finally
            {
                myAdvisors.Clear();
                myReport.Close();
                myReport.Dispose();
            }
        }
        private System.Web.UI.WebControls.Table Create_Rec_Table(MirrorCLS myMirror)
        {
            System.Web.UI.WebControls.Table MyTable = new System.Web.UI.WebControls.Table();
            try
            {
                myList.Add(myMirror);
                //First Row
                MyTable.Width       = Unit.Percentage(100);
                MyTable.BorderWidth = 1;
                MyTable.GridLines   = GridLines.Horizontal;


                TableRow  tr = new TableRow();
                TableCell td = new TableCell();


                //Fifth
                tr.CssClass   = "th";
                td.ColumnSpan = 4;
                td.Text       = "Student Mirror";
                tr.Cells.Add(td);
                MyTable.Rows.Add(tr);

                tr            = new TableRow();
                td            = new TableCell();
                td.ColumnSpan = 4;


                string sPath  = "";
                string sTable = "<table align='left' border='1' >";
                sTable += "<tr>";

                int    iMax    = 0;
                string sDegree = myMirror.SDegree;
                string sMajor  = myMirror.SMajor;
                //Get the count of general courses
                iMax = LibraryMOD.GetMajorGeneralIndex(sDegree, sMajor);

                for (int i = 0; i < iMax; i++)
                {
                    sPath   = "Images/Majors/GIF/" + myMirror.Mirror[i].sCourse + ".gif";
                    sTable += "<td><img alt='' src='" + sPath + "' /></td>";
                }
                sTable += "</tr>";
                sTable += "<tr>";

                for (int i = 0; i < iMax; i++)
                {
                    if (myMirror.Mirror[i].isRecommended)
                    {
                        sTable += "<td style='font-family: Arial, Helvetica, sans-serif; font-size: small; color: #000000; text-align: center; vertical-align: top; background-color: #F2B702'>" + myMirror.Mirror[i].sGrade + "</td>";
                    }
                    else
                    {
                        sTable += "<td style='font-family: Arial, Helvetica, sans-serif; font-size: small; color: #000000; text-align: center; vertical-align: top'>" + myMirror.Mirror[i].sGrade + "</td>";
                    }
                }
                sTable += "</tr>";
                sTable += "</table>";

                Literal Lt = new Literal();
                Lt.Text = sTable;
                td.Controls.Add(Lt);
                tr.Cells.Add(td);

                MyTable.Rows.Add(tr);

                tr            = new TableRow();
                td            = new TableCell();
                td.ColumnSpan = 4;

                int iCourses = 0;
                iCourses = myMirror.Mirror.Length;

                sPath   = "";
                sTable  = "<table align='left' border='1' >";
                sTable += "<tr>";
                for (int i = iMax; i < iCourses; i++)
                {
                    sPath   = "Images/Majors/GIF/" + myMirror.Mirror[i].sCourse + ".gif";
                    sTable += "<td><img alt='' src='" + sPath + "' /></td>";
                }
                sTable += "</tr>";
                sTable += "<tr>";
                for (int i = iMax; i < iCourses; i++)
                {
                    if (myMirror.Mirror[i].isRecommended)
                    {
                        sTable += "<td style='font-family: Arial, Helvetica, sans-serif; font-size: small; color: #000000; text-align: center; vertical-align: top; background-color: #F2B702'>" + myMirror.Mirror[i].sGrade + "</td>";
                    }
                    else
                    {
                        sTable += "<td style='font-family: Arial, Helvetica, sans-serif; font-size: small; color: #000000; text-align: center; vertical-align: top'>" + myMirror.Mirror[i].sGrade + "</td>";
                    }
                }
                sTable += "</tr>";
                sTable += "</table>";

                Lt      = new Literal();
                Lt.Text = sTable;
                td.Controls.Add(Lt);
                tr.Cells.Add(td);

                MyTable.Rows.Add(tr);

                //Majoe Electives & Free Electives
                MirrorDAL myMirrorDAL = new MirrorDAL();

                tr            = new TableRow();
                td            = new TableCell();
                td.ColumnSpan = 4;

                string MElective = myMirrorDAL.GetMajorElectiveCourses(myMirror.StudentNumber, Campus);
                string FElective = myMirrorDAL.GetFreeElectiveCourses(myMirror.StudentNumber, Campus);
                if (MElective.Length > 0 || FElective.Length > 0)
                {
                    tr            = new TableRow();
                    td            = new TableCell();
                    td.ColumnSpan = 4;
                }
                td.Text = "";
                if (MElective.Length > 0)
                {
                    td.Text += "Major Electives: " + "[ " + MElective + " ]";
                }

                if (FElective.Length > 0)
                {
                    if (MElective.Length > 0)
                    {
                        td.Text += " --- ";
                    }
                    td.Text += "Free Electives [" + FElective + " ]";
                }
                if (MElective.Length > 0 || FElective.Length > 0)
                {
                    tr.Cells.Add(td);
                    MyTable.Rows.Add(tr);
                }

                //Recommended
                tr = new TableRow();
                td = new TableCell();

                tr.CssClass   = "th";
                td.ColumnSpan = 4;
                td.Text       = "Recommended Courses";

                tr.Cells.Add(td);
                MyTable.Rows.Add(tr);

                int iCompletedHours = LibraryMOD.GetCompletedHours(sNo, Campus);

                //Tr=new TableRow();
                for (int i = 0; i < myMirror.Recommended.Count; i++)
                {
                    if ((iCompletedHours < 99 && myMirror.Recommended[i].sCourse.Contains("415") && myMirror.Recommended[i].sCourse != "RTV415") || (iCompletedHours < 99 && myMirror.Recommended[i].sCourse.Contains("419")))
                    {
                        //dont add Internship & graduation project in completed hours less than 99 credit hours
                    }
                    else
                    {
                        tr = new TableRow();
                        if (myMirror.Recommended[i].isOver)
                        {
                            tr.CssClass = "R_Critical";
                        }
                        else
                        {
                            if (i % 2 == 0)
                            {
                                tr.CssClass = "R_NormalWhite";
                            }
                            else
                            {
                                tr.CssClass = "R_NormalGray";
                            }
                        }
                        td                 = new TableCell();
                        td.Text            = (i + 1).ToString();
                        td.HorizontalAlign = HorizontalAlign.Center;
                        tr.Cells.Add(td);

                        td                 = new TableCell();
                        td.Text            = myMirror.Recommended[i].sCourse;
                        td.HorizontalAlign = HorizontalAlign.Center;
                        tr.Cells.Add(td);

                        td                 = new TableCell();
                        td.ColumnSpan      = 2;
                        td.Text            = myMirror.Recommended[i].sDesc;
                        td.HorizontalAlign = HorizontalAlign.Left;
                        tr.Cells.Add(td);

                        MyTable.Rows.Add(tr);
                    }
                }
            }
            catch (Exception ex)
            {
                LibraryMOD.ShowErrorMessage(ex);
            }
            finally
            {
            }
            return(MyTable);
        }
Beispiel #3
0
    public List <MirrorCLS> GetAdvising(string sNo, bool isIncluded, int Year, int Semester, bool isRegisteredPassed, bool isHidden, out Plans Plan, InitializeModule.EnumCampus Campus, string sCSemester1)
    {
        List <MirrorCLS> myMirror    = new List <MirrorCLS>();
        MirrorDAL        myMirrorDAL = new MirrorDAL();

        //Plans Plan;
        Plan = new Plans();
        try
        {
            string sCollege   = "";
            string sDegree    = "";
            string sMajor     = "";
            string sCondition = "";

            Connection_StringCLS myConnection_String = new Connection_StringCLS(Campus);
            SqlConnection        Conn = new SqlConnection(myConnection_String.Conn_string);

            List <Applications> myStudent         = new List <Applications>();
            ApplicationsDAL     myApplicationsDAL = new ApplicationsDAL();
            myStudent = myApplicationsDAL.GetList(Campus, " lngStudentNumber='" + sNo + "'", false);
            if (myStudent.Count > 0)
            {
                sCollege = myStudent[0].strCollege;
                sDegree  = myStudent[0].strDegree;
                sMajor   = myStudent[0].strSpecialization;
            }
            myMirror = myMirrorDAL.GetMirrorForAdvising(sCollege, sDegree, sMajor, 0, sNo, 0, out Plan, Campus, true);

            #region "Fill Elective Grades Courses"
            for (int i = 0; i < myMirror.Count; i++)
            {
                ArrayList GradeElect = new ArrayList();

                string SqlElect = "SELECT lngSerial,sStudentNumber,sCourse,sGrade,bPassIt,byteOrder ";
                SqlElect += " FROM Web_Max_Ellective ";
                SqlElect += " WHERE strCollege='" + sCollege + "' AND strDegree='" + sDegree + "' AND strSpecialization='" + sMajor + "' AND sStudentNumber='" + myMirror[i].StudentNumber + "'";
                SqlElect += " AND (intCourseClass =2 or intCourseClass=9)";
                SqlElect += " Union ";
                SqlElect += " SELECT lngSerial,sStudentNumber,sCourse,sGrade,bPassIt,byteOrder";
                SqlElect += " FROM Web_Ellective_No_Grades ";
                SqlElect += " WHERE strCollege='" + sCollege + "' AND strDegree='" + sDegree + "' AND strSpecialization='" + sMajor + "' AND sStudentNumber='" + myMirror[i].StudentNumber + "'";
                SqlElect += " AND (intCourseClass =2 or intCourseClass=9)";
                SqlElect += " ORDER BY lngSerial, byteOrder";


                SqlCommand Cmd = new SqlCommand(SqlElect, Conn);
                Conn.Open();
                SqlDataReader RdElect = Cmd.ExecuteReader();

                while (RdElect.Read())
                {
                    GradeElect.Add(RdElect["sGrade"].ToString());
                }
                RdElect.Close();
                Conn.Close();
                if (GradeElect.Count > 0)
                {
                    for (int j = 0; j < myMirror[i].Mirror.Length; j++)
                    {
                        if (myMirror[i].Mirror[j].sCourse == "ELECT1" || myMirror[i].Mirror[j].sCourse == "MELECT1")
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[0].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "ELECT2" || myMirror[i].Mirror[j].sCourse == "MELECT2") && GradeElect.Count > 1)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[1].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "MELECT3") && GradeElect.Count > 2)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[2].ToString();
                        }
                    }
                }
            }
            #endregion

            #region "Fill Core Elective Grades Courses"
            for (int i = 0; i < myMirror.Count; i++)
            {
                ArrayList GradeElect = new ArrayList();

                string SqlElect = "SELECT lngSerial,sStudentNumber,sCourse,sGrade,bPassIt,byteOrder ";
                SqlElect += " FROM Web_Max_Ellective ";
                SqlElect += " WHERE strCollege='" + sCollege + "' AND strDegree='" + sDegree + "' AND strSpecialization='" + sMajor + "' AND sStudentNumber='" + myMirror[i].StudentNumber + "'";
                SqlElect += " AND intCourseClass =11";
                SqlElect += " Union ";
                SqlElect += " SELECT lngSerial,sStudentNumber,sCourse,sGrade,bPassIt,byteOrder";
                SqlElect += " FROM Web_Ellective_No_Grades ";
                SqlElect += " WHERE strCollege='" + sCollege + "' AND strDegree='" + sDegree + "' AND strSpecialization='" + sMajor + "' AND sStudentNumber='" + myMirror[i].StudentNumber + "'";
                SqlElect += " AND intCourseClass =11";
                SqlElect += " ORDER BY lngSerial, byteOrder";


                SqlCommand Cmd = new SqlCommand(SqlElect, Conn);
                Conn.Open();
                SqlDataReader RdElect = Cmd.ExecuteReader();

                while (RdElect.Read())
                {
                    GradeElect.Add(RdElect["sGrade"].ToString());
                }
                RdElect.Close();
                Conn.Close();
                if (GradeElect.Count > 0)
                {
                    for (int j = 0; j < myMirror[i].Mirror.Length; j++)
                    {
                        if (myMirror[i].Mirror[j].sCourse == "CELECT1")
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[0].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "CELECT2") && GradeElect.Count > 1)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[1].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "CELECT3") && GradeElect.Count > 2)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[2].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "CELECT4") && GradeElect.Count > 3)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[3].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "CELECT5") && GradeElect.Count > 4)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[4].ToString();
                        }
                        if ((myMirror[i].Mirror[j].sCourse == "CELECT6") && GradeElect.Count > 5)
                        {
                            myMirror[i].Mirror[j].sGrade = GradeElect[5].ToString();
                        }
                    }
                }
            }
            #endregion
            decimal CGPA        = myMirror[0].CGPA;
            bool    isAccWanted = myMirror[0].IsAccWanted;
            //bool isHidden = false;

            myMirror[0].Major   = Plan.SDisplay;
            myMirror[0].SDegree = sDegree;
            myMirror[0].SMajor  = sMajor;
            //Include Recommended Courses
            int  iPreFounded = 0;
            int  iPre        = 0;
            int  iPreIndex   = 0;
            int  iHours      = 0;
            int  iCredit     = 0;
            bool isPassed    = false;
            int  iSemMax     = 0;


            isPassed = LibraryMOD.isENGPassed((float)myMirror[0].Score, myMirror[0].ENG, sDegree, sMajor);
            iSemMax  = LibraryMOD.GetMaxHours(Semester, myMirror[0].IsENGRequired, isPassed, myMirror[0].MaxESL, (float)myMirror[0].CGPA, sDegree, sMajor);

            ////MCPR Arabic with TOEFL
            //if (sDegree == "1" && sMajor == "24")
            //{
            //    iSemMax = LibraryMOD.GetMaxHours(Semester, myMirror[0].IsENGRequired, isPassed, myMirror[0].MaxESL, (float)myMirror[0].CGPA,sDegree,sMajor);
            //}
            ////MCPR Arabic without TOEFL
            //else if ((sDegree == "1" && sMajor == "25") || (sDegree == "3" && sMajor == "21"))
            //{
            //    isPassed = false;
            //    //iSemMax = 12;
            //    iSemMax = LibraryMOD.GetMaxHours(Semester, myMirror[0].IsENGRequired, isPassed, myMirror[0].MaxESL, (float)myMirror[0].CGPA, sDegree, sMajor);
            //}
            ////Other Majors
            //else
            //{
            //}

            myMirror[0].Recommended = new List <Advised.Courses>();
            if (isIncluded)
            {
                bool            isToeflPassed   = LibraryMOD.isENGPassed(float.Parse(myMirror[0].Score.ToString()), myMirror[0].ENG, myMirror[0].SDegree, myMirror[0].SMajor);
                bool            isToeflRequired = myMirror[0].IsENGRequired;
                Advised.Courses Rec;
                int             iShift     = myMirror[0].IPeriod;
                bool            isExempted = false;
                isExempted = ((myMirror[0].SDegree == "1" && myMirror[0].SMajor == "24") || (myMirror[0].SDegree == "3" && myMirror[0].SMajor == "4") || (myMirror[0].SDegree == "3" && myMirror[0].SMajor == "5") || (myMirror[0].SDegree == "3" && myMirror[0].SMajor == "6") || (myMirror[0].SDegree == "2" && myMirror[0].SMajor == "2"));
                //Add ESLs--This is what Available execludes the foundation students
                if (isToeflRequired && !isToeflPassed && isExempted == false)
                {
                    Rec         = new Advised.Courses();
                    Rec.iOrder  = 0;
                    Rec.isOver  = false;
                    Rec.isLow   = false;
                    Rec.sCourse = "ESL_Gen";
                    Rec.sDesc   = "English as a second language - General";
                    Rec.iShift  = iShift;
                    myMirror[0].Recommended.Add(Rec);
                }
                bool isRecommended = false;
                bool isRegistered  = false;
                isPassed = false;
                bool isLow               = false;
                int  iOrder              = 0;
                bool isAvailable         = false;
                bool isEmpty             = false;
                bool isOver              = false;
                bool isWEW               = false;
                int  iAlternativeCourses = 6;
                if (Semester >= 3)
                {
                    iAlternativeCourses = 6;
                }

                for (int i = 0; i < Plan.Courses.Count; i++)
                {
                    isRecommended = false;
                    isRegistered  = false;
                    isPassed      = false;
                    isLow         = false;
                    isEmpty       = false;
                    isWEW         = false;

                    //is Registered Courses Considered as Passed Courses
                    //|| myMirror[0].Mirror[i].sGrade == "@S1" || myMirror[0].Mirror[i].sGrade == "@S2"

                    //Current Semester Reg Cosidered as Passed
                    string sCSemester = sCSemester1;
                    //if reg year semester > current semester
                    switch (Semester)
                    {
                    case 1:
                        sCSemester = "@S2";
                        break;

                    case 2:
                        sCSemester = "@F";
                        break;

                    case 3:
                        sCSemester = "@W";
                        break;

                    case 4:
                        sCSemester = "@S1";
                        break;
                    }

                    isRegistered = (myMirror[0].Mirror[i].sGrade.Contains(sCSemester) == true);
                    bool isShown = (myMirror[0].Mirror[i].sGrade.Contains("@") == true);
                    if (isRegisteredPassed)
                    {
                        isPassed = (myMirror[0].Mirror[i].isPassed || isRegistered);
                    }
                    else
                    {
                        isPassed = (myMirror[0].Mirror[i].isPassed);
                    }
                    //Must Repeate 6 Credit of F & D at least
                    isLow = ((myMirror[0].Mirror[i].sGrade == "D" || myMirror[0].Mirror[i].sGrade == "F") && CGPA < 2);
                    string sCourse = myMirror[0].Mirror[i].sCourse;
                    isRecommended = ((!isPassed) || (isLow));
                    isEmpty       = (myMirror[0].Mirror[i].sGrade == ".");
                    //Hide mark if there is fainancial problem
                    //if it is EW OR W then should be shown
                    isWEW = (myMirror[0].Mirror[i].sGrade == "W" || myMirror[0].Mirror[i].sGrade == "EW");
                    if (isAccWanted || isHidden)
                    {
                        //if (!isRegistered && !isRecommended && ! isEmpty)
                        if (!isShown && !isEmpty && !isWEW)
                        {
                            myMirror[0].Mirror[i].sGrade = "*";
                        }
                    }

                    //Must Tracked Every Year

                    isAvailable = LibraryMOD.isCourseAvailable(Year, Semester, myMirror[0].Mirror[i].sCourse, Campus);
                    //isAvailable = true;

                    iCredit = myMirror[0].Mirror[i].iCredit;
                    isOver  = (iHours + iCredit > iSemMax);
                    //Execlude ESL FROM Recomended && myMirror[0].Mirror[i].sCourse.Substring(0,3)!="ESL"

                    if (isRecommended && isAvailable && (iHours + iCredit <= (iSemMax + iAlternativeCourses)))//add 3 course as alternative
                    {
                        //Not Registered

                        iPreFounded = 0;
                        iPre        = Plan.Courses[i].iPre.Count;

                        for (int j = 0; j < iPre; j++)
                        {
                            iPreIndex = Plan.Courses[i].iPre[j] - 1;
                            if (isRegisteredPassed)
                            {
                                if ((myMirror[0].Mirror[iPreIndex].isPassed == true) || (myMirror[0].Mirror[iPreIndex].sGrade.Contains(sCSemester) == true))
                                {
                                    iPreFounded++;
                                }
                            }
                            else
                            {
                                if (myMirror[0].Mirror[iPreIndex].isPassed == true)
                                {
                                    iPreFounded++;
                                }
                            }
                        }

                        if (iPreFounded == iPre)
                        {
                            //if (iHours + myMirror[0].Mirror[i].iCredit <= iSemMax)
                            //{
                            iOrder++;
                            myMirror[0].Mirror[i].isRecommended = true;
                            iHours     += iCredit;
                            Rec         = new Advised.Courses();
                            Rec.iOrder  = iOrder;
                            Rec.isOver  = isOver;
                            Rec.isLow   = isLow;
                            Rec.sCourse = myMirror[0].Mirror[i].sCourse;

                            Rec.sDesc  = Plan.Courses[i].sDesc;
                            Rec.iShift = iShift;
                            myMirror[0].Recommended.Add(Rec);

                            //removed by bahaa 30-01-2020 dont force to recommend corequisiste
                            //if (Plan.Courses[i].sParallel != "-" )
                            //{
                            //    iOrder++;
                            //    Rec = new Advised.Courses();
                            //    Rec.iOrder = iOrder;
                            //    Rec.sCourse = Plan.Courses[i].sParallel;
                            //    Rec.sDesc = Plan.Courses[i + 1].sDesc;
                            //    Rec.iShift = iShift;
                            //    Rec.isOver = isOver;
                            //    Rec.isLow = isLow;
                            //    myMirror[0].Recommended.Add(Rec);

                            //}

                            //}
                        }
                        //if (iHours == iSemMax)
                        //{
                        //    return myMirror;
                        //}
                    }
                }
            }
        }
        catch (Exception ex)
        {
            LibraryMOD.ShowErrorMessage(ex);
        }
        finally
        {
        }
        return(myMirror);
    }