Example #1
0
        public List <float> notebookForStudent(studentForReportDto studentForReport)
        {
            var stdID           = Convert.ToInt32(studentForReport.studentID);
            var gradeOfNotebook = new List <float>();

            var notebook = _context.Notebooks.Where(s => s.StudentID == stdID).ToList();

            foreach (var item in notebook)
            {
                if (item.NoteBookDate >= fromDateForSelect && item.NoteBookDate <= toDateForSelect)
                {
                    gradeOfNotebook.Add(item.Grade);
                }
            }

            return(gradeOfNotebook);
        }
Example #2
0
        public List <Course> courseForSelectecStudent(studentForReportDto studentForReport)
        {
            var stdID = Convert.ToInt32(studentForReport.studentID);

            return(_context.Courses.Where(s => s.StudentID == stdID).ToList());;
        }
Example #3
0
        public Dictionary <string, int> policy(studentForReportDto studentForReport)
        {
            var stdID = Convert.ToInt32(studentForReport.studentID);

            var totalPolicy = new Dictionary <string, int>();

            int naqsElmi     = 0;
            int naqsEnzebati = 0;
            int mailToHome   = 0;
            int late         = 0;
            int absent       = 0;

            var defectDates  = _context.Defects.Where(s => s.Type == Enums.DefectType.علمی && s.StudentID == stdID).Select(s => s.DefaceDate).ToList();
            var defectDatesE = _context.Defects.Where(s => s.Type == Enums.DefectType.انضباطی && s.StudentID == stdID).Select(s => s.DefaceDate).ToList();
            var defectDatesM = _context.Defects.Where(s => s.Type == Enums.DefectType.اطلاعیه && s.StudentID == stdID).Select(s => s.DefaceDate).ToList();
            var lateDates    = _context.Lates.Where(s => s.StudentID == stdID && s.IsTrue == false).Select(s => s.LateDate).ToList();
            var absentDates  = _context.Absents.Where(s => s.StudentID == stdID && s.IsTrue == false).ToList();

            foreach (var date in defectDates)
            {
                if (date >= fromDateForSelect && date <= toDateForSelect)
                {
                    naqsElmi += 1;
                }
            }
            foreach (var date in defectDatesE)
            {
                if (date >= fromDateForSelect && date <= toDateForSelect)
                {
                    naqsEnzebati += 1;
                }
            }
            foreach (var date in defectDatesM)
            {
                if (date >= fromDateForSelect && date <= toDateForSelect)
                {
                    mailToHome += 1;
                }
            }
            foreach (var date in lateDates)
            {
                if (date >= fromDateForSelect && date <= toDateForSelect)
                {
                    late += 1;
                }
            }
            foreach (var date in absentDates)
            {
                if (absentDates != null || absentDates.Count != 0)
                {
                    if (date.FromDate >= fromDateForSelect && date.ToDate <= toDateForSelect)
                    {
                        absent += 1;
                    }
                }

                /*List<DateTime> tempDate = new List<DateTime> { };
                 * if (absentDates != null || absentDates.Count != 0)
                 * {
                 *  foreach (var absentD in absentDates)
                 *  {
                 *      var isGraterThan = absentD.ToDate.CompareTo(absentD.FromDate);
                 *      if (isGraterThan == 1)
                 *      {
                 *          var distanceOfTwoDate = absentD.FromDate - absentD.ToDate;
                 *          int t = (int)distanceOfTwoDate.TotalDays;
                 *          t *= -1;
                 *          tempDate.Add(absentD.FromDate);
                 *          for (int i = 1; i <= t; i++)
                 *          {
                 *              tempDate.Add(absentD.FromDate.AddDays(+i));
                 *          }
                 *
                 *          foreach (var d in tempDate)
                 *          {
                 *              if (d >= fromDateForSelect && d <= toDateForSelect )
                 *              {
                 *                  absent += 1;
                 *              }
                 *          }
                 *      }
                 *      else
                 *      {
                 *          if (absentD.FromDate >= fromDateForSelect && absentD.ToDate <= toDateForSelect)
                 *          {
                 *              absent += 1;
                 *          }
                 *      }
                 *
                 *  }
                 *
                 * }
                 */
            }

            //var total = naqsEnzebati + late + absent;

            totalPolicy.Add("late", late);
            totalPolicy.Add("absent", absent);
            totalPolicy.Add("nazm", naqsEnzebati);
            totalPolicy.Add("elmi", naqsElmi);
            totalPolicy.Add("mailToHome", mailToHome);


            //totalPolicy.Add("total", total);

            return(totalPolicy);
        }
