예제 #1
0
        public async Task <IActionResult> PostObjectTag([FromBody] ObjectTagRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_context.Categories.Any(c => c.Id == request.Category))
            {
                return(BadRequest());
            }

            var objectTag = request.ToDataModel();

            _context.ObjectTags.Add(objectTag);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (ObjectTagExists(objectTag.Id))
                {
                    return(new StatusCodeResult(StatusCodes.Status409Conflict));
                }
                else
                {
                    throw;
                }
            }

            var response = await _context.IncludeObjectTagCategory().FirstOrDefaultAsync(c => c.Id == objectTag.Id);

            return(CreatedAtAction("GetObjectTag", new { id = objectTag.Id }, response.ToApiModel()));
        }
예제 #2
0
        public async Task <IActionResult> PutObjectTag([FromRoute] string id, [FromBody] ObjectTagRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (id != request.Id)
            {
                return(BadRequest());
            }

            var objectTag = await _context.IncludeObjectTagCategory().FirstOrDefaultAsync(m => m.Id == id);

            if (objectTag == null)
            {
                return(NotFound());
            }

            if (!_context.Categories.Any(c => c.Id == request.Category))
            {
                return(BadRequest());
            }

            objectTag = request.ToDataModel(objectTag);

            _context.Entry(objectTag).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ObjectTagExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            var response = await _context.IncludeObjectTagCategory().FirstOrDefaultAsync(c => c.Id == objectTag.Id);

            return(Ok(response.ToApiModel()));
        }
예제 #3
0
        public static ObjectTag ToDataModel(this ObjectTagRequest request, ObjectTag item = null)
        {
            if (item == null)
            {
                item = new ObjectTag()
                {
                    Id = Guid.NewGuid().ToString()
                };
            }
            else
            {
                item.Id = request.Id;
            }

            item.CategoryId       = request.Category;
            item.Description      = request.Description;
            item.IsBookingEnabled = request.BookingEnabled;
            item.Name             = request.Name;
            item.ObjectUri        = request.ObjectUri;
            item.OptionalUri      = request.OptionalUri;
            item.Place            = request.Place;
            return(item);
        }