private IEnumerable <StudentViewModel> HonorRollsStudents(MarkingPeriodKey currentQuarter) { if (allStudents == null) { return(Enumerable.Empty <StudentViewModel>()); } return(allStudents.Where(s => s.Grades.Any(g => g.MarkingPeriod.Equals(currentQuarter)))); }
private IEnumerable <KeyValuePair <string, string> > GetSelfDevFields(MarkingPeriodKey period) { var sdAreas = Maintenance.SelfDevelopmentAreas; var o = _student.SelfDevelopmentScores.Where(score => MarkingPeriodKey.Parse(score.Quarter).Equals(period)); var p = o.Select((s, i) => new[] { new KeyValuePair <string, string>("SD" + (i + 1), sdAreas[i]), new KeyValuePair <string, string>("SDValue" + (i == 10 ? 12 : i + 1), s.Score.ToString()) }).SelectMany(x => x); return(p); }
public static DateTime ApproximateStartDate(MarkingPeriodKey mpk) { if (mpk.Quarter == 1) return new DateTime(mpk.EndingSchoolYear - 1, 9, 1); else if (mpk.Quarter == 2) return new DateTime(mpk.EndingSchoolYear - 1, 11, 11); else if (mpk.Quarter == 3) return new DateTime(mpk.EndingSchoolYear, 1, 21); else //if (Quarter == 4) return new DateTime(mpk.EndingSchoolYear, 4, 2); }
private IEnumerable <KeyValuePair <string, string> > GetReportLevelFields(MarkingPeriodKey period) { var thisQuarter = MarkingPeriods.Singleton.Find(period); var thisYear = new MarkingYear(thisQuarter); // TODO absence in Demo // TODONE need year to date attendance // TODO need to show grades for 1-4 when showing 4th quarter // TODO need to show not show quarters in drop down for past var absentThisQuarter = _student.DaysAttendance(thisQuarter, AttendanceStatus.Absent); int absentThisYear = _student.DaysAttendance(thisYear, AttendanceStatus.Absent); var tardyThisQuarter = _student.DaysAttendance(thisQuarter, AttendanceStatus.Tardy); int tardyThisYear = _student.DaysAttendance(thisYear, AttendanceStatus.Tardy); return(new[] { new KeyValuePair <string, string>( "StudentAddress", _student.AddressLine1 + "\n" + _student.AddressLine2), new KeyValuePair <string, string>( "SchoolYear", String.Format("{0:MMM dd, yyyy} - {1:MMM dd, yyyy}", thisYear.StartDate, thisYear.EndDate)), new KeyValuePair <string, string>( "SchoolYearAttendance", String.Format("{0} - {1}", thisYear.StartDate.Year, thisYear.EndDate.Year)), new KeyValuePair <string, string>( "QTR1", thisQuarter.DaysIn.ToString()), new KeyValuePair <string, string>( "YR1", thisYear.DaysIn.ToString()), new KeyValuePair <string, string>( "QTR2", absentThisQuarter.ToString()), new KeyValuePair <string, string>( "YR2", absentThisYear.ToString()), new KeyValuePair <string, string>( "QTR3", tardyThisQuarter.ToString()), new KeyValuePair <string, string>( "YR3", tardyThisYear.ToString()), new KeyValuePair <string, string>( "MarkingPeriod", period.QuarterString), new KeyValuePair <string, string>( "QtrEnding", thisQuarter != null ? thisQuarter.EndDate.ToShortDateString() : "N/A") }); }
internal static MarkingPeriods DemoMarkingPeriod() { var rv = new MarkingPeriods(); for (int year = 2011; year <= 2013; year++) { for (int quarter = 1; quarter <= 4; quarter++) { var key = new MarkingPeriodKey(quarter, year); var mp = new MarkingPeriod(key, ApproximateStartDate(key), ApproximateEndDate(key), 45); rv.Add(mp); } } return(rv); }
static public DateTime ApproximateEndDate(MarkingPeriodKey mpk) { if (mpk.Quarter == 1) { return(new DateTime(mpk.EndingSchoolYear - 1, 11, 10)); } else if (mpk.Quarter == 2) { return(new DateTime(mpk.EndingSchoolYear, 1, 20)); } else if (mpk.Quarter == 3) { return(new DateTime(mpk.EndingSchoolYear, 4, 1)); } else //if (Quarter == 4) { return(new DateTime(mpk.EndingSchoolYear, 6, 12)); } }
/* public void CloneQuarter(MarkingPeriodKey last, MarkingPeriodKey next) { if (false == MarkingPeriods.Singleton.Any(m => m.Key.Equals(next))) MarkingPeriods.Singleton.AddMarkingPeriod(new MarkingPeriod(next, next.ApproximateStartDate, next.ApproximateEndDate, 45)); var courses = Course.Where(c => c.Quarter == last.ToString()); foreach (var course in courses) Course.AddCourseRow(course.CourseKey + course.Quarter, course.SubjectName, course.Quarter, course.Group, course.Teacher, course.Level); Save(); }*/ public void ImportClassLists(MarkingPeriodKey mpk, List<string> lines) { foreach (var line in lines) { var parts = line.Split(",".ToCharArray()); var studentName = parts[0]; var student = Student.SingleOrDefault(s => s.Name == studentName); if (student == null) continue; var courseName = parts[1]; var quarter = parts[2]; var teacher = parts[3]; var group = parts[4]; var level = parts[5]; } Save(); }
/* * public void CloneQuarter(MarkingPeriodKey last, MarkingPeriodKey next) * { * if (false == MarkingPeriods.Singleton.Any(m => m.Key.Equals(next))) * MarkingPeriods.Singleton.AddMarkingPeriod(new MarkingPeriod(next, next.ApproximateStartDate, next.ApproximateEndDate, 45)); * * var courses = Course.Where(c => c.Quarter == last.ToString()); * foreach (var course in courses) * Course.AddCourseRow(course.CourseKey + course.Quarter, course.SubjectName, course.Quarter, course.Group, course.Teacher, course.Level); * * Save(); * }*/ public void ImportClassLists(MarkingPeriodKey mpk, List <string> lines) { foreach (var line in lines) { var parts = line.Split(",".ToCharArray()); var studentName = parts[0]; var student = Student.SingleOrDefault(s => s.Name == studentName); if (student == null) { continue; } var courseName = parts[1]; var quarter = parts[2]; var teacher = parts[3]; var group = parts[4]; var level = parts[5]; } Save(); }
internal IEnumerable <StudentReport> StudentReports() { var rv = new List <StudentReport>(); var gradesByQuarter = _studentRow.GetGradeRows().GroupBy(g => g.CourseRow.Quarter); foreach (var kvp in gradesByQuarter) { var i = new StudentReport(); var mp = MarkingPeriods.Singleton.Find(MarkingPeriodKey.Parse(kvp.Key)); i.Quarter = mp.ToString(); i.NumberOfClasses = kvp.Count(); i.Gpa = Gpa(mp); i.Stage = (ApprovalStage)kvp.Max(g => (int)Enum.Parse(typeof(ApprovalStage), g.ApprovalStage)); i.HonorRoll = HonorRoll(mp); i.DaysAbsent = DaysAttendance(mp, AttendanceStatus.Absent); i.DaysTardy = DaysAttendance(mp, AttendanceStatus.Tardy); i.DaysPresent = mp.DaysIn - i.DaysAbsent - i.DaysTardy; rv.Add(i); } return(rv); }
public IEnumerable <KeyValuePair <string, string> > GetGradeReportFields(MarkingPeriodKey period, int rowIndex) { yield return(new KeyValuePair <string, string>( string.Format(MarkingPeriodKey.Parse(MarkingPeriod.ToString()).Quarter + "Row{0}", rowIndex), LetterGrade + (!string.IsNullOrEmpty(SpecialGrade) ? "\n" + SpecialGrade : ""))); if (IsCurrentForPeriod(period)) { yield return(new KeyValuePair <string, string>( "SubjectRow" + rowIndex, Subject)); yield return(new KeyValuePair <string, string>( "CommentRow" + rowIndex, Comment)); yield return(new KeyValuePair <string, string>( "TeacherRow" + rowIndex, Teacher)); } }
private void FillCourses(MarkingPeriodKey mpk, string gradeLevel) { cmbCourse.Items.Clear(); cmbCourse.Items.Add("All"); var courses = Gradebook.Courses; if (mpk != null) { courses = courses.Where(c => c.Quarter == mpk.ToString()); } //if (gradeLevel != "All") // courses = courses.Where(c => c.Level == gradeLevel); if (chkMyStudents.IsChecked == true) { courses = courses.Where(c => c.Teacher == UserViewModel.CurrentUser.Name); } foreach (var course in courses) { cmbCourse.Items.Add(course); } cmbCourse.Text = cmbCourse.Items[0].ToString(); }
private void OnGenerateReportCard(object sender, RoutedEventArgs e) { if (!UserViewModel.CurrentUser.CanExportReportCards) { MessageBox.Show("You do not have permission to export a report card!"); return; } var report = (StudentReport)grdStudentReport.SelectedItem; MarkingPeriod mp = MarkingPeriod.Current; if (report != null) { mp = MarkingPeriods.Singleton.Find(MarkingPeriodKey.Parse(report.Quarter)); } try { var reportCard = new ReportCard(_student); reportCard.CreateReportCard(null, mp); } catch (System.IO.IOException) { MessageBox.Show("Error writing the report card! Check to ensure you have permission to write to this folder and that the file is not currently in use."); } }
public IEnumerable<KeyValuePair<string, string>> GetGradeReportFields(MarkingPeriodKey period, int rowIndex) { yield return new KeyValuePair<string, string>( string.Format(MarkingPeriodKey.Parse(MarkingPeriod.ToString()).Quarter + "Row{0}", rowIndex), LetterGrade + (!string.IsNullOrEmpty(SpecialGrade) ? "\n" + SpecialGrade : "")); if (IsCurrentForPeriod(period)) { yield return new KeyValuePair<string, string>( "SubjectRow" + rowIndex, Subject); yield return new KeyValuePair<string, string>( "CommentRow" + rowIndex, Comment); yield return new KeyValuePair<string, string>( "TeacherRow" + rowIndex, Teacher); } }
private IEnumerable<StudentViewModel> HonorRollsStudents(MarkingPeriodKey currentQuarter) { if (allStudents == null) return Enumerable.Empty<StudentViewModel>(); return allStudents.Where(s => s.Grades.Any(g => g.MarkingPeriod.Equals(currentQuarter))); }
private void FillCourses(MarkingPeriodKey mpk, string gradeLevel) { cmbCourse.Items.Clear(); cmbCourse.Items.Add("All"); var courses = Gradebook.Courses; if (mpk != null) courses = courses.Where(c => c.Quarter == mpk.ToString()); //if (gradeLevel != "All") // courses = courses.Where(c => c.Level == gradeLevel); if (chkMyStudents.IsChecked == true) courses = courses.Where(c => c.Teacher == UserViewModel.CurrentUser.Name); foreach (var course in courses) cmbCourse.Items.Add(course); cmbCourse.Text = cmbCourse.Items[0].ToString(); }
public bool IsCurrentForPeriod(MarkingPeriodKey periodKey) { return MarkingPeriod.Key.Equals(periodKey); }
internal static MarkingPeriods DemoMarkingPeriod() { var rv = new MarkingPeriods(); for (int year = 2011; year <= 2013; year++) { for (int quarter = 1; quarter <= 4; quarter++) { var key = new MarkingPeriodKey(quarter, year); var mp = new MarkingPeriod(key, ApproximateStartDate(key), ApproximateEndDate(key), 45); rv.Add(mp); } } return rv; }
public bool IsCurrentForPeriod(MarkingPeriodKey periodKey) { return(MarkingPeriod.Key.Equals(periodKey)); }
static public Gradebook CreateDemo() { _rnd = new Random(1116); var rv = new Gradebook(); var firstNames = new List <string>() { "Dan", "Kelly", "Allegra", "Ramsey", "Max", "Lexi", "Indy" }; var lastNames = new List <string>() { "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega" }; var dobStart = DateTime.Now.AddYears(-14); var dobEnd = DateTime.Now.AddYears(-5); int iCourse = 1000; var homeroomTeachers = new Dictionary <string, string>(); int iClassroom = 0; foreach (var gradeLevel in Maintenance.GradeLevelShorts) { homeroomTeachers.Add(gradeLevel, Maintenance.Users.Where(u => u.Role == RoleEnum.ClassroomInstructor).Select(t => t.Name).ToList()[iClassroom++]); } foreach (var quarter in MarkingPeriods.Singleton.Where(q => q.EndDate <= MarkingPeriod.Current.EndDate).OrderByDescending(q => q.ToString())) { foreach (var gradeLevel in Maintenance.GradeLevelShorts) { foreach (var subject in Maintenance.Subjects) { var teacher = string.Empty; if (CourseViewModel.ClassroomCourse(subject)) { teacher = homeroomTeachers[gradeLevel]; } else if (CourseViewModel.SmallGroupCourse(subject)) { teacher = RandString(Maintenance.Users.Where(u => u.Role == RoleEnum.SmallGroupInstructor).Select(t => t.Name).ToList()); } else if (CourseViewModel.SpecialCourse(subject)) { teacher = RandString(Maintenance.Users.Where(u => u.Role == RoleEnum.SpecialInstructor).Select(t => t.Name).ToList()); } else { teacher = null; } rv.Course.AddCourseRow((iCourse++).ToString(), subject, quarter.ToString(), RandString(Maintenance.Groups), teacher, Maintenance.GradeLevelNumber(gradeLevel)); } } } var extraComments = new List <string>() { "", "always", "never", "great", "usually", "best" }; for (int iStudent = 0; iStudent < 100; iStudent++) { var name = firstNames[iStudent % 7] + " " + lastNames[iStudent % (lastNames.Count)]; var dob = dobStart.AddDays(iStudent * (dobEnd - dobStart).TotalDays / 100); var enrolled = dob.AddYears(5); var gradeLevel = AddGradeLevel(Maintenance.GradeLevelShorts[0], (DateTime.Today.Year - enrolled.Year)); if (gradeLevel == null) { //handle k better gradeLevel = Maintenance.GradeLevelShorts.Last(); } var student = rv.Student.AddStudentRow(Gradebook.MakeStudentKey(name, dob), name, dob, iStudent + " Fake St", "Bel Air, MD 22222", gradeLevel, enrolled, DateTime.MaxValue); foreach (var course in rv.Course.OrderByDescending(c => c.Quarter)) { var mpk = MarkingPeriodKey.Parse(course.Quarter); var mp = MarkingPeriods.Singleton.Find(mpk); var diffYears = MarkingPeriodKey.Current.EndingSchoolYear - mpk.EndingSchoolYear; if (course.Level == Maintenance.GradeLevelNumber(AddGradeLevel(student.GradeLevel, 0 - diffYears))) { if (_rnd.NextDouble() < .1) { rv.Attendance.AddAttendanceRow(student, mp.StartDate.AddDays(_rnd.Next(0, 30)), AttendanceStatus.Absent.ToString()); } if (_rnd.NextDouble() < .1) { rv.Attendance.AddAttendanceRow(student, mp.StartDate.AddDays(_rnd.Next(0, 30)), AttendanceStatus.Tardy.ToString()); } if (mpk.Equals(MarkingPeriodKey.Current) && _rnd.Next(0, 2) == 0) { rv.Grade.AddGradeRow(student, course, string.Empty, string.Empty, string.Empty, ApprovalStage.Open.ToString()); } else { var stage = ApprovalStage.Office; if (mpk.Equals(MarkingPeriodKey.Current)) { if (_rnd.Next(0, 2) == 0) { stage = ApprovalStage.Instructor; } else { stage = ApprovalStage.Classroom; } } var specialGrade = string.Empty; if (CourseViewModel.HasSpecialGrade(course.SubjectName)) { if (course.SubjectName == "Reading") { specialGrade = (int.Parse(course.Level) + _rnd.Next(0, 5)).ToString() + "-" + _rnd.Next(1, 10); } else if (course.SubjectName == "Math") { specialGrade = (int.Parse(course.Level) + _rnd.Next(0, 5)).ToString() + "(" + _rnd.Next(1, 2).ToString() + ")"; } else if (course.SubjectName == "Written Expression") { specialGrade = "Paragraph"; } } rv.Grade.AddGradeRow(student, course, RandString(Maintenance.LetterGrades.Keys.ToList(), 3), specialGrade, Maintenance.FormatCommentFromList(RandString(Maintenance.Comments)) + " " + RandString(extraComments), stage.ToString()); } } } var quarters = MarkingPeriods.Singleton.OrderByDescending(q => q.ToString()); bool withdraw = false; if (iStudent % 33 == 0) { quarters = MarkingPeriods.Singleton.OrderBy(q => q.ToString()); withdraw = true; } foreach (var quarter in quarters) { if (enrolled > quarter.EndDate) { continue; } foreach (var area in Maintenance.SelfDevelopmentAreas) { rv.SelfDevelopment.AddSelfDevelopmentRow(student, area, quarter.ToString(), _rnd.Next(3, 5), "Jekyll"); } if (_rnd.NextDouble() > .9) { if (withdraw) { student.DateWithdrawn = quarter.EndDate.AddMonths(-1); } else { student.DateEnrolled = quarter.EndDate.AddMonths(-2); } //if (student.DateEnrolled > DateTime.Today) // student.DateEnrolled = DateTime.Today.AddDays(-1); break; } } } return(rv); }
public string GetDefaultReportCardFilename(MarkingPeriodKey period) { return(String.Format("{0}_Q{1}_{2}_Report_Card", _student.Name, period.Quarter, period.EndingSchoolYear)); }