public ActionResult AssessmentStudents(AssignStudentsModel model, FormCollection frm, bool continueSelection) { if (!_permissionService.Authorize("ManageAssessment")) { return(AccessDeniedView()); } if (continueSelection) { model.AvailableClassDivisions = _smsService.GetAllClassRoomDivisions().Select(x => new SelectListItem() { Text = "Class-" + _smsService.GetClassById(x.ClassId.Value).Name + ", Division-" + _smsService.GetDivisionById(x.DivisionId.Value).Name, Value = x.Id.ToString(), Selected = model.ClassDivisionId == x.Id }).OrderBy(x => x.Text).ToList(); // Apply Class Room Division Search var assessment = _smsService.GetAssessmentById(model.AssessmentId); if (assessment == null) { throw new ArgumentNullException("id"); } model.Assessment = assessment.Name; model.AssessmentId = assessment.Id; model.DifficultyLevel = assessment.DifficultyLevelId > 0 ? EnumExtensions.GetDescriptionByValue <DifficultyLevel>(assessment.DifficultyLevelId) : ""; model.IsTimeBound = assessment.IsTimeBound; model.MaxMarks = assessment.MaxMarks; model.PassingMarks = assessment.PassingMarks; model.StringStartTime = assessment.StartTime.Value.ToString("MMMM dd, yyyy HH:mm tt"); model.StringEndTime = assessment.EndTime.Value.ToString("MMMM dd, yyyy HH:mm tt"); model.Subject = assessment.SubjectId.HasValue && assessment.SubjectId.Value > 0 ? _smsService.GetSubjectById(assessment.SubjectId.Value).Name : "-"; model.Url = assessment.Url; model.Duration = assessment.DurationInMinutes; model.StartTime = assessment.StartTime.Value; model.EndTime = assessment.EndTime.Value; var studentsAssociated = _smsService.GetStudentsByAssessmentId(model.AssessmentId); // Subjects var pSubjects = new List <int>(); if (assessment.SubjectId.HasValue) { pSubjects.Add(assessment.SubjectId.Value); } var allstudents = _smsService.SearchStudents(classid: model.ClassDivisionId); var allHolidays = _smsService.GetAllHolidaysByAcadmicYear(assessment.AcadmicYearId); model.Holidays = allHolidays.Select(x => x.Date.Value.ToString("MMMM dd, yyyy")).ToArray(); model.List.Clear(); foreach (var q in allstudents) { model.List.Add(new AssessmentStudentModel() { AssessmentId = model.AssessmentId, Assessment = assessment.Name, AvailableGradeSystem = (from GradeSystem d in Enum.GetValues(typeof(GradeSystem)) select new SelectListItem { Text = EnumExtensions.GetDescriptionByValue <GradeSystem>(Convert.ToInt32(d)), Value = Convert.ToInt32(d).ToString(), Selected = false }).ToList(), AvailableResultStatuses = (from ResultStatus d in Enum.GetValues(typeof(ResultStatus)) select new SelectListItem { Text = EnumExtensions.GetDescriptionByValue <ResultStatus>(Convert.ToInt32(d)), Value = Convert.ToInt32(d).ToString(), Selected = false }).ToList(), Id = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Id : 0), CertificateHtml = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).CertificateHtml : ""), GradeSystemId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).GradeSystemId : 0), IsCompleted = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).IsCompleted : false), StudentId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).StudentId : q.Id), IsActive = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).IsActive : false), IsExpired = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).IsExpired : false), MarksObtained = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).MarksObtained : 0), ResultStatusId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).ResultStatusId : 0), Url = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Url : ""), UserId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).UserId : q.UserId), IsChecked = (studentsAssociated.Any(x => x.StudentId == q.Id) ? true : false), StartOn = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).StartOn : assessment.StartTime), EndOn = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).EndOn : assessment.EndTime), Student = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Student.FName + (!string.IsNullOrEmpty(studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Student.LName) ? (" " + studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Student.LName) : "") : _smsService.GetStudentById(q.Id).FName + (!string.IsNullOrEmpty(_smsService.GetStudentById(q.Id).LName) ? (" " + _smsService.GetStudentById(q.Id).LName) : "")) }); } return(View(model)); } else { if (ModelState.IsValid && model.SelectedStudent != null && model.SelectedStudent.Length > 0) { var alreadyAddedStudents = _smsService.GetStudentsByAssessmentId(model.AssessmentId); foreach (var id in model.SelectedStudent) { var aStudent = new AssessmentStudent(); aStudent.StudentId = id; aStudent.AssessmentId = model.AssessmentId; aStudent.StartOn = Convert.ToDateTime(frm["StartOn_" + id].ToString()); aStudent.EndOn = Convert.ToDateTime(frm["EndOn_" + id].ToString()); aStudent.GradeSystemId = (frm["GradeSystemId_" + id] != null && !string.IsNullOrEmpty(frm["GradeSystemId_" + id].ToString())) ? Convert.ToInt32(frm["GradeSystemId_" + id].ToString()) : 0; aStudent.ResultStatusId = (frm["ResultStatusId_" + id] != null && !string.IsNullOrEmpty(frm["ResultStatusId_" + id].ToString())) ? Convert.ToInt32(frm["ResultStatusId_" + id].ToString()) : 0; aStudent.UserId = _userContext.CurrentUser.Id; aStudent.IsCompleted = (frm["IsCompleted_" + id] != null && !string.IsNullOrEmpty(frm["IsCompleted_" + id].ToString())) ? Convert.ToBoolean(frm["IsCompleted_" + id].ToString()) : false; aStudent.IsExpired = (frm["IsExpired_" + id] != null && !string.IsNullOrEmpty(frm["IsExpired_" + id].ToString())) ? Convert.ToBoolean(frm["IsExpired_" + id].ToString()) : false; aStudent.Url = (frm["Url_" + id] != null && !string.IsNullOrEmpty(frm["Url_" + id].ToString())) ? (_urlHelper.GetLocation(false) + frm["Url_" + id].ToString()) : ""; if (alreadyAddedStudents.Any(x => x.StudentId == id)) { var assessmentStudent = alreadyAddedStudents.FirstOrDefault(x => x.StudentId == id); assessmentStudent.StartOn = aStudent.StartOn; assessmentStudent.EndOn = aStudent.EndOn; assessmentStudent.GradeSystemId = aStudent.GradeSystemId; assessmentStudent.ResultStatusId = aStudent.ResultStatusId; assessmentStudent.UserId = aStudent.UserId; assessmentStudent.IsCompleted = aStudent.IsCompleted; assessmentStudent.IsExpired = aStudent.IsExpired; assessmentStudent.ModifiedOn = DateTime.Now; _smsService.UpdateStudentAssessment(assessmentStudent); } else { aStudent.CreatedOn = aStudent.ModifiedOn = DateTime.Now; aStudent.UserId = _userContext.CurrentUser.Id; _smsService.InsertStudentAssessment(aStudent); } } if (alreadyAddedStudents.Count > 0) { var removeStudents = alreadyAddedStudents.Where(y => model.SelectedStudent.Any(z => z != y.StudentId)).ToList(); foreach (var q in removeStudents) { _smsService.DeleteStudentAssessment(q.StudentId); } } } SuccessNotification("Assessment updated successfully."); } return(RedirectToAction("AssessmentStudents", new { id = model.AssessmentId })); }
public ActionResult AssessmentStudents(int id) { if (!_permissionService.Authorize("ManageAssessment")) { return(AccessDeniedView()); } if (id == 0) { throw new ArgumentNullException("id"); } var assessment = _smsService.GetAssessmentById(id); if (assessment == null) { throw new ArgumentNullException("id"); } var model = new AssignStudentsModel(); model.Assessment = assessment.Name; model.AssessmentId = assessment.Id; model.DifficultyLevel = assessment.DifficultyLevelId > 0 ? EnumExtensions.GetDescriptionByValue <DifficultyLevel>(assessment.DifficultyLevelId) : ""; model.IsTimeBound = assessment.IsTimeBound; model.MaxMarks = assessment.MaxMarks; model.PassingMarks = assessment.PassingMarks; model.StringStartTime = assessment.StartTime.Value.ToString("MMMM dd, yyyy HH:mm tt"); model.StringEndTime = assessment.EndTime.Value.ToString("MMMM dd, yyyy HH:mm tt"); model.Subject = assessment.SubjectId.HasValue && assessment.SubjectId.Value > 0 ? _smsService.GetSubjectById(assessment.SubjectId.Value).Name : "-"; model.Url = assessment.Url; model.Duration = assessment.DurationInMinutes; model.StartTime = assessment.StartTime.Value; model.EndTime = assessment.EndTime.Value; var allHolidays = _smsService.GetAllHolidaysByAcadmicYear(assessment.AcadmicYearId); model.Holidays = allHolidays.Select(x => x.Date.Value.ToString("MMMM dd, yyyy")).ToArray(); var studentsAssociated = _smsService.GetStudentsByAssessmentId(id); // Subjects var pSubjects = new List <int>(); if (assessment.SubjectId.HasValue) { pSubjects.Add(assessment.SubjectId.Value); } var allstudents = _smsService.SearchStudents(); foreach (var q in allstudents) { model.List.Add(new AssessmentStudentModel() { AssessmentId = id, Assessment = assessment.Name, AvailableGradeSystem = (from GradeSystem d in Enum.GetValues(typeof(GradeSystem)) select new SelectListItem { Text = EnumExtensions.GetDescriptionByValue <GradeSystem>(Convert.ToInt32(d)), Value = Convert.ToInt32(d).ToString(), Selected = false }).ToList(), AvailableResultStatuses = (from ResultStatus d in Enum.GetValues(typeof(ResultStatus)) select new SelectListItem { Text = EnumExtensions.GetDescriptionByValue <ResultStatus>(Convert.ToInt32(d)), Value = Convert.ToInt32(d).ToString(), Selected = false }).ToList(), Id = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Id : 0), CertificateHtml = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).CertificateHtml : ""), GradeSystemId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).GradeSystemId : 0), IsCompleted = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).IsCompleted : false), StudentId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).StudentId : q.Id), IsActive = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).IsActive : false), IsExpired = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).IsExpired : false), MarksObtained = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).MarksObtained : 0), ResultStatusId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).ResultStatusId : 0), Url = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Url : ""), UserId = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).UserId : q.UserId), IsChecked = (studentsAssociated.Any(x => x.StudentId == q.Id) ? true : false), StartOn = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).StartOn : assessment.StartTime), EndOn = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).EndOn : assessment.EndTime), Student = (studentsAssociated.Any(x => x.StudentId == q.Id) ? studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Student.FName + (!string.IsNullOrEmpty(studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Student.LName) ? (" " + studentsAssociated.FirstOrDefault(x => x.StudentId == q.Id).Student.LName) : "") : _smsService.GetStudentById(q.Id).FName + (!string.IsNullOrEmpty(_smsService.GetStudentById(q.Id).LName) ? (" " + _smsService.GetStudentById(q.Id).LName) : "")) }); } model.AvailableClassDivisions = _smsService.GetAllClassRoomDivisions().Select(x => new SelectListItem() { Text = "Class-" + _smsService.GetClassById(x.ClassId.Value).Name + ", Division-" + _smsService.GetDivisionById(x.DivisionId.Value).Name, Value = x.Id.ToString(), Selected = model.ClassDivisionId == x.Id }).OrderBy(x => x.Text).ToList(); return(View(model)); }