private void UpdateItem(ShoutPost item)
 {
     using (var context = DataContext.Instance())
     {
         var repo = context.GetRepository <ShoutPost>();
         repo.Update(item);
     }
 }
        public int AddPost(ShoutPost post)
        {
            using (var context = DataContext.Instance())
            {
                var repo = context.GetRepository <ShoutPost>();
                repo.Insert(post);

                return(post.ItemId);
            }
        }
Exemplo n.º 3
0
 public ShoutPostModel(ShoutPost post)
 {
     this.ItemId = post.ItemId;
     this.ModuleId = post.ModuleId;
     this.Message = post.Message;
     this.CreatedDate = post.CreatedDate;
     this.VoteUp = post.VoteUp;
     this.VoteDown = post.VoteDown;
     this.ReplyTo = post.ReplyTo;
     this.UserId = post.UserId;
 }
        public void ImportModule(int ModuleID, string Content, string Version, int UserID)
        {
            using(var reader = new StringReader(Content))
            {
                var xpath = new XPathDocument(reader);
                var nav = xpath.CreateNavigator();

                var repo = ShoutPostRepository.Instance;
                var mapping = new Dictionary<int, int>();

                var userController = UserController.Instance;

                foreach (XPathNavigator item in nav.Select("//shout"))
                {
                    try
                    {
                        Log.Debug("Starting item import");
                        //make an object, check we have the user in this
                        //portal, otherwise convert that post to anonymous
                        var post = new ShoutPost() 
                        { 
                            ItemId = int.Parse(item.SelectSingleNode("itemId").Value),
                            CreatedDate = new DateTime(long.Parse(item.SelectSingleNode("createdDate").Value)),
                            Message = item.SelectSingleNode("message").Value,
                            ModuleId = ModuleID,
                            ReplyTo = string.IsNullOrEmpty(item.SelectSingleNode("replyTo").Value) ? null : (int?)int.Parse(item.SelectSingleNode("replyTo").Value),
                            UserId = string.IsNullOrEmpty(item.SelectSingleNode("userId").Value) ? null : (int?)int.Parse(item.SelectSingleNode("userId").Value),
                            VoteDown = int.Parse(item.SelectSingleNode("voteDown").Value),
                            VoteUp = int.Parse(item.SelectSingleNode("voteUp").Value)
                        };

                        //if the user doesn't exist we'll just have to make it an anonymous post
                        if (post.UserId.HasValue)
                        {
                            var u = userController.GetUserById(PortalSettings.Current.PortalId,
                                                        post.UserId.Value);

                            if (u == null || u.UserID <= 0)
                            {
                                post.UserId = null;
                            }
                        }

                        //is the post a reply? if so we need to map the 
                        //parent post to the correct item
                        if (post.ReplyTo.HasValue)
                        {
                            post.ReplyTo = mapping[post.ReplyTo.Value];
                        }

                        //add to db and map the new id to any replies we 
                        //need to move over
                        mapping.Add(post.ItemId, repo.AddPost(post));

                        Log.Debug("Completed item import");
                    }
                    catch (Exception ex)
                    {
                        Log.Error("Unable to import item");
                        Log.Error(ex);
                        Exceptions.LogException(ex);
                    }
                }

            }
        }