public async Task <IActionResult> PartialUpdateWorkhoursAsync([FromRoute] Guid workhoursId, [FromBody] JsonPatchDocument <WorkhoursUpdateDto> workhoursToPartialUpdate) { if (workhoursToPartialUpdate == null) { return(BadRequest()); } var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId); if (foundWorkhours == null) { var workhoursToCreate = new WorkhoursUpdateDto(); // check if necessary workhoursToPartialUpdate.ApplyTo(workhoursToCreate, ModelState); var workhoursToAdd = Mapper.Map <Workhours>(workhoursToCreate); workhoursToAdd.Id = Guid.NewGuid(); _workhoursRepository.Create(workhoursToAdd); await _workhoursRepository.SaveChangesAsync(); var workhoursToReturn = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursToAdd.Id); return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn)); } // why map back and fourth? var workhoursToPatch = Mapper.Map <WorkhoursUpdateDto>(foundWorkhours); // check if necessary workhoursToPartialUpdate.ApplyTo(workhoursToPatch, ModelState); // why map back and fourth? Mapper.Map(workhoursToPatch, foundWorkhours); _workhoursRepository.Update(foundWorkhours); await _workhoursRepository.SaveChangesAsync(); // check if it returns "old" workhours before update. Else find and return? return(Ok(foundWorkhours)); //return NoContent(); }
public async Task <IActionResult> UpdateWorkhoursAsync( [FromRoute, SwaggerParameter("Id of workhours to update", Required = true)] Guid workhoursId, [FromBody, SwaggerParameter("Object with the updates", Required = true)] WorkhoursUpdateDto workhoursToUpdate, [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType) { var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId); if (foundWorkhours == null) { var workhoursToAdd = Mapper.Map <Workhours>(workhoursToUpdate); workhoursToAdd.Id = Guid.NewGuid(); _workhoursRepository.Create(workhoursToAdd); if (!await _workhoursRepository.SaveChangesAsync()) { throw new Exception("Failed to save an upserting"); } var workhoursToReturn = Mapper.Map <WorkhoursDto>(await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId)); if (mediaType == "application/vnd.AO.json+hateoas") { var shapedWorkhours = _controllerHelper.ShapeAndAddLinkToObject(workhoursToReturn, "Workhours", null); return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, shapedWorkhours)); } return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn)); } Mapper.Map(workhoursToUpdate, foundWorkhours); _workhoursRepository.Update(foundWorkhours); if (!await _workhoursRepository.SaveChangesAsync()) { throw new Exception("Failed to save on upserting"); } return(NoContent()); }
public async Task <IActionResult> UpdateWorkhoursAsync([FromRoute] Guid workhoursId, [FromBody] WorkhoursUpdateDto workhoursToUpdate) { var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId); if (foundWorkhours == null) { var workhoursToAdd = Mapper.Map <Workhours>(workhoursToUpdate); workhoursToAdd.Id = Guid.NewGuid(); _workhoursRepository.Create(workhoursToAdd); await _workhoursRepository.SaveChangesAsync(); var workhoursToReturn = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursToAdd.Id); return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn)); } Mapper.Map(workhoursToUpdate, foundWorkhours); _workhoursRepository.Update(foundWorkhours); await _workhoursRepository.SaveChangesAsync(); // check if it returns "old" workhours before update. Else find and return? return(Ok(foundWorkhours)); //return NoContent(); }
public async Task <IActionResult> PartialUpdateWorkhoursAsync( [FromRoute, SwaggerParameter("Id of workhours to partially update", Required = true)] Guid workhoursId, [FromBody, SwaggerParameter("Json patch operations to perform", Required = true)] JsonPatchDocument <WorkhoursUpdateDto> jsonPatchDocument, [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType) { var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId); if (foundWorkhours == null) { var workhoursToCreate = new WorkhoursUpdateDto(); jsonPatchDocument.ApplyTo(workhoursToCreate, ModelState); if (!ModelState.IsValid) { throw new Exception("Invalid model state"); } var workhoursToAdd = Mapper.Map <Workhours>(workhoursToCreate); workhoursToAdd.Id = Guid.NewGuid(); _workhoursRepository.Create(workhoursToAdd); if (!await _workhoursRepository.SaveChangesAsync()) { throw new Exception("Failed to save on upserting"); } //var workhoursToReturn = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursToAdd.Id); var workhoursToReturn = Mapper.Map <WorkhoursDto>(workhoursToAdd); if (mediaType == "application/vnd.AO.json+hateoas") { var shapedWorkhours = _controllerHelper.ShapeAndAddLinkToObject(workhoursToReturn, "Workhours", null); return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, shapedWorkhours)); } return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn)); } // why map back and fourth? var workhoursToPatch = Mapper.Map <WorkhoursUpdateDto>(foundWorkhours); // check if necessary jsonPatchDocument.ApplyTo(workhoursToPatch, ModelState); if (!ModelState.IsValid) { throw new Exception("Invalid model state"); } // why map back and fourth? Mapper.Map(workhoursToPatch, foundWorkhours); _workhoursRepository.Update(foundWorkhours); if (!await _workhoursRepository.SaveChangesAsync()) { throw new Exception("Failed to save on upserting"); } return(NoContent()); }