public ActionResult <StaffScheduleViewModel> StaffScheduleViewForCourseSection(StaffScheduleViewModel staffScheduleViewModel) { StaffScheduleViewModel staffSchedule = new StaffScheduleViewModel(); try { staffSchedule = _staffScheduleService.StaffScheduleViewForCourseSection(staffScheduleViewModel); } catch (Exception es) { staffSchedule._message = es.Message; staffSchedule._failure = true; } return(staffSchedule); }
/// <summary> /// Add Staff CourseSection Schedule /// </summary> /// <param name="staffScheduleViewModel"></param> /// <returns></returns> public StaffScheduleViewModel AddStaffCourseSectionSchedule(StaffScheduleViewModel staffScheduleViewModel) { StaffScheduleViewModel staffSchedule = new StaffScheduleViewModel(); try { if (TokenManager.CheckToken(staffScheduleViewModel._tenantName + staffScheduleViewModel._userName, staffScheduleViewModel._token)) { staffSchedule = this.staffScheduleRepository.AddStaffCourseSectionSchedule(staffScheduleViewModel); } else { staffSchedule._failure = true; staffSchedule._message = TOKENINVALID; } } catch (Exception es) { staffSchedule._failure = true; staffSchedule._message = es.Message; } return(staffSchedule); }
public ActionResult <StaffScheduleViewModel> CheckAvailabilityStaffCourseSectionSchedule(StaffScheduleViewModel staffScheduleViewModel) { StaffScheduleViewModel staffSchedule = new StaffScheduleViewModel(); try { staffSchedule = _staffScheduleService.CheckAvailabilityStaffCourseSectionSchedule(staffScheduleViewModel); } catch (Exception es) { staffSchedule._message = es.Message; staffSchedule._failure = true; } return(staffSchedule); }
/// <summary> /// Add Staff CourseSection ReSchedule /// </summary> /// <param name="staffScheduleViewModel"></param> /// <returns></returns> public StaffScheduleViewModel AddStaffCourseSectionReSchedule(StaffScheduleViewModel staffScheduleViewModel) { try { if (staffScheduleViewModel.staffScheduleViewList.Count() > 0) { foreach (var staffSchedule in staffScheduleViewModel.staffScheduleViewList.ToList()) { var courseSectionList = staffSchedule.courseSectionViewList.ToList(); if (courseSectionList.Count > 0) { var staffGuid = this.context.StaffMaster.Where(x => x.StaffId == staffScheduleViewModel.staffScheduleViewList.FirstOrDefault().StaffId&& x.SchoolId == staffScheduleViewModel.SchoolId && x.TenantId == staffScheduleViewModel.TenantId).FirstOrDefault().StaffGuid; foreach (var courseSection in courseSectionList) { var StaffScheduleData = this.context?.StaffCoursesectionSchedule.FirstOrDefault(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.StaffId == staffScheduleViewModel.ExistingStaff && x.CourseSectionId == courseSection.CourseSectionId); if (StaffScheduleData != null) { StaffScheduleData.IsDropped = true; StaffScheduleData.EffectiveDropDate = DateTime.UtcNow; } else { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = "Exixting Staff Does't in this CourseSection"; return(staffScheduleViewModel); } var staffCoursesectionSchedule = new StaffCoursesectionSchedule() { TenantId = staffScheduleViewModel.TenantId, SchoolId = staffScheduleViewModel.SchoolId, StaffId = staffSchedule.StaffId, CourseId = (int)courseSection.CourseId, CourseSectionId = (int)courseSection.CourseSectionId, StaffGuid = staffGuid, CourseSectionName = courseSection.CourseSectionName, YrMarkingPeriodId = courseSection.YrMarkingPeriodId, SmstrMarkingPeriodId = courseSection.SmstrMarkingPeriodId, QtrMarkingPeriodId = courseSection.QtrMarkingPeriodId, DurationStartDate = courseSection.DurationStartDate, DurationEndDate = courseSection.DurationEndDate, MeetingDays = courseSection.MeetingDays, CreatedBy = staffScheduleViewModel.CreatedBy, CreatedOn = DateTime.UtcNow, IsAssigned = true }; this.context?.StaffCoursesectionSchedule.Add(staffCoursesectionSchedule); } this.context?.SaveChanges(); staffScheduleViewModel._message = "Staff Re-Schedule In CourseSection Successfully"; staffScheduleViewModel._failure = false; } else { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = "Select CourseSection For Staff Re-Schedule"; } } } else { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = "Select Staff For Staff Re-Schedule"; } } catch (Exception es) { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = es.Message; } return(staffScheduleViewModel); }
/// <summary> /// Teacher Schedule View For CourseSection /// </summary> /// <param name="staffScheduleViewModel"></param> /// <returns></returns> public StaffScheduleViewModel StaffScheduleViewForCourseSection(StaffScheduleViewModel staffScheduleViewModel) { StaffScheduleViewModel staffScheduleList = new StaffScheduleViewModel(); try { if (staffScheduleViewModel.staffScheduleViewList.Count() > 0) { foreach (StaffScheduleViewList teacherScheduleView in staffScheduleViewModel.staffScheduleViewList.ToList()) { StaffScheduleViewList teacherSchedules = new StaffScheduleViewList(); var staffData = this.context?.StaffMaster.FirstOrDefault(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.StaffId == teacherScheduleView.StaffId); if (staffData != null) { var courseSectionList = staffScheduleViewModel.courseSectionViewList.ToList(); foreach (var getCourseSection in courseSectionList) { string concatDay = null; var courseSectionData = this.context?.AllCourseSectionView.Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseSectionId == getCourseSection.CourseSectionId); if (courseSectionData != null) { CourseSectionViewList CourseSections = new CourseSectionViewList(); var calender = this.context.SchoolCalendars.FirstOrDefault(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CalenderId == courseSectionData.FirstOrDefault().CalendarId); if (calender != null) { CourseSections.WeekDays = calender.Days; } var staffSchedule = this.context.StaffCoursesectionSchedule.Include(x => x.StaffMaster).Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseSectionId == getCourseSection.CourseSectionId && x.IsDropped != false).ToList(); if (staffSchedule.Count > 0) { foreach (var staff in staffSchedule) { var staffName = staff.StaffMaster.FirstGivenName + " " + staff.StaffMaster.MiddleName + " " + staff.StaffMaster.LastFamilyName; CourseSections.ScheduledStaff = CourseSections.ScheduledStaff != null ? CourseSections.ScheduledStaff + "|" + staffName : staffName; } } var variableScheduleData = courseSectionData.Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseSectionId == getCourseSection.CourseSectionId && x.ScheduleType == "Variable Schedule (2)").ToList(); if (variableScheduleData.Count > 0) { CourseSections.ScheduleType = "Variable Schedule"; foreach (var variableSchedule in variableScheduleData) { concatDay = concatDay != null ? concatDay + "|" + variableSchedule.VarDay : variableSchedule.VarDay; var variableList = this.context.CourseVariableSchedule.Include(x => x.BlockPeriod).Include(x => x.Rooms).Where(x => x.TenantId == variableSchedule.TenantId && x.SchoolId == variableSchedule.SchoolId && x.CourseSectionId == variableSchedule.CourseSectionId).Select(s => new CourseVariableSchedule { TenantId = s.TenantId, SchoolId = s.SchoolId, CourseId = s.CourseId, CourseSectionId = s.CourseSectionId, GradeScaleId = s.GradeScaleId, Serial = s.Serial, Day = s.Day, RoomId = s.RoomId, TakeAttendance = s.TakeAttendance, PeriodId = s.PeriodId, BlockId = s.BlockId, CreatedBy = s.CreatedBy, CreatedOn = s.CreatedOn, UpdatedBy = s.UpdatedBy, UpdatedOn = s.UpdatedOn, Rooms = new Rooms { Title = s.Rooms.Title }, BlockPeriod = new BlockPeriod { PeriodTitle = s.BlockPeriod.PeriodTitle } }).ToList(); CourseSections.courseVariableSchedule = variableList; } } var fixedScheduleData = courseSectionData.Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseSectionId == getCourseSection.CourseSectionId && x.ScheduleType == "Fixed Schedule (1)").FirstOrDefault(); if (fixedScheduleData != null) { CourseSections.TakeAttendanceForFixedSchedule = fixedScheduleData.AttendanceTaken; CourseSections.ScheduleType = "Fixed Schedule"; concatDay = fixedScheduleData.FixedDays; var fixedSchedule = this.context?.CourseFixedSchedule.Include(f => f.Rooms).Include(f => f.BlockPeriod).Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseId == fixedScheduleData.CourseId && x.CourseSectionId == fixedScheduleData.CourseSectionId).Select(s => new CourseFixedSchedule { TenantId = s.TenantId, SchoolId = s.SchoolId, CourseId = s.CourseId, CourseSectionId = s.CourseSectionId, GradeScaleId = s.GradeScaleId, Serial = s.Serial, RoomId = s.RoomId, PeriodId = s.PeriodId, BlockId = s.BlockId, CreatedBy = s.CreatedBy, CreatedOn = s.CreatedOn, UpdatedBy = s.UpdatedBy, UpdatedOn = s.UpdatedOn, Rooms = new Rooms { Title = s.Rooms.Title }, BlockPeriod = new BlockPeriod { PeriodTitle = s.BlockPeriod.PeriodTitle } }).FirstOrDefault(); CourseSections.courseFixedSchedule = fixedSchedule; } var calendarScheduleData = courseSectionData.Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseSectionId == getCourseSection.CourseSectionId && x.ScheduleType == "Calendar Schedule (3)").ToList(); if (calendarScheduleData.Count > 0) { CourseSections.ScheduleType = "Calendar Schedule"; concatDay = "Calendar Days"; foreach (var calendarSchedule in calendarScheduleData) { var calendarList = this.context.CourseCalendarSchedule.Include(x => x.BlockPeriod).Include(x => x.Rooms).Where(x => x.TenantId == calendarSchedule.TenantId && x.SchoolId == calendarSchedule.SchoolId && x.CourseSectionId == calendarSchedule.CourseSectionId).Select(s => new CourseCalendarSchedule { TenantId = s.TenantId, SchoolId = s.SchoolId, CourseId = s.CourseId, CourseSectionId = s.CourseSectionId, GradeScaleId = s.GradeScaleId, Serial = s.Serial, Date = s.Date, RoomId = s.RoomId, TakeAttendance = s.TakeAttendance, PeriodId = s.PeriodId, BlockId = s.BlockId, CreatedBy = s.CreatedBy, CreatedOn = s.CreatedOn, UpdatedBy = s.UpdatedBy, UpdatedOn = s.UpdatedOn, Rooms = new Rooms { Title = s.Rooms.Title }, BlockPeriod = new BlockPeriod { PeriodTitle = s.BlockPeriod.PeriodTitle } }).ToList(); CourseSections.courseCalendarSchedule = calendarList; } } var blockScheduleData = courseSectionData.Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.CourseSectionId == getCourseSection.CourseSectionId && x.ScheduleType == "Block Schedule (4)").ToList(); if (blockScheduleData.Count > 0) { CourseSections.ScheduleType = "Block Schedule"; concatDay = "Block Days"; foreach (var blockSchedule in blockScheduleData) { var blockScheduleList = this.context.CourseBlockSchedule.Include(x => x.Block).Include(x => x.BlockPeriod).Include(x => x.Rooms).Where(x => x.TenantId == blockSchedule.TenantId && x.SchoolId == blockSchedule.SchoolId && x.CourseSectionId == blockSchedule.CourseSectionId).Select(s => new CourseBlockSchedule { TenantId = s.TenantId, SchoolId = s.SchoolId, CourseId = s.CourseId, CourseSectionId = s.CourseSectionId, GradeScaleId = s.GradeScaleId, Serial = s.Serial, RoomId = s.RoomId, PeriodId = s.PeriodId, BlockId = s.BlockId, TakeAttendance = s.TakeAttendance, CreatedBy = s.CreatedBy, CreatedOn = s.CreatedOn, UpdatedBy = s.UpdatedBy, UpdatedOn = s.UpdatedOn, Rooms = new Rooms { Title = s.Rooms.Title }, BlockPeriod = new BlockPeriod { PeriodTitle = s.BlockPeriod.PeriodTitle }, Block = new Block { BlockTitle = s.Block.BlockTitle } }).ToList(); CourseSections.courseBlockSchedule = blockScheduleList; } } var courseSection = courseSectionData.FirstOrDefault(); CourseSections.CourseId = courseSection.CourseId; CourseSections.CourseSectionId = courseSection.CourseSectionId; CourseSections.CourseTitle = courseSection.CourseTitle; CourseSections.CourseSectionName = courseSection.CourseSectionName; CourseSections.DurationStartDate = courseSection.DurationStartDate; CourseSections.DurationEndDate = courseSection.DurationEndDate; CourseSections.YrMarkingPeriodId = courseSection.YrMarkingPeriodId; CourseSections.SmstrMarkingPeriodId = courseSection.SmstrMarkingPeriodId; CourseSections.QtrMarkingPeriodId = courseSection.QtrMarkingPeriodId; CourseSections.MeetingDays = concatDay; teacherSchedules.courseSectionViewList.Add(CourseSections); } } teacherSchedules.StaffId = staffData.StaffId; teacherSchedules.StaffInternalId = staffData.StaffInternalId; teacherSchedules.StaffFullName = staffData.FirstGivenName + " " + staffData.MiddleName + " " + staffData.LastFamilyName; teacherSchedules.StaffEmail = staffData.LoginEmailAddress != null ? staffData.LoginEmailAddress : staffData.PersonalEmail; teacherSchedules.HomeroomTeacher = staffData.HomeroomTeacher; teacherSchedules.StaffGuid = staffData.StaffGuid; staffScheduleList.staffScheduleViewList.Add(teacherSchedules); } } staffScheduleList.TenantId = staffScheduleViewModel.TenantId; staffScheduleList._tenantName = staffScheduleViewModel._tenantName; staffScheduleList.SchoolId = staffScheduleViewModel.SchoolId; staffScheduleList._token = staffScheduleViewModel._token; staffScheduleList._failure = false; } } catch (Exception es) { staffScheduleList.staffScheduleViewList = null; staffScheduleList._failure = true; staffScheduleList._message = es.Message; } return(staffScheduleList); }
/// <summary> /// Check Availability Staff CourseSection Schedule /// </summary> /// <param name="staffScheduleViewModel"></param> /// <returns></returns> public StaffScheduleViewModel CheckAvailabilityStaffCourseSectionSchedule(StaffScheduleViewModel staffScheduleViewModel) { try { if (staffScheduleViewModel.staffScheduleViewList.Count() > 0) { staffScheduleViewModel._message = "No Conflict Detected"; foreach (var staff in staffScheduleViewModel.staffScheduleViewList.ToList()) { var courseSectionList = staff.courseSectionViewList.ToList(); if (courseSectionList.Count() > 0) { foreach (var courseSection in courseSectionList) { var checkStaffInCourseSection = this.context.StaffCoursesectionSchedule.Where(x => x.TenantId == staffScheduleViewModel.TenantId && x.SchoolId == staffScheduleViewModel.SchoolId && x.StaffId == staff.StaffId && x.CourseId == courseSection.CourseId && x.CourseSectionId == courseSection.CourseSectionId).ToList(); if (checkStaffInCourseSection.Count() > 0) { staffScheduleViewModel._failure = true; //staffScheduleViewModel._message = "Staff already exits in course section"; staffScheduleViewModel._message = "Conflict Detected"; staff.ConflictStaff = true; courseSection.ConflictCourseSection = true; } else { var courseSectionAllData = this.context?.AllCourseSectionView.Where(c => c.SchoolId == staffScheduleViewModel.SchoolId && c.TenantId == staffScheduleViewModel.TenantId && c.CourseSectionId == courseSection.CourseSectionId).ToList(); if (courseSectionAllData.FirstOrDefault().AllowTeacherConflict != true) { if (courseSectionAllData.Count > 0) { foreach (var courseSectionData in courseSectionAllData) { var checkForConflict = this.context.AllCourseSectionView.Join(this.context.StaffCoursesectionSchedule, acsv => acsv.CourseSectionId, scss => scss.CourseSectionId, (acsv, scss) => new { acsv, scss }).AsEnumerable().Where(c => c.acsv.TenantId == staffScheduleViewModel.TenantId && c.acsv.SchoolId == staffScheduleViewModel.SchoolId && c.scss.StaffId == staff.StaffId && ((c.acsv.FixedPeriodId != null && ((c.acsv.FixedPeriodId == courseSectionData.FixedPeriodId && (Regex.IsMatch(courseSectionData.FixedDays.ToLower(), c.acsv.FixedDays.ToLower(), RegexOptions.IgnoreCase))) || (c.acsv.FixedPeriodId == courseSectionData.VarPeriodId && c.acsv.FixedDays.ToLower().Contains(courseSectionData.VarDay.ToLower())) || (c.acsv.FixedPeriodId == courseSectionData.CalPeriodId && c.acsv.FixedDays.ToLower().Contains(courseSectionData.CalDay.ToLower())))) || (c.acsv.VarPeriodId != null && ((c.acsv.VarPeriodId == courseSectionData.FixedPeriodId && courseSectionData.FixedDays.ToLower().Contains(c.acsv.VarDay.ToLower())) || (c.acsv.VarPeriodId == courseSectionData.VarPeriodId && c.acsv.VarDay.ToLower() == courseSectionData.VarDay.ToLower()) || (c.acsv.VarPeriodId == courseSectionData.CalPeriodId && c.acsv.VarDay.ToLower() == courseSectionData.CalDay.ToLower()))) || (c.acsv.CalPeriodId != null && ((c.acsv.CalPeriodId == courseSectionData.FixedPeriodId && courseSectionData.FixedDays.ToLower().Contains(c.acsv.CalDay.ToLower())) || (c.acsv.CalPeriodId == courseSectionData.VarPeriodId && c.acsv.CalDay.ToLower() == courseSectionData.VarDay.ToLower()) || (c.acsv.CalPeriodId == courseSectionData.CalPeriodId && c.acsv.CalDay.ToLower() == courseSectionData.CalDay.ToLower())))) && c.acsv.DurationEndDate > courseSectionData.DurationStartDate).ToList(); if (checkForConflict.Count() > 0) { staffScheduleViewModel._failure = true; //staffScheduleViewModel._message = "Period and Room Conflict"; staffScheduleViewModel._message = "Conflict Detected"; staff.ConflictStaff = true; courseSection.ConflictCourseSection = true; } } } } } } } else { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = "Select CourseSection For CourseSection Schedule"; return(staffScheduleViewModel); } } } else { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = "Select Staff For CourseSection Schedule"; return(staffScheduleViewModel); } } catch (Exception es) { staffScheduleViewModel._failure = true; staffScheduleViewModel._message = es.Message; } return(staffScheduleViewModel); }