protected void RadCalendarAttendance_OnSelectionChanged(object sender, SelectedDatesEventArgs e) { if (RadGridClassStudent.SelectedValue != null) { var attendance = new CAttendance(); var studentId = Convert.ToInt32(RadGridClassStudent.SelectedValues["StudentId"]); foreach (RadDate date in RadCalendarAttendance.SelectedDates) { var previousDate = attendance.Get(ProgramClassId, studentId, date.Date); if (previousDate != null) { attendance.Delete(previousDate); } if (string.IsNullOrEmpty(RadComboBoxAttendanceType.SelectedValue) == false) { // insert attendance.Add(new Erp2016.Lib.Attendance { StudentId = studentId, ProgramClassId = ProgramClassId, AttendanceType = Convert.ToInt32(RadComboBoxAttendanceType.SelectedValue), AttendanceDate = date.Date, CreatedDate = DateTime.Now, CreatedId = CurrentUserId }); } } GetCalendarAttendance(); } }
private static void LoadStudents(RecContext db, CSession session) { var students = from cts in db.ClassTermStudent join stu in db.Student on cts.StudentId equals stu.StudentId join ct in db.ClassTerm on cts.ClassTermId equals ct.ClassTermId join s in db.Session.Where(item => item.SessionId == session.SessionId) on ct.ClassTermId equals s.ClassTermId join att in db.Attendance on new { K1 = cts.StudentId, K2 = s.SessionId } equals new { K1 = att.StudentId, K2 = att.SessionId } into att1 from temp in att1.DefaultIfEmpty() select new CAttendance { StudentId = cts.StudentId, StudentName = stu.FirstName + " " + stu.LastName, AttendanceStatusId = temp == null ? 0 : temp.AttendanceStatusId, ReasonId = temp == null ? 0 : temp.ReasonId.GetValueOrDefault() }; foreach (var student in students) { var ca = new CAttendance { StudentId = student.StudentId, StudentName = student.StudentName, AttendanceStatusId = student.AttendanceStatusId == null ? 0 : student.AttendanceStatusId, ReasonId = student.ReasonId == null ? 0 : student.ReasonId }; session.Students.Add(ca); } }
private void GetCalendarAttendance() { ResetForm(); if (RadGridClassStudent.SelectedValue != null) { RadCalendarAttendance.RangeMinDate = (DateTime)RadGridClassStudent.SelectedValues["StartDate"]; RadCalendarAttendance.RangeMaxDate = (DateTime)RadGridClassStudent.SelectedValues["EndDate"]; //// disable the selection for the specific day //var calendarDay = new RadCalendarDay(); //calendarDay.Date = DateTime.Now; //calendarDay.IsToday = true; //calendarDay.ItemStyle.Font.Strikeout = true; //RadCalendarAttendance.SpecialDays.Add(calendarDay); var attendanceList = new CAttendance().Get(ProgramClassId, Convert.ToInt32(RadGridClassStudent.SelectedValues["StudentId"])); foreach (var a in attendanceList) { var cal = new RadCalendarDay(); cal.Date = a.AttendanceDate; var cAttendanceDict = new CDict(); var attendanceDict = cAttendanceDict.GetDictByTypeAndValue(1515, a.AttendanceType); cal.ToolTip = a.AttendanceDate.ToShortDateString() + " " + attendanceDict.Name + " [" + attendanceDict.Abbreviation + "]"; switch (a.AttendanceType) { //Absent case 0: cal.TemplateID = "DayTemplateAbsentAttendance"; break; // Break(Vacation) case 1: cal.TemplateID = "DayTemplateBreakAttendance"; break; // Dismissal case 2: cal.TemplateID = "DayTemplateDismissalAttendance"; break; // Excuse case 3: cal.TemplateID = "DayTemplateExcuseAttendance"; break; // Late case 4: cal.TemplateID = "DayTemplateLateAttendance"; break; // Present case 5: cal.TemplateID = "DayTemplatePresentAttendance"; break; // Probation case 6: cal.TemplateID = "DayTemplateProbationAttendance"; break; // Co - op / JSHINE Practicum / Practicum case 7: cal.TemplateID = "DayTemplateCoopAttendance"; break; // Withdrawal case 8: cal.TemplateID = "DayTemplateWithdrawalAttendance"; break; } RadCalendarAttendance.SpecialDays.Add(cal); } var startDate = (DateTime)RadGridClassStudent.SelectedValues["StartDate"]; var endDate = (DateTime)RadGridClassStudent.SelectedValues["EndDate"]; var totalDay = GetWorkingDays(startDate, endDate); var attendanceDays = RadCalendarAttendance.SpecialDays.Cast <RadCalendarDay>().Count(s => s.IsSelectable); RadTextBoxAttendanceCount.Text = attendanceDays + " / " + totalDay; // percent of total rate RadTextBoxAttendanceRate.Text = Math.Round(((attendanceDays / (double)totalDay) * 100), 2) + " %"; } }