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()); }
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()); }