//--------------------------------------
        //--------------------------------------
        public void NodeUpdate(ContentTransfer nodeXfer)
        {
            using (WebContentContext db = new WebContentContext())
            {
                Node nodeDb = null;

                try
                {
                    nodeDb = db.Nodes.Where(n => n.Id == nodeXfer.NodeId).Single();
                }
                catch (Exception ex)
                {
                    // Exception is thrown if the node does not exist.
                    // Replace this with a call to the logger.
                    Debug.Print(ex.Message);
                }

                if (nodeDb != null)
                {
                    nodeDb.Title   = nodeXfer.Title;
                    nodeDb.Summary = nodeXfer.Summary;
                    nodeDb.Content = nodeXfer.Content;
                    db.SaveChanges();
                }
            }
        }
        //--------------------------------------
        //--------------------------------------
        public List <ContentTransfer> NodeTypeMostRecentNLeavesGet(string nodeType, int num)
        {
            List <ContentTransfer> nodeXferList = new List <ContentTransfer>();

            using (WebContentContext db = new WebContentContext())
            {
                List <Node> nodeList =
                    (
                        from n1 in db.Nodes
                        where n1.Path.StartsWith(nodeType)
                        join n2 in db.Nodes on n1.Id equals n2.ParentId into join1
                        from n3 in join1.DefaultIfEmpty() // DefaultIfEmpty specifies outer join
                        where n3 == null                  // null n3 indicates n1.Id has no child; null n3 is a leaf
                        orderby n1.Id descending
                        select n1
                    ).Take(num).ToList <Node>();

                foreach (Node node in nodeList)
                {
                    nodeXferList.Add(DbNodeToContentXfer(node));
                }
            }

            return(nodeXferList);
        }
        //--------------------------------------
        //--------------------------------------
        public ContentTransfer NodeGetByPath(string path)
        {
            ContentTransfer nodeXfer = null;

            using (WebContentContext db = new WebContentContext())
            {
                Node nodeDb = null;

                try
                {
                    nodeDb = db.Nodes.Where(n => n.Path == path).Single();
                }
                catch (Exception ex)
                {
                    // Replace this with a call to the logger.
                    Debug.Print(ex.Message);
                }

                if (nodeDb != null)
                {
                    nodeXfer = DbNodeToContentXfer(nodeDb);
                }
            }

            return(nodeXfer);
        }
        //--------------------------------------
        //--------------------------------------
        public ContentTransfer NodeCreate(ContentTransfer nodeNew)
        {
            Node nodeDb = ContentXferToDbNode(nodeNew);

            using (WebContentContext db = new WebContentContext())
            {
                db.Nodes.Add(nodeDb);
                db.SaveChanges();
            }

            return(NodeGetByPath(nodeNew.Path));
        }
        //--------------------------------------
        //--------------------------------------
        //public void NodeDelete(int id)
        //{
        //}



        //--------------------------------------
        //--------------------------------------
        public bool NodeExistsTest(string path)
        {
            bool result = false;

            using (WebContentContext db = new WebContentContext())
            {
                int count = db.Nodes.Where(n => n.Path == path).Count();
                if (count == 1)
                {
                    result = true;
                }
            }

            return(result);
        }
        //--------------------------------------
        //--------------------------------------
        public List <ContentTransfer> NodeChildrenGet(int id)
        {
            List <ContentTransfer> children = new List <ContentTransfer>();

            using (WebContentContext db = new WebContentContext())
            {
                List <Node> childNodes = db.Nodes.Where(n => n.ParentId == id).ToList <Node>();

                foreach (Node nodeDb in childNodes)
                {
                    ContentTransfer nodeXfer = DbNodeToContentXfer(nodeDb);

                    children.Add(nodeXfer);
                }
            }

            return(children);
        }