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(); } }
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)); } }