Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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)));
        }