Example #1
0
        public void UpdateLastPosition(Topic topic)
        {
            Topic topicParent = (Topic)topic.Parent;
            int?  max         = 0;

            SessionManager.DoWork(session =>
            {
                max = session.Query <DB.Entities.Topic>().Where(t => t.TopicParent == topicParent.Id).Max(m => (int?)m.TopicOrder);
                DB.Entities.Topic obj = session.Get <DB.Entities.Topic>(topic.Id);
                obj.TopicOrder        = max == null ? 0 : (int)max + 1;
                session.Update(obj);
            });
        }
Example #2
0
        public static TopicCollection GetTopicCollection()
        {
            //Database database = new Database("PSCPortalConnectionString");
            Topic           root   = null;
            TopicCollection result = null;
            DateTime        start  = DateTime.Now;

            SessionManager.Query(session =>
            {
                List <DB.Entities.Topic> listTopics = session.Query <DB.Entities.Topic>().ToList();
                Guid subId          = SessionHelper.GetSession(SessionKey.SubDomain) == string.Empty ? Guid.Empty : new Guid(SessionHelper.GetSession(SessionKey.SubDomain));
                SubDomain subDomain = new SubDomain {
                    Id = subId
                };
                Topic topicMaster       = subDomain.GetTopic();
                DB.Entities.Topic topic = session.Get <DB.Entities.Topic>(topicMaster.Id);
                root = new Topic {
                    Id = topic.TopicId, Name = topic.TopicName, Description = topic.TopicDescription, PageId = topic.PageId
                };
                result = new TopicCollection(root);
                if (topic.TopicId == Guid.Empty && subDomain.Id != Guid.Empty)
                {
                    return;
                }
                Stack <DB.Entities.Topic> stack = new Stack <DB.Entities.Topic>();
                stack.Push(topic);
                Dictionary <Guid, Topic> items = new Dictionary <Guid, Topic>();
                items.Add(root.Id, root);
                while (stack.Count > 0)
                {
                    DB.Entities.Topic first           = stack.Pop();
                    List <DB.Entities.Topic> children = listTopics.Where(topic1 => topic1.TopicParent == first.TopicId).ToList();
                    foreach (var child in children.OrderBy(a => a.TopicOrder))
                    {
                        stack.Push(child);
                        Topic parent = items[first.TopicId];
                        Topic dir    = new Topic {
                            Id = child.TopicId, Name = child.TopicName, Description = child.TopicDescription, PageId = child.PageId, Rss = child.Rss
                        };
                        items.Add(dir.Id, dir);
                        result.Add(parent, dir);
                    }
                }
            });
            TimeSpan timeSpan     = DateTime.Now - start;
            var      totalSeconds = timeSpan.TotalSeconds;

            return(result);
        }