public IActionResult PartiallyUpdatePointOfInterest(int cityId, int id, [FromBody] JsonPatchDocument <PointOfInterestForStuffDto> patchDoc) { var city = CitiesDataStore.Current.Cities.FirstOrDefault(c => c.Id == cityId); if (city == null) { return(NotFound()); } var pointOfInterest = city.PointsOfInterest.FirstOrDefault(p => p.Id == id); if (pointOfInterest == null) { return(NotFound()); } var finalPointOfInterest = new PointOfInterestForStuffDto() { Name = pointOfInterest.Name, Description = pointOfInterest.Description }; patchDoc.ApplyTo(finalPointOfInterest); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } return(NoContent()); }
public IActionResult CreatePointOfInterest(int cityId, [FromBody] PointOfInterestForStuffDto pointOfInterest) { var city = CitiesDataStore.Current.Cities.FirstOrDefault(c => c.Id == cityId); if (city == null) { _logger.LogInformation($"City with id {cityId} is not found."); return(NotFound()); } var maxId = CitiesDataStore.Current.Cities.SelectMany(c => c.PointsOfInterest).Max(p => p.Id); var finalPointOfInterest = new PointOfInterestDto() { Id = ++maxId, Name = pointOfInterest.Name, Description = pointOfInterest.Description }; city.PointsOfInterest.Add(finalPointOfInterest); return(CreatedAtRoute("GetPointOfInterest", new { cityId, id = finalPointOfInterest.Id }, finalPointOfInterest)); }