public ActionResult <object> Save([FromBody] Domain.Form.StudentTermReviewForm review) { try { Init(); StringBuilder sbError = new StringBuilder(""); if (!ModelState.IsValid) { Response.StatusCode = 400; return("Failed getting review"); } else { var isSaved = _studentTermReviewService.Save(review, ref sbError); if (!isSaved) { Response.StatusCode = 400; return("review save failed " + sbError.ToString()); } else { return((string)"review saved successfully"); } } } catch (Exception er) { return(Error(er)); } }
public bool Save(Domain.Form.StudentTermReviewForm studentReview, ref StringBuilder sbError) { bool dbFlag = false; if (studentReview == null) { sbError.Append("Fill in all fields"); return(false); } var student = _uofRepository.StudentRepository.GetStudentByRegNumber(studentReview.RegNumber, _user.SchoolID, ref dbFlag); if (studentReview == null) { sbError.Append($"student reg number [{studentReview.RegNumber}] does not exist"); return(false); } var enrollment = _uofRepository.StudentTermRegisterRepository.GetByStudentIDAndTermId((Guid)student.StudentID, _user.TermID, ref dbFlag); if (enrollment == null) { sbError.Append($"student reg number [{studentReview.RegNumber}] can only be reviewed when he is enrolled"); return(false); } var studentEnrollment = _uofRepository.StudentTermRegisterRepository.GetByID((Guid)enrollment.StudentTermRegisterID, ref dbFlag); if (studentEnrollment == null) { sbError.Append("student was not registered for this term"); return(false); } var studentObj = _uofRepository.StudentRepository.GetStudentById(studentEnrollment.StudentID, ref dbFlag); if (studentObj == null) { return(false); } if (studentObj.SchoolID != _user.SchoolID) { sbError.Append("student does not belong to school"); return(false); } var teacherReviews = _uofRepository.StudentTermReviewRepository.GetListByTeacherReviewsByYearAndMonth(_user.TeacherID, DateTime.Now, ref dbFlag); if (teacherReviews != null) { var dailyTermLimit = teacherReviews.Count(); if (dailyTermLimit >= 500) { sbError.Append("Teacher has reached limit"); } } var studentListReviews = _uofRepository.StudentTermReviewRepository.GetListByStudentTermRegisterID((Guid)enrollment.StudentTermRegisterID, ref dbFlag); if (studentListReviews != null) { var hasTeacherSubmittedForToday = studentListReviews.Where(c => c.TeacherID == _user.TeacherID) .Where(c => c.CreatedDate.Year == DateTime.Now.Year) .Where(c => c.CreatedDate.Month == DateTime.Now.Month) .Where(c => c.CreatedDate.Day == DateTime.Now.Day) .Count(); if (hasTeacherSubmittedForToday >= 2) { sbError.Append("you can not add more than two reviews for a day for the particular student"); return(false); } } if (studentReview.Star5 < 1 || studentReview.Star5 > 5) { sbError.Append("review star is in bad format"); return(false); } return(_uofRepository.StudentTermReviewRepository.Save(new StudentTermReview() { StudentTermRegisterID = (Guid)enrollment.StudentTermRegisterID, TeacherID = _user.TeacherID, IsReviewGood = studentReview.IsReviewGood, Body = studentReview.Body, CreatedDate = DateTime.Now, Star5 = studentReview.Star5 }, _user.Username, ref dbFlag)); }