public IActionResult UpdatePerformance([FromRoute] Guid directorId, Guid performanceId, PerformanceForUpdateDto performanceToBeUpdated) { if (!_unitOfWork.Directors.DirectorExists(directorId)) { return(NotFound()); } var performanceFromDb = _unitOfWork.Performances.GetPerformance(performanceId); if (performanceFromDb == null) { return(UpsertPerformance(directorId, performanceId, performanceToBeUpdated)); } _mapper.Map(performanceToBeUpdated, performanceFromDb); SavePerformanceInDb(directorId, performanceFromDb); return(NoContent()); }
private IActionResult UpsertPerformance(Guid directorId, Guid performanceId, PerformanceForUpdateDto performanceToBeUpdated) { var performanceToAdd = _mapper.Map <Performance>(performanceToBeUpdated); if (_unitOfWork.Performances.PerformanceExists(directorId, performanceToAdd)) { return(Conflict(new { message = $"This Performance already exists in the database!" })); } performanceToAdd.Guid = performanceId; SavePerformanceInDb(directorId, performanceToAdd); var performanceToReturn = _mapper.Map <PerformanceDto>( _unitOfWork.Performances.GetPerformance(performanceToAdd.Guid)); return(CreatedAtRoute("GetPerformanceForDirector", new { directorId, performanceId = performanceToReturn.Id }, performanceToReturn)); }
public IActionResult PartiallyUpdatePerformance(Guid directorId, Guid performanceId, JsonPatchDocument <PerformanceForUpdateDto> patchDocument) { if (!_unitOfWork.Directors.DirectorExists(directorId)) { return(NotFound()); } var performanceFromDb = _unitOfWork.Performances.GetPerformance(performanceId); if (performanceFromDb == null) { var performanceDto = new PerformanceForUpdateDto(); patchDocument.ApplyTo(performanceDto, ModelState); if (!TryValidateModel(performanceDto)) { return(ValidationProblem(ModelState)); } return(UpsertPerformance(directorId, performanceId, performanceDto)); } var performanceToPatch = _mapper.Map <PerformanceForUpdateDto>(performanceFromDb); patchDocument.ApplyTo(performanceToPatch, ModelState); if (!TryValidateModel(performanceToPatch)) { return(ValidationProblem(ModelState)); } _mapper.Map(performanceToPatch, performanceFromDb); SavePerformanceInDb(directorId, performanceFromDb); return(NoContent()); }