public async Task <IActionResult> Edit(string bookmarkId) { Bookmark bookmark = await _context.Bookmarks.FirstOrDefaultAsync(b => b.bookmarkId == bookmarkId); var tagList = (from tb in _context.TagBookmarks from t in _context.Tags where tb.bookmarkId == bookmarkId && tb.tagId == t.tagId && tb.userId == _userManager.GetUserId(User) select t.tag).ToList(); string tags; if (tagList.Any()) { tags = tagList.Aggregate((acc, tag) => acc + "," + tag); } else { tags = ""; } var name_pv = (from ub in _context.UserBookmarks where ub.bookmarkId == bookmarkId && ub.userId == _userManager.GetUserId(User) select new{ name = ub.userDefinedName, pv = ub.isPrivate }).FirstOrDefault(); var editModelView = new EditBookmarkViewModel { url = bookmark.urlLink, tags = tags, name = name_pv.name, bookmarkId = bookmarkId, userName = _userManager.GetUserName(User), isPrivate = name_pv.pv }; return(View(editModelView)); }
public async Task <IActionResult> Edit(EditBookmarkViewModel editBookmark) { //1 verificar se o nome mudou e alterá-lo (salvar a bookmark após isso) var userBookmark = (from ub in _context.UserBookmarks where ub.bookmarkId == editBookmark.bookmarkId && ub.userId == _userManager.GetUserId(User) select ub).FirstOrDefault(); if (userBookmark == null) { return(NotFound()); } if (userBookmark.userDefinedName != editBookmark.name || userBookmark.isPrivate != editBookmark.isPrivate) { userBookmark.userDefinedName = editBookmark.name; userBookmark.isPrivate = editBookmark.isPrivate; _context.UserBookmarks.Update(userBookmark); await _context.SaveChangesAsync(); } var tagAssoc = (from tb in _context.TagBookmarks where tb.bookmarkId == editBookmark.bookmarkId && tb.userId == _userManager.GetUserId(User) select tb).ToList(); _context.TagBookmarks.RemoveRange(tagAssoc); await _context.SaveChangesAsync(); var newTagBookmarks = new List <TagBookmark>(); var tags = editBookmark.tags.Split(','); if (tags.Length > 0) { foreach (string tag in tags) { var checkTag = (from t in _context.Tags where t.tag == tag select t).FirstOrDefault(); string tagId; if (checkTag != null) { tagId = checkTag.tagId; } else { Tag newTag = new Tag { tag = tag }; _context.Tags.Add(newTag); await _context.SaveChangesAsync(); tagId = (from t in _context.Tags where t.tag == tag select t.tagId).First(); } TagBookmark newTagBookmark = new TagBookmark { userId = _userManager.GetUserId(User), bookmarkId = editBookmark.bookmarkId, tagId = tagId }; newTagBookmarks.Add(newTagBookmark); } await _context.TagBookmarks.AddRangeAsync(newTagBookmarks); await _context.SaveChangesAsync(); } return(RedirectToAction(nameof(Index))); }