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())); }
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())); }
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); }