Beispiel #1
0
        public ActionResult Index(NovelCriteria criteria)
        {
            var searchModel = CreateSearchModel(criteria);
            var pagedList   = Facade <SearchFacade>().Search(searchModel);

            return(View(pagedList));
        }
Beispiel #2
0
        public NovelDetail Get(NovelCriteria criteria)
        {
            var qNovel = Table <Novel>().All();

            if (criteria.IDToInt > 0)
            {
                qNovel = qNovel.Where(w => w.ID == criteria.IDToInt);
            }
            if (!string.IsNullOrWhiteSpace(criteria.Title))
            {
                qNovel = qNovel.Where(w => w.Title == criteria.Title);
            }

            var novel = qNovel.FirstOrDefault();

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

            var novelDetail = new NovelDetail();

            MapProperty(novel, novelDetail);

            return(novelDetail);
        }
Beispiel #3
0
        public NovelDetail GetNovel(NovelCriteria criteria)
        {
            using (var uow = UnitOfWorkFactory.Create <NovelContext>())
            {
                var service = new NovelService(uow);
                var detail  = service.Get(criteria);

                // author
                var qTag       = service.View <Tag>().All();
                var qConnector = service.View <Connector>().All();

                var qAuthor = service.View <Author>().All();
                var authors = qConnector.Where(w => w.ConnectorType == R.ConnectorType.NOVEL_AUTHOR)
                              .Where(w => w.SourceID == detail.ID).Select(s => s.TargetID).ToList();
                detail.Authors = qAuthor.Where(w => authors.Contains(w.ID)).ToList();

                // chapter
                var qChapter = service.View <Chapter>().All();

                qChapter = qChapter.Where(w => w.NovelID == detail.ID);

                detail.Chapters = qChapter.ToList();
                // glossary
                detail.Glossaries = service.View <Glossary>().Where(w => w.SourceTable == R.SourceTable.NOVEL && w.SourceID == detail.ID).ToList();
                // summarize
                detail.Summarize = service.View <Summarize>().Where(w => w.SourceTable == R.SourceTable.NOVEL && w.SourceID == detail.ID).SingleOrDefault() ?? new Summarize();
                return(detail);
            }
        }
Beispiel #4
0
        public ActionResult Detail(NovelCriteria criteria)
        {
            var detail = Facade <NovelFacade>().GetNovel(criteria);

            // log views
            var viewForm = new ViewForm {
                UserID = UserSession.UserID, SourceID = detail.ID, SourceTable = R.SourceTable.NOVEL
            };

            Facade <UserActionFacade>().Viewing(viewForm);

            return(View(detail));
        }
Beispiel #5
0
        public IList <Novel> SearchNovel(NovelCriteria criteria)
        {
            using (var uow = UnitOfWorkFactory.Create <NovelContext>())
            {
                var qNovel = uow.Repository <Novel>().All();

                if (!string.IsNullOrWhiteSpace(criteria.Query))
                {
                    qNovel = qNovel.Where(w => w.Title.Contains(criteria.Query));
                }

                return(qNovel.ToList());
            }
        }
Beispiel #6
0
        public ActionResult PreviousChapter(NovelCriteria criteria, int?chapterID)
        {
            if (chapterID.HasValue)
            {
                var detail  = Facade <NovelFacade>().GetNovel(criteria);
                var release = detail.Chapters.OrderByDescending(o => o.Volume).ThenByDescending(o => o.Number).FirstOrDefault(w => w.ID < chapterID);
                if (release == null)
                {
                    return(View(detail));
                }

                return(RedirectPermanent(Url.Action("Detail", "Chapter", new { ID = release.ID, Seo = release.Title.ToSeo() })));
            }
            return(null);
        }