public async Task <IHttpActionResult> Put(string username, int id, AddBookmarkViewModel viewModel) { if (ModelState.IsValid) { Bookmark bookmark = _dbContext.Bookmarks.SingleOrDefault(x => x.BookmarkId == id); if (bookmark != null) { bookmark.Description = viewModel.Description; bookmark.Url = viewModel.Url; bookmark.Time = DateTime.Now; var user = await UserManager.FindByNameAsync(username); if (viewModel.Tags.Count > 0) { bookmark.Tags = new List <Tag>(); foreach (var tag in viewModel.Tags) { Tag dbTag = _dbContext.Tags.FirstOrDefault(x => x.UserId == user.Id && x.Name == tag.Name); if (dbTag != null) { bookmark.Tags.Add(dbTag); } } } try { await _dbContext.SaveChangesAsync(); } catch (Exception ex) { throw; } return(Ok()); } else { return(NotFound()); } } else { return(BadRequest(ModelState)); } }
public async Task <IHttpActionResult> Post(string username, AddBookmarkViewModel viewModel) { if (ModelState.IsValid) { Bookmark bookmark = new Bookmark(); bookmark.Description = viewModel.Description; bookmark.Url = viewModel.Url; bookmark.Time = DateTime.Now; var user = await UserManager.FindByNameAsync(username); if (viewModel.Tags.Count > 0) { bookmark.Tags = new List <Tag>(); foreach (var tag in viewModel.Tags) { Tag dbTag = _dbContext.Tags.FirstOrDefault(x => x.UserId == user.Id && x.Name == tag.Name); if (dbTag != null) { bookmark.Tags.Add(dbTag); } } } _dbContext.Bookmarks.Add(bookmark); try { await _dbContext.SaveChangesAsync(); } catch (Exception ex) { throw; } string absolute = RequestContext.Url.Request.RequestUri.AbsoluteUri; string nextUrl = absolute.Split('?')[0]; return(Created(nextUrl + "/" + bookmark.BookmarkId, string.Empty)); } else { return(BadRequest(ModelState)); } }