Exemple #1
0
        public ActionResult UpdateCourseForAuthor(Guid authorId, Guid courseId, courseUpdateDto course)
        {
            if (!_coursesLibraryRepository.AuthorExists(authorId))
            {
                return(NotFound());
            }
            var courseForAuthorFromRepo = _coursesLibraryRepository.GetCourse(authorId, courseId);

            if (courseForAuthorFromRepo == null)
            {
                var courseEntity = _mapper.Map <Entities.Course>(course);
                courseEntity.Id = courseId;
                _coursesLibraryRepository.AddCourse(authorId, courseEntity);
                _coursesLibraryRepository.Save();
                var courseToReturn = _mapper.Map <CourseDto>(courseEntity);
                return(CreatedAtRoute(
                           "GetCourseForAuthor",
                           new { authorId, courseId = courseToReturn.Id },
                           courseToReturn
                           ));
            }
            _mapper.Map(course, courseForAuthorFromRepo);
            _coursesLibraryRepository.UpdateCourse(courseForAuthorFromRepo);
            _coursesLibraryRepository.Save();

            return(NoContent());
        }
Exemple #2
0
        public ActionResult PartiallyUpdateCourseForAuthor(
            Guid authorId,
            Guid courseId,
            JsonPatchDocument <courseUpdateDto> patchDocument
            )
        {
            if (!_coursesLibraryRepository.AuthorExists(authorId))
            {
                return(NotFound());
            }

            var courseForAuthorFromRepo = _coursesLibraryRepository.GetCourse(authorId, courseId);

            if (courseForAuthorFromRepo == null)
            {
                var courseDto = new courseUpdateDto();

                patchDocument.ApplyTo(courseDto, ModelState);

                if (!TryValidateModel(courseDto))
                {
                    return(ValidationProblem(ModelState));
                }

                var courseToAdd = _mapper.Map <Entities.Course>(courseDto);

                courseToAdd.Id = courseId;

                _coursesLibraryRepository.AddCourse(authorId, courseToAdd);

                _coursesLibraryRepository.Save();

                var courseToReturn = _mapper.Map <CourseDto>(courseToAdd);

                return(CreatedAtRoute("GetCourseForAuthor", new { authorId, courseId = courseToReturn.Id }, courseToReturn));
            }
            var courseToPatch = _mapper.Map <courseUpdateDto>(courseForAuthorFromRepo);

            patchDocument.ApplyTo(courseToPatch, ModelState); // add modelstate to return 400 - client mistake statusCode not server mistake

            // check if there are any problems with input
            if (!TryValidateModel(courseToPatch))
            {
                return(ValidationProblem(ModelState));
            }

            _mapper.Map(courseToPatch, courseForAuthorFromRepo);

            _coursesLibraryRepository.UpdateCourse(courseForAuthorFromRepo);

            _coursesLibraryRepository.Save();

            return(NoContent());
        }