Example #4
0
        public Dictionary <string, int> calCulatePercentOfExamForClass(studentForReportDto studentForReport)
        {
            var stdID = Convert.ToInt32(studentForReport.studentID);
            //پیدا کردن کلاس دانش اموز انتخابی
            var className = _context.Students.Where(s => s.Id == stdID).Select(s => s.Class).Single();
            //دریافت شناسه دانش اموزان ان کلاس
            var allStudentInClass = _context.Students.Where(s => s.Class == className).Select(s => s.Id).ToList();

            var course = _context.Courses.ToList();

            var initCourseName = " ";
            //دریافت نام دروس
            List <string> courseNames = new List <string>();

            foreach (var item in course)
            {
                if (item.Title != initCourseName)
                {
                    initCourseName = item.Title;
                    courseNames.Add(item.Title);
                }
            }

            List <int> courseIdForAll = new List <int>();//ایدی دانش اموزان برای میانگین کلاس

            foreach (var item in courseNames)
            {
                foreach (var c in allStudentInClass)
                {
                    var stdIdOnce  = Convert.ToInt32(c);
                    var courseOnce = _context.Courses.Where(s => s.StudentID == stdIdOnce && s.Title == item).Select(s => s.ID).Single();
                    courseIdForAll.Add(courseOnce);
                }
            }

            var practice = _context.Practices.ToList();

            List <int> percentOfClass = new List <int>();

            var classPercent = 0;

            var dividTo = 0;

            var breakCourse = courseIdForAll.Count / courseNames.Count;
            var count       = 0;

            foreach (var cID in courseIdForAll)
            {
                count++;

                foreach (var item in practice)
                {
                    if (item.CourseID == cID)
                    {
                        classPercent += calCulatePercentOfCourse(item.Numbers, item.PassedNumbers);
                        dividTo++;
                    }
                }

                if (count % breakCourse == 0)
                {
                    percentOfClass.Add(classPercent / dividTo);
                    classPercent = 0;
                    dividTo      = 0;
                }
            }


            var courseAndPercent = new Dictionary <string, int>();

            for (int i = 0; i < courseNames.Count; i++)
            {
                courseAndPercent.Add(courseNames[i], percentOfClass[i]);
            }


            return(courseAndPercent);
        }
