示例#1
0
        internal void UpdateBookmark(UserBookmark userBookmark, IList <Tag> tags)
        {
            var tx = DbManager.BeginTransaction();

            try
            {
                var date = DateTime.UtcNow;
                userBookmark.UserBookmarkID =
                    DbManager.ExecuteScalar <long>(
                        new SqlInsert("bookmarking_userbookmark", true)
                        .InColumns("UserBookmarkID", "UserID", "DateAdded", "Name", "Description", "BookmarkID", "Raiting", "Tenant")
                        .Values(userBookmark.UserBookmarkID, GetCurrentUserId(), date, userBookmark.Name, userBookmark.Description, userBookmark.BookmarkID, 1, Tenant)
                        .Identity(0, 0L, true));

                DbManager.ExecuteNonQuery(
                    new SqlDelete("bookmarking_userbookmarktag")
                    .Where(Exp.Eq("UserBookmarkID", userBookmark.UserBookmarkID)
                           & Exp.Eq("Tenant", Tenant)));

                foreach (var tag in tags)
                {
                    tag.TagID = DbManager.ExecuteScalar <long>(
                        new SqlInsert("bookmarking_tag", true)
                        .InColumns("TagID", "Name", "Tenant")
                        .Values(tag.TagID, tag.Name, Tenant)
                        .Identity(0, 0L, true));

                    var ubt = new UserBookmarkTag {
                        UserBookmarkID = userBookmark.UserBookmarkID, TagID = tag.TagID
                    };

                    ubt.UserBookmarkTagID = DbManager.ExecuteScalar <long>(
                        new SqlInsert("bookmarking_userbookmarktag", true)
                        .InColumns("UserBookmarkID", "TagID", "Tenant")
                        .Values(ubt.UserBookmarkID, tag.TagID, Tenant)
                        .Identity(0, 0L, true));
                }
                tx.Commit();
            }
            catch (Exception)
            {
                tx.Rollback();
            }
        }
示例#2
0
        internal void UpdateBookmark(Bookmark bookmark, IList <Tag> tags)
        {
            UserBookmark userBookmark = null;
            var          tx           = DbManager.BeginTransaction();

            try
            {
                var date = Core.Tenants.TenantUtil.DateTimeToUtc(bookmark.Date);

                bookmark.ID = DbManager.ExecuteScalar <long>(
                    new SqlInsert("bookmarking_bookmark", true)
                    .InColumns("ID", "URL", "Date", "Name", "Description", "UserCreatorID", "Tenant")
                    .Values(bookmark.ID, bookmark.URL, date, bookmark.Name, bookmark.Description, bookmark.UserCreatorID, Tenant)
                    .Identity(0, 0L, true));

                DbManager.ExecuteNonQuery(
                    new SqlDelete("bookmarking_bookmarktag")
                    .Where(Exp.Eq("BookmarkID", bookmark.ID)
                           & Exp.Eq("Tenant", Tenant)));

                userBookmark = GetCurrentUserBookmark(bookmark);
                long userBookmarkId = 0;
                if (userBookmark != null)
                {
                    userBookmarkId = userBookmark.UserBookmarkID;
                }

                var nowDate = DateTime.UtcNow;

                userBookmarkId = DbManager.ExecuteScalar <long>(
                    new SqlInsert("bookmarking_userbookmark", true)
                    .InColumns("UserBookmarkID", "UserID", "DateAdded", "Name", "Description", "BookmarkID", "Raiting", "Tenant")
                    .Values(userBookmarkId, GetCurrentUserId(), nowDate, bookmark.Name, bookmark.Description, bookmark.ID, 1, Tenant)
                    .Identity(0, 0L, true));

                userBookmark = new UserBookmark
                {
                    UserBookmarkID = userBookmarkId,
                    BookmarkID     = bookmark.ID,
                    UserID         = GetCurrentUserId(),
                    DateAdded      = nowDate,
                    Name           = bookmark.Name,
                    Description    = bookmark.Description,
                    Raiting        = 1
                };

                DbManager.ExecuteNonQuery(
                    new SqlDelete("bookmarking_userbookmarktag")
                    .Where(Exp.Eq("UserBookmarkID", userBookmarkId)
                           & Exp.Eq("Tenant", Tenant)));

                if (bookmark.Tags == null)
                {
                    bookmark.Tags = new List <Tag>();
                }
                foreach (var tag in tags)
                {
                    tag.TagID = DbManager.ExecuteScalar <long>(
                        new SqlInsert("bookmarking_tag", true)
                        .InColumns("TagID", "Name", "Tenant")
                        .Values(tag.TagID, tag.Name, Tenant)
                        .Identity(0, 0L, true));

                    new BookmarkTag
                    {
                        BookmarkID    = bookmark.ID,
                        TagID         = tag.TagID,
                        BookmarkTagID = DbManager.ExecuteScalar <long>(
                            new SqlInsert("bookmarking_bookmarktag", true)
                            .InColumns("BookmarkID", "TagID", "Tenant")
                            .Values(bookmark.ID, tag.TagID, Tenant)
                            .Identity(0, 0L, true))
                    };



                    var ubt = new UserBookmarkTag {
                        UserBookmarkID = userBookmarkId, TagID = tag.TagID
                    };

                    ubt.UserBookmarkTagID = DbManager.ExecuteScalar <long>(
                        new SqlInsert("bookmarking_userbookmarktag", true)
                        .InColumns("UserBookmarkID", "TagID", "Tenant")
                        .Values(ubt.UserBookmarkID, tag.TagID, Tenant)
                        .Identity(0, 0L, true));

                    if (bookmark.Tags.All(r => r.TagID == tag.TagID))
                    {
                        bookmark.Tags.Add(tag);
                    }
                }

                tx.Commit();
            }
            catch (Exception)
            {
                tx.Rollback();
            }

            if (userBookmark != null)
            {
                FactoryIndexer <BookmarksUserWrapper> .IndexAsync(BookmarksUserWrapper.Create(userBookmark, bookmark));
            }
        }