public IHttpActionResult PostTag(CreateDeleteTagModel tagModel) { // Validate user input string username = SessionUtilities.GetUserName(Request); if (!ModelState.IsValid) { return BadRequest(ModelState); } if (tagModel == null || db.Restaurants.Find(tagModel.RestaurantId) == null || (db.Restaurants.Count(r => r.Id == tagModel.RestaurantId && r.OwnerUserName.Equals(username)) <= 0) || (db.Tags.Count(t => t.TagName == tagModel.TagName && t.RestaurantId == tagModel.RestaurantId) > 0)) { return BadRequest(); } Tag tag = Mapper.Map<Tag>(tagModel); // Create the tag db.Tags.Add(tag); try { db.SaveChanges(); } catch (DbUpdateException) { return BadRequest("Unable to add tag to this restaurant"); } return CreatedAtRoute("DefaultApi", new { id = tag.Id }, Mapper.Map<DisplayTagModel>(tag)); }
public IHttpActionResult DeleteTag(CreateDeleteTagModel tagModel) { DisplayTagModel returnModel = new DisplayTagModel(); // Validate user input string username = SessionUtilities.GetUserName(Request); if (!ModelState.IsValid) { return BadRequest(ModelState); } Tag tag = db.Tags.Where(t => t.TagName == tagModel.TagName && t.RestaurantId == tagModel.RestaurantId).FirstOrDefault(); if (tag == null || db.Restaurants.Count(r => r.Id == tag.RestaurantId && r.OwnerUserName.Equals(username)) <= 0) { return NotFound(); } // Delete the tag from the database returnModel = Mapper.Map<DisplayTagModel>(tag); db.Tags.Remove(tag); db.SaveChanges(); return Ok(returnModel); }