Example #5
0
        public ActionResult CreateReport(studentForReportDto studentForReport)
        {
            var month = studentForReport.selectedMonth.ToString();

            calculateDate(month);

            var courseListForSelectedStudent = courseForSelectecStudent(studentForReport);
            var totalPolicy = policy(studentForReport);

            var practiceForSelectedStudent = new List <Practice>();
            var examForSelectedStudent     = new List <Exam>();

            foreach (var item in courseListForSelectedStudent)
            {
                var itemID        = Convert.ToInt32(item.ID);
                var practice_temp = _context.Practices.Where(s => s.CourseID == itemID).ToList();

                foreach (var practice in practice_temp)
                {
                    if (practice.PracticeDate >= fromDateForSelect && practice.PracticeDate <= toDateForSelect)
                    {
                        practiceForSelectedStudent.Add(practice);
                    }
                }

                var exam_temp = _context.Exams.Where(s => s.CourseID == itemID).ToList();

                foreach (var exam in exam_temp)
                {
                    if (exam.ExamDate >= fromDateForSelect && exam.ExamDate <= toDateForSelect)
                    {
                        examForSelectedStudent.Add(exam);
                    }
                }
            }

            var examsForPrint = new List <ExamForReportDto>();

            foreach (var item in examForSelectedStudent)
            {
                var   persianDateTime = new PersianDateTime(item.ExamDate);
                float absentControl   = item.Grade;
                if (item.Grade == 0)
                {
                    try
                    {
                        var             stdID = Convert.ToInt32(studentForReport.studentID);
                        List <Absent>   absentForSelectedStudent = _context.Absents.Where(s => s.StudentID == stdID).ToList();
                        List <DateTime> tempDate = new List <DateTime> {
                        };
                        if (absentForSelectedStudent != null || absentForSelectedStudent.Count != 0)
                        {
                            foreach (var date in absentForSelectedStudent)
                            {
                                var isGraterThan = date.ToDate.CompareTo(date.FromDate);
                                if (isGraterThan == 1)
                                {
                                    var distanceOfTwoDate = date.FromDate - date.ToDate;
                                    int t = (int)distanceOfTwoDate.TotalDays;
                                    t *= -1;
                                    tempDate.Add(date.FromDate);
                                    for (int i = 1; i <= t; i++)
                                    {
                                        tempDate.Add(date.FromDate.AddDays(+i));
                                    }

                                    foreach (var d in tempDate)
                                    {
                                        if (d == item.ExamDate)
                                        {
                                            absentControl = 1.1F;
                                        }
                                    }
                                }
                                else
                                {
                                    if (date.FromDate == item.ExamDate || date.ToDate == item.ExamDate)
                                    {
                                        absentControl = 1.1F;
                                    }
                                }
                            }
                        }
                        else
                        {
                            absentControl = item.Grade;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw;
                    }
                }
                else
                {
                    absentControl = item.Grade;
                }

                examsForPrint.Add(

                    new ExamForReportDto
                {
                    CourseID      = item.CourseID,
                    Grade         = absentControl,
                    FinalGrade    = item.FinalGrade,
                    ExamType      = item.ExamType.ToString(),
                    ExamDate      = persianDateTime.ToString("yy/MM/dd"),
                    TeacherAdvice = item.TeacherAdvice
                }

                    );
            }

            var objForTable = practiceReportForStudent(practiceForSelectedStudent, studentForReport);

            var courseForSelected = new List <CourseForReportDto>();

            foreach (var item in courseListForSelectedStudent)
            {
                courseForSelected.Add(

                    new CourseForReportDto
                {
                    CourseId   = item.ID,
                    CourseName = item.Title
                }

                    );
            }

            var gradeOfNotebook = notebookForStudent(studentForReport);
            var stdId           = Convert.ToInt32(studentForReport.studentID);

            var notebookAves = _context.NotebookAves.Where(s => s.StudentID == stdId).OrderBy(s => s.Month).Select(x => x.Average).ToList();

            var jobsCount = _context.Jobs.Where(x => x.StudentID == stdId).Count();
            var jobList   = new Dictionary <int, int>();
            var jobNames  = new Dictionary <int, string>();

            if (jobsCount > 0)
            {
                var jobs = _context.Jobs.Where(x => x.StudentID == stdId).OrderBy(s => s.Cycle).ToList();

                foreach (var item in jobs)
                {
                    jobList.Add(item.Cycle, item.Grade);
                    jobNames.Add(item.Cycle, item.JobType);
                }
            }
            else
            {
                jobList.Add(0, 0);
                jobNames.Add(0, " ");
            }


            var jsonObj = JsonConvert.SerializeObject(new forTableReportDto {
                CourseForReportDtos = courseForSelected, ReportDtos = objForTable, Exams = examsForPrint, GradeOfNotebook = gradeOfNotebook, Totalpolicy = totalPolicy, NoteBookAves = notebookAves, jobsList = jobList, jobsNames = jobNames
            });

            return(Json(new { success = true, responseText = jsonObj }, JsonRequestBehavior.AllowGet));
        }
Example #6
0
        public List <ReportDto> practiceReportForStudent(List <Practice> practiceForSelectedStudent, studentForReportDto studentForReport)
        {
            List <ReportDto> reportList = new List <ReportDto>();

            //دریافت نام دروس و درصدشان
            var courseAndPercent = calCulatePercentOfCourseForClass(studentForReport);

            int beforeId       = 0;
            int count          = 0;
            int studentpersent = 0;
            int checkCount     = 0;
            var Advice         = 0;

            foreach (var item in practiceForSelectedStudent)
            {
                count++;

                if (count == practiceForSelectedStudent.Count)
                {
                    if (beforeId != item.CourseID && beforeId != 0)
                    {
                        studentpersent = studentpersent / checkCount;

                        List <Practice> teacherAdvice = _context.Practices.Where(s => s.CourseID == beforeId).ToList();
                        if (teacherAdvice.Count > 1)
                        {
                            int teCount = 0;
                            foreach (var te in teacherAdvice)
                            {
                                ++teCount;

                                Advice += Convert.ToInt32((te.TeacherAdvice * 100) / te.Numbers);
                            }

                            Advice = Advice / teCount;
                        }
                        else
                        {
                            Advice = (teacherAdvice.Select(s => s.TeacherAdvice).SingleOrDefault() * 100) / teacherAdvice.Select(s => s.Numbers).SingleOrDefault();
                        }

                        reportList.Add(new ReportDto
                        {
                            CourseId       = beforeId,
                            PercentOfWork  = studentpersent,
                            PercentOfClass = Advice,
                            SeeNumbers     = checkCount
                        });

                        Advice = 0;

                        checkCount = 0;
                        checkCount++;
                        studentpersent = calCulatePercentOfCourse(item.Numbers, item.PassedNumbers);
                    }

                    if (beforeId == item.CourseID)
                    {
                        studentpersent += calCulatePercentOfCourse(item.Numbers, item.PassedNumbers);
                    }

                    if (count == 1 || beforeId == item.CourseID)
                    {
                        checkCount++;
                    }

                    studentpersent = studentpersent / checkCount;

                    List <Practice> teacherAdvice1 = _context.Practices.Where(s => s.CourseID == item.CourseID).ToList();
                    if (teacherAdvice1.Count > 1)
                    {
                        int teCount = 0;
                        foreach (var te in teacherAdvice1)
                        {
                            ++teCount;

                            Advice += Convert.ToInt32((te.TeacherAdvice * 100) / te.Numbers);
                        }

                        Advice = Advice / teCount;
                    }
                    else
                    {
                        Advice = (teacherAdvice1.Select(s => s.TeacherAdvice).SingleOrDefault() * 100) / teacherAdvice1.Select(s => s.Numbers).SingleOrDefault();
                    }

                    reportList.Add(new ReportDto
                    {
                        CourseId       = practiceForSelectedStudent.Last().CourseID,
                        PercentOfWork  = studentpersent,
                        PercentOfClass = Advice,
                        SeeNumbers     = checkCount
                    });

                    Advice = 0;
                }
                else if (beforeId != item.CourseID && beforeId != 0)
                {
                    studentpersent = studentpersent / checkCount;
                    List <Practice> teacherAdvice = _context.Practices.Where(s => s.CourseID == beforeId).ToList();
                    if (teacherAdvice.Count > 1)
                    {
                        int teCount = 0;
                        foreach (var te in teacherAdvice)
                        {
                            ++teCount;

                            Advice += Convert.ToInt32((te.TeacherAdvice * 100) / te.Numbers);
                        }

                        Advice = Advice / teCount;
                    }
                    else
                    {
                        Advice = (teacherAdvice.Select(s => s.TeacherAdvice).SingleOrDefault() * 100) / teacherAdvice.Select(s => s.Numbers).SingleOrDefault();
                    }

                    reportList.Add(new ReportDto
                    {
                        CourseId       = beforeId,
                        PercentOfWork  = studentpersent,
                        PercentOfClass = Advice,
                        SeeNumbers     = checkCount
                    });

                    Advice = 0;

                    checkCount = 0;
                    checkCount++;
                    studentpersent = calCulatePercentOfCourse(item.Numbers, item.PassedNumbers);
                }
                else
                {
                    checkCount++;
                    studentpersent += calCulatePercentOfCourse(item.Numbers, item.PassedNumbers);
                }



                beforeId = item.CourseID;//برای بازدید بعدی
            }


            return(reportList);
        }