public PartialViewResult DirectoryChapter(Guid id)
        {
            var list = new List <Models.ViewModels.Books2.Item>();

            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(null);
            }

            if (!target.IsBookChapter)
            {
                return(null);
            }

            list.Add(new Models.ViewModels.Books2.Item(target));
            while (target.ParentDocumentId != null)
            {
                target = target.ParentDocument;
                list.Add(new Models.ViewModels.Books2.Item(target));

                if (target.IsBookBook)
                {
                    break;
                }
            }

            list.Reverse();

            return(PartialView(list));
        }
示例#2
0
        /// <summary>
        /// 删除。
        /// </summary>
        /// <param name="id">文档ID。</param>
        /// <returns>父文档页面(如果有父文档)或一览(如果无父文档)。</returns>
        /// <remarks>直接删除。不提示。</remarks>
        public ActionResult Delete(Guid id)
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(HttpNotFound());
            }

            var parentDocumentId = target.ParentDocumentId;

            target.ParentDocumentId = null;
            db.SaveChanges();
            db.Documents.Remove(target);
            db.SaveChanges();

            if (parentDocumentId != null)
            {
                return(RedirectToAction("Details", new { id = parentDocumentId }));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
        /// <summary>
        /// 综合入口。
        /// </summary>
        /// <param name="id">节点ID。为空表示根。</param>
        /// <returns>跳转到对应类别的界面。</returns>
        /// <remarks>自动识别节点ID对应节点的类型——书架、书籍或章节——并进行跳转。</remarks>
        public ActionResult Index(Guid?id)
        {
            if (id == null)
            {
                return(RedirectToAction("IndexBookshelf", new { id }));
            }

            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(HttpNotFound());
            }

            if (target.IsBookBookShelf)
            {
                return(RedirectToAction("IndexBookshelf", new { id }));
            }
            else if (target.IsBookBook)
            {
                return(RedirectToAction("IndexBook", new { id }));
            }
            else if (target.IsBookChapter)
            {
                return(RedirectToAction("IndexChapter", new { id }));
            }
            else
            {
                return(null);
            }
        }
        //public JsonResult OpenLocalFile(Guid id)
        //{
        //    var folder = "D:\\DocumentLibraries";
        //    var fullFileName = folder + "\\" + id.ToString() + ".pdf";

        //    if (System.IO.File.Exists(fullFileName))
        //    {
        //        //System.Diagnostics.Process.Start(fullFileName);
        //        var process = new System.Diagnostics.Process();
        //        process.StartInfo.FileName = fullFileName;
        //        process.Start();

        //        return Json(new { result = true });
        //    }
        //    else
        //    {
        //        return Json(new { result = false });
        //    }
        //}

        public JsonResult GetChapters(Guid documentId)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(documentId);

            if (string.IsNullOrEmpty(target.Url))
            {
                return(Json(false));
            }

            var targetB = new Models.BusinessModels.PageContentSolver.MicrosoftDocsChapters(target.Url, documentId);

            bool result;

            result = targetB.GetPage();
            if (!result)
            {
                return(Json(false));
            }

            result = targetB.ParsePage();
            if (!result)
            {
                return(Json(false));
            }

            target.Chapters.AddRange(targetB.GetChapters());
            target.IsGetAllChapters = true;
            db.SaveChanges();

            return(Json(true));
        }
        public Details(Guid documentId)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(documentId);

            this.Initial(target);
        }
示例#6
0
        /// <summary>
        /// 面包屑。
        /// </summary>
        /// <param name="id">当前文档ID。</param>
        /// <returns></returns>
        public PartialViewResult BreadField(Guid id, bool activeCurrentNode)
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var target = db.Documents.Find(id);

            var targetV = new Models.ViewModels.Documents.BreadField.BreadField(target, activeCurrentNode);

            return(PartialView(targetV));
        }
示例#7
0
        /// <summary>
        /// 明细。
        /// </summary>
        /// <param name="id">文档ID。</param>
        public ActionResult Details(Guid id)
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var target = db.Documents.Find(id);

            var targetV = new Models.ViewModels.Documents.Details.Details(target);

            return(View(targetV));
        }
示例#8
0
        /// <summary>
        /// 删除章节。
        /// </summary>
        /// <param name="chapterId">章节ID。</param>
        /// <returns></returns>
        public ActionResult DeleteChapter(Guid chapterId)
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var target = db.Chapters.Find(chapterId);

            db.Chapters.Remove(target);
            db.SaveChanges();

            return(RedirectToAction("Details", new { id = target.DocumentId }));
        }
