SharePoint Posts Ratings Migration

Hi All,


Recently our team had a requirement to migrate ratings.Below is a sample code to add ratings to ratings for an item.


public void AddPostItem(LRBlog blog, SiteMigrationConfiguration siteMigrationConfiguration)
        {
            try
            {
                Console.WriteLine(DateTime.Now.ToShortTimeString() + "Adding blog post, post id :");
                List list = clientContext.Web.Lists.GetByTitle(siteMigrationConfiguration.BlogPostListName);
                ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
                ListItem listItem = list.AddItem(itemCreateInfo);
                listItem["Title"] = blog.title;
                listItem["Body"] = HtmlAgilityReader.ProcessContent(System.Web.HttpUtility.HtmlDecode(blog.content), siteMigrationConfiguration.BlogImageListName, clientContext);
                listItem["PublishedDate"] = blog.SpDisplayDate;
                listItem["Created"] = blog.SpCreateDate;
                listItem["Modified"] = blog.SpModifiedDate;
                //Set Rating values
                listItem["AverageRating"] = blog.avgRating;
                if (blog.ratings != null)
                {
                    listItem["RatingCount"] = blog.ratings.Count();
                    FieldUserValue[] user = new FieldUserValue[blog.ratings.Count()];
                    string ratings = string.Empty;
                    for (int i = 0; i < blog.ratings.Count(); i++)
                    {
                        var rating = blog.ratings[i];
                        ratings = ratings + rating.score + ",";
                        user[i] = SPUserPermissionHelper.GetUsers(rating.userId.ToString(), siteMigrationConfiguration.BlogSiteURL);
                    }

                    if (user.Length > 0)
                    {
                        listItem["RatedBy"] = user;
                        listItem["Ratings"] = ratings;
                    }

                }
                listItem.Update();
                clientContext.Load(list);
                clientContext.ExecuteQuery();
                /// Microsoft.Office.Server.ReputationModel.Reputation.SetRating(clientContext, list.Id.ToString(), listItem.Id, 5);
                FieldUserValue author = SPUserPermissionHelper.GetUsers(blog.createdBy.ToString(), clientContext.Url);
                FieldUserValue editor = SPUserPermissionHelper.GetUsers(blog.modifiedBy.ToString(), clientContext.Url);
                Console.WriteLine(DateTime.Now.ToShortTimeString() + "setting permission on  Blog idid :" + blog.entryId);

                SPUserPermissionHelper.SetItemLevelPermisionfromRole(author, listItem, clientContext, blog.permissions);
                foreach (var comment in blog.comments)
                {
                    List commentList = clientContext.Web.Lists.GetByTitle(siteMigrationConfiguration.BlogCommentListName);
                    ListItemCreationInformation itemCreateInfocomment = new ListItemCreationInformation();
                    ListItem commentItem = commentList.AddItem(itemCreateInfocomment);
                    commentItem["Title"] = comment.comment;//comment.;
                    commentItem["PostTitle"] = listItem.Id;
                    commentItem["Created"] = comment.SpCreateDate;
                    commentItem["Modified"] = comment.SpCreateDate;
                    FieldUserValue CommentBy = SPUserPermissionHelper.GetUsers(comment.userId.ToString(), clientContext.Url);
                    commentItem["Author"] = CommentBy;
                    commentItem["Editor"] = CommentBy;
                    commentItem.Update();
                }
                listItem["Author"] = author;
                listItem["Editor"] = editor;
                ////set item level permission
                listItem.Update();
                clientContext.ExecuteQuery();

                ReportGenerator.Instance.AddMigratedCount(EntityTypes.Blogs, 1);
            }
            catch (Exception ex)
            {
                ReportGenerator.Instance.AddFailedCount(EntityTypes.Blogs, 1, blog.entryId.ToString());
                Console.WriteLine(DateTime.Now.ToShortTimeString() + " " + "Exception occured. PLease check the log File");
                Logger.Log("Exception occured", Logger.LogType.Exception, "AddCalendarEvent", ex.StackTrace.ToString());
            }

        }

Comments

Popular posts from this blog

Install Node.js without admin rights

Create a lean React Solution using Typescript

Replace all occurence of String in JavaScript