public JsonResult GetTimeTable(long ID) { ResultInfo <TimeTableDetails> ResultInfo = new ResultInfo <TimeTableDetails>() { Status = false, Description = "Failed|Login", ErrorCode = 400, }; try { TimeTableDetails temp = new TimeTableDetails(); Hod obj = new Hod(); temp.WeekList = obj.GetAllWeekdays(); temp.PeriodList = obj.GetAllperiods(); temp.TimeTableList = obj.GetAllTimeTableList(ID); ResultInfo.Info = temp; if (ResultInfo.Info != null) { ResultInfo.Description = "Success| Get time table details"; ResultInfo.Status = true; ResultInfo.ErrorCode = 200; } } catch (Exception ex) { } return(Json(ResultInfo, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Method for updating a time table details /// </summary> /// <param name="addedTimeTable"></param> /// <param name="instituteId"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <dynamic> UpdateTimeTableAsync(AddTimeTableAc addedTimeTable, int instituteId, ApplicationUser currentUser) { #region Update time table TimeTable timeTable = await _imsDbContext.TimeTables.FirstAsync(x => x.Id == addedTimeTable.TimeTable.Id); timeTable.AcademicYearId = addedTimeTable.TimeTable.AcademicYearId; timeTable.ClassId = addedTimeTable.TimeTable.ClassId; timeTable.SectionId = addedTimeTable.TimeTable.SectionId; timeTable.InstituteId = instituteId; timeTable.PeriodCount = addedTimeTable.TimeTable.PeriodCount; timeTable.PeriodDuration = addedTimeTable.TimeTable.PeriodDuration; timeTable.PeriodStartTime = addedTimeTable.TimeTable.PeriodStartTime; timeTable.BreaksCount = addedTimeTable.TimeTable.BreaksCount; _imsDbContext.TimeTables.Update(timeTable); await _imsDbContext.SaveChangesAsync(); #endregion #region Update time table details List <TimeTableDetails> existingTimeTableDetails = await _imsDbContext.TimeTableDetails.Where(x => x.TimeTableId == timeTable.Id).ToListAsync(); List <TimeTableDetails> addedTimeTableDetailsList = new List <TimeTableDetails>(); foreach (TimeTableDetailsAc addedTimeTableDetailsAc in addedTimeTable.TimeTableSubjectDetailsList) { TimeTableDetails timeTableDetails = existingTimeTableDetails.FirstOrDefault(x => x.WeekDaysEnum == addedTimeTableDetailsAc.WeekDaysEnum && x.PeriodNumber == addedTimeTableDetailsAc.PeriodNumber); if (timeTableDetails == null) { addedTimeTableDetailsList.Add(new TimeTableDetails { SubjectId = addedTimeTableDetailsAc.SubjectId, TimeTableId = timeTable.Id, WeekDaysEnum = addedTimeTableDetailsAc.WeekDaysEnum, PeriodNumber = addedTimeTableDetailsAc.PeriodNumber }); } else { timeTableDetails.SubjectId = addedTimeTableDetailsAc.SubjectId; _imsDbContext.Update(timeTableDetails); } } if (addedTimeTableDetailsList.Count > 0) { _imsDbContext.TimeTableDetails.AddRange(addedTimeTableDetailsList); } await _imsDbContext.SaveChangesAsync(); #endregion #region Update time table break details List <TimeTableBreakDetails> existingTimeTableBreakDetails = await _imsDbContext.TimeTableBreakDetails.Where(x => x.TimeTableId == timeTable.Id).ToListAsync(); _imsDbContext.TimeTableBreakDetails.RemoveRange(existingTimeTableBreakDetails); List <TimeTableBreakDetails> timeTableBreakDetailsList = new List <TimeTableBreakDetails>(); foreach (TimeTableBreakDetailsAc timeTableBreakDetailsAc in addedTimeTable.TimeTableBreakDetailsList) { timeTableBreakDetailsList.Add(new TimeTableBreakDetails { TimeTableId = timeTable.Id, BreakAfterPeriod = timeTableBreakDetailsAc.BreakAfterPeriod, BreakDuration = timeTableBreakDetailsAc.BreakDuration }); } _imsDbContext.TimeTableBreakDetails.AddRange(timeTableBreakDetailsList); await _imsDbContext.SaveChangesAsync(); #endregion return(new { Message = "Time table updated successfully" }); }
/// <summary> /// Method for fetching the details of a time table based on class, section, institute and academic year /// </summary> /// <param name="classId"></param> /// <param name="sectionId"></param> /// <param name="academicYearId"></param> /// <param name="instituteId"></param> /// <returns></returns> public async Task <AddTimeTableAc> GetTimeTableDetailsAsync(int classId, int sectionId, int academicYearId, int instituteId) { AddTimeTableAc timeTableObj = new AddTimeTableAc(); TimeTable timeTable = await _imsDbContext.TimeTables.FirstOrDefaultAsync(x => x.ClassId == classId && x.SectionId == sectionId && x.AcademicYearId == academicYearId && x.InstituteId == instituteId); if (timeTable != null) { #region Set time table data TimeTableAc timeTableAc = new TimeTableAc { Id = timeTable.Id, AcademicYearId = timeTable.AcademicYearId, ClassId = timeTable.ClassId, SectionId = timeTable.SectionId, PeriodCount = timeTable.PeriodCount, PeriodDuration = timeTable.PeriodDuration, PeriodStartTime = timeTable.PeriodStartTime, BreaksCount = timeTable.BreaksCount }; timeTableObj.TimeTable = timeTableAc; #endregion #region Set time table break details timeTableObj.TimeTableBreakDetailsList = new List <TimeTableBreakDetailsAc>(); List <TimeTableBreakDetails> timeTableBreakDetailsList = await _imsDbContext.TimeTableBreakDetails .Where(x => x.TimeTableId == timeTable.Id).ToListAsync(); foreach (TimeTableBreakDetails timeTableBreakDetails in timeTableBreakDetailsList) { timeTableObj.TimeTableBreakDetailsList.Add(new TimeTableBreakDetailsAc { Id = timeTableBreakDetails.Id, TimeTableId = timeTableBreakDetails.TimeTableId, BreakAfterPeriod = timeTableBreakDetails.BreakAfterPeriod, BreakDuration = timeTableBreakDetails.BreakDuration }); } #endregion #region Set time table details timeTableObj.TimeTableSubjectDetailsList = new List <TimeTableDetailsAc>(); List <TimeTableDetails> timeTableDetailsList = await _imsDbContext.TimeTableDetails .Include(x => x.Subject) .Where(x => x.TimeTableId == timeTable.Id).ToListAsync(); List <WeekDaysEnumDetails> weekDaysEnumDetailsList = GetDaysOfWeek(instituteId); foreach (WeekDaysEnumDetails weekDaysEnumDetails in weekDaysEnumDetailsList) { TimeTableDetailsAc timeTableDetailsAc = new TimeTableDetailsAc { WeekDaysEnum = weekDaysEnumDetails.WeekDaysEnum, WeekDaysEnumString = weekDaysEnumDetails.WeekDaysEnumString }; timeTableDetailsAc.TimeTableWeekDaySubjectList = new List <TimeTableDetailsAc>(); int periodNo = 1; for (int i = 0; i < timeTableAc.PeriodCount + timeTableAc.BreaksCount; i++) { bool isBreakPeriod = CheckBreakPeriod(i, timeTableObj.TimeTableBreakDetailsList); TimeTableDetails timeTableDetails = null; if (!isBreakPeriod) { timeTableDetails = timeTableDetailsList.FirstOrDefault(x => x.PeriodNumber == periodNo && x.WeekDaysEnum == weekDaysEnumDetails.WeekDaysEnum); periodNo++; } timeTableDetailsAc.TimeTableWeekDaySubjectList.Add(new TimeTableDetailsAc { Id = (timeTableDetails == null) ? 0 : timeTableDetails.Id, PeriodNumber = (timeTableDetails == null) ? (i + 1) : timeTableDetails.PeriodNumber, SubjectId = (timeTableDetails == null) ? 0 : timeTableDetails.SubjectId, TimeTableId = (timeTableDetails == null) ? 0 : timeTableDetails.TimeTableId, WeekDaysEnum = (timeTableDetails == null) ? weekDaysEnumDetails.WeekDaysEnum : timeTableDetails.WeekDaysEnum, WeekDaysEnumString = (timeTableDetails == null) ? weekDaysEnumDetails.WeekDaysEnumString : EnumHelperService.GetDescription(timeTableDetails.WeekDaysEnum), SubjectName = timeTableDetails?.Subject?.Name, SubjectCode = timeTableDetails?.Subject?.Code, IsBreakPeriod = isBreakPeriod }); } timeTableObj.TimeTableSubjectDetailsList.Add(timeTableDetailsAc); } #endregion } return(timeTableObj); }