示例#9
0
        private void Create(Guid id)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(id);

            this.Root     = target;
            this.NodeName = target.NodeName;
            this.Path     = target.Path;
            this.List     = new List <Item>();

            this.Fill(target, 0);
        }
        /// <summary>
        /// 设置文档标记。
        /// </summary>
        /// <param name="id">文档ID。</param>
        /// <param name="property">属性名称。</param>
        /// <param name="value">值。</param>
        /// <returns>是否成功执行。</returns>
        public JsonResult SetDocumentFlag(Guid id, string property, bool value)
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(Json(new { result = false }));
            }

            switch (property)
            {
            case "IsChecked":
                target.IsChecked = value;
                break;

            case "IsNoted":
                target.IsNoted = value;
                break;

            case "IsGetAllChildren":
                target.IsGetAllChildren = value;
                break;

            case "IsGetAllChapters":
                target.IsGetAllChapters = value;
                break;

            case "IsBookmarked":
                target.IsBookmarked = value;
                break;

            case "IsBook":
                target.IsBook = value;
                break;

            case "IsAbstract":
                target.IsAbstract = value;
                break;

            case "IsMain":
                target.IsMain = value;
                break;

            default:
                return(Json(new { result = false }));
            }
            db.SaveChanges();

            return(GetDocument(id));
        }
        /// <summary>
        /// 初始化。
        /// </summary>
        /// <remarks>无需参数,获取所有根文档。</remarks>
        public Index()
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var query = db.Documents.AsQueryable();

            query = query.Where(c => c.ParentDocumentId == null);

            var queryOrdered = query.OrderBy(c => c.Priority).ThenBy(c => c.DocumentId);

            var list = queryOrdered.ToList();

            this.List = list.Select(c => new Item(c)).ToList();
        }
示例#12
0
        public IndexBookmark()
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var query = db.Documents.AsQueryable();

            query = query.Where(c => c.IsBookmarked);

            var queryOrdered = query.OrderByDescending(c => c.UpdateTime).ThenBy(c => c.DocumentId);

            var list = queryOrdered.ToList();

            this.List = list.Select(c => new Item(c)).ToList();
        }
示例#13
0
        /// <summary>
        /// 编辑。
        /// </summary>
        /// <param name="id">文档ID。</param>
        public ActionResult Edit(Guid id)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(HttpNotFound());
            }

            var targetV = new Models.ViewModels.Documents.Edit.Edit(target);

            return(View(targetV));
        }
        public CreateChapter(Guid documentId)
        {
            var db       = new Models.Domains.Entities.DMsDbContext();
            var document = db.Documents.Find(documentId);

            this.DocumentId = documentId;
            if (document.Chapters.Count() == 0)
            {
                this.Priority = 1;
            }
            else
            {
                this.Priority = document.Chapters.Max(c => c.Priority) + 1;
            }
        }
        /// <summary>
        /// 获取文档信息。
        /// </summary>
        /// <param name="id">文档ID。</param>
        /// <returns>文档信息。</returns>
        public JsonResult GetDocument(Guid id)
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(Json(new { result = false }));
            }

            var targetV = new Models.ViewModels.Services.GetDocument.GetDocument(target);

            return(Json(targetV));
        }
        public JsonResult GetChapters(Guid parentId)
        {
            var db    = new Models.Domains.Entities.DMsDbContext();
            var query = db.Documents.AsQueryable();

            query = query.Where(c => c.ParentDocumentId == parentId);

            var queryOrdered = query.OrderBy(c => c.Priority).ThenBy(c => c.DocumentId);

            var @enum = queryOrdered.AsEnumerable().Where(c => c.IsBookChapter);

            var list = @enum.ToList().Select(c => new Models.ViewModels.Books2.Item(c)).ToList();

            return(Json(list));
        }
示例#17
0
        public ActionResult CreateChapter([Bind] Models.ViewModels.Documents.CreateChapter.CreateChapter targetV)
        {
            if (ModelState.IsValid)
            {
                var db = new Models.Domains.Entities.DMsDbContext();

                var target = targetV.GetReturn();
                db.Chapters.Add(target);

                db.SaveChanges();

                return(RedirectToAction("Details", new { id = targetV.DocumentId }));
            }

            return(View(targetV));
        }
