public async Task <IActionResult> AddGeoObjectAsync([FromBody] AddGeoObjectRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var response = await _geoObjectsService.AddNode(request); return(Created(Url.RouteUrl(new { response.Id }), response)); } catch (InvalidDataException ex) { return(BadRequest(ex.Message)); } }
public async Task <GeoObjectResponse> AddNode(AddGeoObjectRequest obj) { if (obj.ParentId != null) { var parent = await _factory.CreateAsyncQueryable(_uow.GeoObjects.Query()) .FirstOrDefaultAsync(p => p.Id == obj.ParentId); if (parent == null) { throw new InvalidDataException("Ошибка при добавлении объекта. Родителя не существует."); } } var geoObj = _mapper.Map <AddGeoObjectRequest, GeoObject>(obj); _uow.GeoObjects.Add(geoObj); await _uow.CommitAsync(); return(_mapper.Map <GeoObject, GeoObjectResponse>(geoObj)); }