public IHttpActionResult PutEnrollment(int id, [FromBody] EnrollmentBindModel enrollmentBindmodel) { var re = Request; var header = re.Headers; string h; try { h = header.GetValues("Authorization").First(); } catch (Exception) { throw new HttpResponseException(HttpStatusCode.Unauthorized); } TokenService bsu = new TokenService(new ModelStateWrapper(this.ModelState), unitOfWork); Token token = bsu.GetByName(h); if (!token.User.IsTeacher) { HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.NotImplemented); message.Content = new StringContent("You don't have permission for this activity!"); throw new HttpResponseException(message); } else { if (!EnrollmentExists(id)) { Enrollment enrollment = new Enrollment(); enrollment.Id = id; enrollment.UpdatedAt = DateTime.Now; enrollment.CourseId = enrollmentBindmodel.CourseId; enrollment.UserId = token.UserId; try { service.Update(enrollment); service.Save(); } catch { if (!EnrollmentExists(id)) { return(NotFound()); } else { throw; } } return(Ok(enrollmentBindmodel)); } else { HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.NotImplemented); message.Content = new StringContent("The enrollment doesn't exist!"); throw new HttpResponseException(message); } } }
public IHttpActionResult PostEnrollment([FromBody] EnrollmentBindModel enrollmentBindModel) { var re = Request; var header = re.Headers; string h; try { h = header.GetValues("Authorization").First(); } catch (Exception) { throw new HttpResponseException(HttpStatusCode.Unauthorized); } TokenService bsu = new TokenService(new ModelStateWrapper(this.ModelState), unitOfWork); Token token = bsu.GetByName(h); int userCount = 0; BaseService <Enrollment> enrollmentService = new BaseService <Enrollment>(new ModelStateWrapper(this.ModelState), unitOfWork); BaseService <Course> courseService = new BaseService <Course>(new ModelStateWrapper(this.ModelState), unitOfWork); Course course = courseService.GetById(enrollmentBindModel.CourseId); List <Enrollment> enrollments = enrollmentService.GetAll(e => e.CourseId == enrollmentBindModel.CourseId); List <Enrollment> userEnrollments = enrollmentService.GetAll(e => e.UserId == token.UserId); foreach (var item in enrollments) { userCount++; } bool flag = true; foreach (var item in userEnrollments) { if (item.UserId == token.UserId && item.CourseId == enrollmentBindModel.CourseId) { flag = false; } } if (flag == false) { HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.NotImplemented); message.Content = new StringContent("You have already enrolled for this course!"); throw new HttpResponseException(message); } else { if (course.Capacity > userCount) { Enrollment enrollment = new Enrollment { CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now, UserId = token.UserId, CourseId = enrollmentBindModel.CourseId }; PostEnrollmentBindModel allEnrollmentsBindModel = new PostEnrollmentBindModel { CourseId = enrollmentBindModel.CourseId, Grade = enrollment.Grade, CreatedAt = enrollment.CreatedAt }; enrollmentService.Create(enrollment); enrollmentService.Save(); return(Ok(allEnrollmentsBindModel)); } else { HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.NotImplemented); message.Content = new StringContent("You can't enroll for this course, it is filled!"); throw new HttpResponseException(message); } } }