示例#18
0
        public ActionResult CreateByUrlMicrosoftDocs([Bind()] Models.ViewModels.Documents.CreateByUrlMicrosoftDocs.CreateByUrlMicrosoftDocs targetV)
        {
            if (ModelState.IsValid)
            {
                //var targetB = new Models.BusinessModels.PageContentSolver.MicrosoftDocs(targetV.Url, targetV.NodeName);
                var targetB = new Models.BusinessModels.PageContentSolver.MicrosoftDocs(targetV);

                bool result;

                result = targetB.GetPage();
                if (!result)
                {
                    return(HttpNotFound());
                }

                result = targetB.ParsePage();
                if (!result)
                {
                    return(HttpNotFound());
                }

                var target = targetB.GetReturn();

                var db = new Models.Domains.Entities.DMsDbContext();

                target.DocumentId       = Guid.NewGuid();
                target.ParentDocumentId = targetV.ParentDocumentId;
                {
                    target.Priority = db.Documents.Where(c => c.ParentDocumentId == targetV.ParentDocumentId).Max(c => c.Priority) + 1;
                    if (target.Priority == null)
                    {
                        target.Priority = 1;
                    }
                }
                target.UpdateTime = DateTime.Now;

                db.Documents.Add(target);
                db.SaveChanges();

                db.Chapters.AddRange(target.Chapters);
                db.SaveChanges();

                return(RedirectToAction("Details", new { id = target.DocumentId }));
            }

            return(View(targetV));
        }
示例#19
0
        public ValidateResult Save()
        {
            var target = new Models.Domains.Entities.Document
            {
                DocumentId = Guid.NewGuid(),

                ParentDocumentId = this.ParentDocumentId,

                Title    = this.Title,
                NodeName = this.Title,

                Priority             = this.Priority,
                UpdateTimeForHTTPGet = DateTime.Now,
                IsChecked            = this.IsChecked,

                Url     = this.Url,
                Remarks = this.Remarks,
                IsBook  = true,
                ISBN    = this.ISBN,

                IsAbstract = this.IsBookshelf || this.IsChapterMain,
                IsMain     = this.IsBookRoot || this.IsChapterMain,

                UpdateTime = DateTime.Now
            };

            var db = new Models.Domains.Entities.DMsDbContext();

            lock (Atom.GetInstance())
            {
                if (string.IsNullOrWhiteSpace(this.Title))
                {
                    return(new ValidateResult(false, "Title", "Empty"));
                }
                if (this.Priority < 0)
                {
                    return(new ValidateResult(false, "Priority", "Less Than 0"));
                }

                db.Documents.Add(target);
                db.SaveChanges();
            }

            this.DocumentId = target.DocumentId;

            return(new ValidateResult(true, null));
        }
示例#20
0
        public ValidateResult Save()
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            lock (Atom.GetInstance())
            {
                var target = db.Documents.Find(this.DocumentId);
                if (target == null)
                {
                    return(new ValidateResult(false, null));
                }

                if (string.IsNullOrWhiteSpace(this.Title))
                {
                    return(new ValidateResult(false, "Title", "Empty"));
                }
                if (this.Priority < 0)
                {
                    return(new ValidateResult(false, "Priority", "Less Than 0"));
                }

                if (System.BitConverter.ToInt64(this.TimeStamp, 0) != System.BitConverter.ToInt64(target.TimeStamp, 0))
                {
                    return(new ValidateResult(false, "TimeStamp", "Changed"));
                }

                target.Title    = this.Title;
                target.NodeName = this.Title;

                target.Priority  = this.Priority;
                target.IsChecked = this.IsChecked;

                target.Url     = this.Url;
                target.Remarks = this.Remarks;
                target.ISBN    = this.ISBN;

                target.IsAbstract = this.IsBookshelf || this.IsChapterMain;
                target.IsMain     = this.IsBookRoot || this.IsChapterMain;

                target.UpdateTime = DateTime.Now;

                db.SaveChanges();
            }

            return(new ValidateResult(true, null));
        }
        public PartialViewResult ListBook(Guid id)
        {
            var db    = new Models.Domains.Entities.DMsDbContext();
            var query = db.Documents.AsQueryable();

            query = query.Where(c => c.ParentDocumentId == id);

            var queryOrdered = query.OrderBy(c => c.Priority).ThenBy(c => c.DocumentId);

            var @enum = queryOrdered.AsEnumerable().Where(c => c.IsBookBook);

            var list = @enum.ToList().Select(c => new Models.ViewModels.Books2.Item(c)).ToList();

            ViewBag.Id = id;

            return(PartialView(list));
        }
示例#22
0
        public ActionResult Edit([Bind()] Models.ViewModels.Documents.Edit.Edit targetV)
        {
            if (ModelState.IsValid)
            {
                var db     = new Models.Domains.Entities.DMsDbContext();
                var target = db.Documents.Find(targetV.DocumentId);

                targetV.GetReturn(target);
                target.UpdateTime = DateTime.Now;

                db.SaveChanges();

                return(RedirectToAction("Details", new { id = target.DocumentId }));
            }

            return(View(targetV));
        }
        public PartialViewResult SingleChapter(Guid id)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(id);

            if (target == null)
            {
                return(null);
            }

            if (!target.IsBookChapter)
            {
                return(null);
            }

            var targetV = new Models.ViewModels.Books2.Item(target);

            return(PartialView(targetV));
        }
        public JsonResult GetBookshelf(Guid bookshelfId)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(bookshelfId);

            if (target == null)
            {
                return(null);
            }

            if (!target.IsBookBookShelf)
            {
                return(null);
            }

            var targetV = new Models.ViewModels.Books2.Item(target);

            return(Json(targetV));
        }
        public JsonResult GetChapter(Guid chapterId)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(chapterId);

            if (target == null)
            {
                return(null);
            }

            if (!target.IsBookChapter)
            {
                return(null);
            }

            var targetV = new Models.ViewModels.Books2.Item(target);

            return(Json(targetV));
        }
