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