Example #1
0
        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));
        }