示例#26
0
        public ActionResult Create([Bind()] Models.ViewModels.Documents.Create.Create targetV)
        {
            if (string.IsNullOrEmpty(targetV.NodeName))
            {
                targetV.NodeName = targetV.Title;
            }

            if (ModelState.IsValid)
            {
                var target = targetV.GetReturn();

                var db = new Models.Domains.Entities.DMsDbContext();
                db.Documents.Add(target);
                db.SaveChanges();

                return(RedirectToAction("Details", new { id = target.DocumentId }));
            }

            return(View(targetV));
        }
        public PartialViewResult SingleBookshelf(Guid?id)
        {
            var db     = new Models.Domains.Entities.DMsDbContext();
            var target = db.Documents.Find(id);

            if (target == null)
            {
                var targetVvirtual = new Models.ViewModels.Books2.Item();
                targetVvirtual.Title = "[根]";
                return(PartialView(targetVvirtual));
            }

            if (!target.IsBookBookShelf)
            {
                return(null);
            }

            var targetV = new Models.ViewModels.Books2.Item(target);

            return(PartialView(targetV));
        }
        public List <Models.Domains.Entities.Chapter> GetReturnList()
        {
            var db       = new Models.Domains.Entities.DMsDbContext();
            var document = db.Documents.Find(this.DocumentId);
            int maxPriority;

            if (document.Chapters.Count() == 0)
            {
                maxPriority = 0;
            }
            else
            {
                maxPriority = document.Chapters.Max(c => c.Priority);
            }

            var listInput   = new List <string>(this.Input.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries));
            var listChapter = new List <Models.Domains.Entities.Chapter>();

            foreach (var itemInput in listInput)
            {
                if (string.IsNullOrEmpty(itemInput))
                {
                    continue;
                }

                var itemChapter = new Models.Domains.Entities.Chapter();

                itemChapter.ChapterId  = Guid.NewGuid();
                itemChapter.DocumentId = this.DocumentId;

                itemChapter.ChapterName = itemInput.Trim();
                itemChapter.Priority    = ++maxPriority;

                itemChapter.UpdateTime = DateTime.Now;

                listChapter.Add(itemChapter);
            }

            return(listChapter);
        }
示例#29
0
        public ActionResult CreateByUrlMicrosoftDocsApi(Models.ViewModels.Documents.CreateByUrlMicrosoftDocsApi.CreateByUrlMicrosoftDocsApi targetV)
        {
            var targetB = new Models.BusinessModels.PageContentSolver.MicrosoftDocsApi(targetV.Url, targetV.NodeNameParsingMode);

            bool result;

            result = targetB.GetPage();
            if (!result)
            {
                return(HttpNotFound());
            }

            result = targetB.ParsePage();
            if (!result)
            {
                return(HttpNotFound());
            }

            var target = targetB.GetReturn();

            var db = new Models.Domains.Entities.DMsDbContext();

            target.ParentDocumentId = targetV.ParentDocumentId;
            if (string.IsNullOrEmpty(targetV.NodeNameParsingMode))
            {
                target.NodeName = targetV.NodeName;
            }
            {
                target.Priority = db.Documents.Where(c => c.ParentDocumentId == targetV.ParentDocumentId).Max(c => c.Priority) + 1;
                if (target.Priority == null)
                {
                    target.Priority = 1;
                }
            }

            db.Documents.Add(target);
            db.SaveChanges();

            return(RedirectToAction("Details", new { id = target.DocumentId }));
        }
示例#30
0
        public ValidateResult Save()
        {
            var db = new Models.Domains.Entities.DMsDbContext();

            lock (Atom.GetInstance())
            {
                var target = db.Documents.Find(this.DocumentId);
                if (target == null)
                {
                    return(new ValidateResult(false, null));
                }

                if (System.BitConverter.ToInt64(this.TimeStamp, 0) != System.BitConverter.ToInt64(target.TimeStamp, 0))
                {
                    return(new ValidateResult(false, "TimeStamp", "Changed"));
                }

                db.Documents.Remove(target);
                db.SaveChanges();
            }

            return(new ValidateResult(true, null));
        }