Beispiel #1
0
        public IActionResult UpdateStudentDetail(Guid studentId, StudentDetailForUpdateDto studentDetail)
        {
            if (!_repository.StudentExists(studentId))
            {
                return(NotFound());
            }

            var studentDetailToUpdate = _repository.GetStudentDetail(studentId);

            if (studentDetailToUpdate == null)
            {
                var studentDetailToAdd = _mapper.Map <StudentDetail>(studentDetail);
                studentDetailToAdd.StudentId = studentId;
                _repository.AddStudentDetail(studentId, studentDetailToAdd);
                _repository.Save();

                var entityToReturn = _mapper.Map <StudentDetailDto>(studentDetailToAdd);

                return(CreatedAtRoute("GetDetail", new { studentId = entityToReturn.StudentId }, entityToReturn));
            }

            _mapper.Map(studentDetail, studentDetailToUpdate);
            _repository.UpdateStudentDetail(studentId, studentDetailToUpdate);
            _repository.Save();
            return(NoContent());
        }
Beispiel #2
0
        public IActionResult PartiallyUpdateStudentDetail(Guid studentId, JsonPatchDocument <StudentDetailForUpdateDto> patchDocument)
        {
            if (!_repository.StudentExists(studentId))
            {
                return(NotFound());
            }
            var studentDetailToUpdate = _repository.GetStudentDetail(studentId);

            if (studentDetailToUpdate == null)
            {
                var studentDetailDto = new StudentDetailForUpdateDto();
                patchDocument.ApplyTo(studentDetailDto, ModelState);

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

                var studentDetailToAdd = _mapper.Map <StudentDetail>(studentDetailDto);
                studentDetailToAdd.StudentId = studentId;

                _repository.AddStudentDetail(studentId, studentDetailToAdd);
                _repository.Save();

                var entityToReturn = _mapper.Map <StudentDto>(studentDetailToAdd);

                return(CreatedAtRoute("GetDetail", new { studentId = entityToReturn.Id }, entityToReturn));
            }

            var studentDetailToPatch = _mapper.Map <StudentDetailForUpdateDto>(studentDetailToUpdate);

            // add validation
            patchDocument.ApplyTo(studentDetailToPatch, ModelState);

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

            _mapper.Map(studentDetailToPatch, studentDetailToUpdate);
            _repository.UpdateStudentDetail(studentId, studentDetailToUpdate);
            _repository.Save();
            return(NoContent());
        }