Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
        }