Ejemplo n.º 1
0
        public ListDetail Get(ListCriteria criteria)
        {
            using (var uow = UnitOfWorkFactory.Create <NovelContext>())
            {
                var service = new ListService(uow);

                var detail = service.Get(criteria);
                // connector
                detail.Connectors = service.View <Connector>()
                                    .Where(w => w.IsDeleted == false && w.ConnectorType == R.ConnectorType.SERIES_USERLIST)
                                    .Where(w => w.TargetID == detail.ID).ToList();

                // series
                var listSeriesIDs = detail.Connectors.Select(s => s.SourceID).ToList();
                detail.Series = new SeriesService(uow).Search(new SearchModel <SeriesCriteria>
                {
                    Criteria = new SeriesCriteria {
                        IDs = listSeriesIDs
                    },
                    PagedListConfig = new PagedListConfig {
                        PageSize = int.MaxValue
                    }
                }).Data;
                // releases
                detail.Releases = service.View <Release>().Where(w => listSeriesIDs.Contains(w.SeriesID)).ToList();
                // user reads
                var releaseIDs = detail.Releases.Select(s => s.ID);
                detail.Reads = service.View <UserRead>().Where(w => w.UserID == criteria.ByUserID)
                               .Where(w => w.SourceTable == R.SourceTable.RELEASE)
                               .Where(w => releaseIDs.Contains(w.SourceID)).ToList();

                return(detail);
            }
        }
Ejemplo n.º 2
0
        public IList <UserList> GetListHasReleases(ListCriteria criteria)
        {
            using (var uow = UnitOfWorkFactory.Create <NovelContext>())
            {
                var qList      = uow.Repository <UserList>().Where(w => w.IsDeleted == false && w.UserID == criteria.ByUserID && w.IsNotifyOfNewRelease);
                var qConnector = uow.Repository <Connector>().Where(w => w.IsDeleted == false && w.ConnectorType == R.ConnectorType.SERIES_USERLIST);
                var qRelease   = uow.Repository <Release>().Where(w => w.IsDeleted == false && w.SeriesID > 0);
                var qRead      = uow.Repository <UserRead>().Where(w => w.UserID == criteria.ByUserID && w.SourceTable == R.SourceTable.RELEASE);


                var seriesList = qList.Join(qConnector, l => l.ID, c => c.TargetID, (l, c) => new { l.ID, l.Name, SeriesID = c.SourceID });

                var allReleases = qRelease.Join(seriesList, r => r.SeriesID, l => l.SeriesID,
                                                (r, l) => new { r.ID, r.Date, UserListID = l.ID, l.Name, r.SeriesID });

                var readReleases = qRead.Join(allReleases, r => r.SourceID, rl => rl.ID,
                                              (r, rl) => rl).GroupBy(g => new { g.SeriesID }).Select(s => new { s.Key.SeriesID, Date = s.Max(m => m.Date) });

                var untouchReleases = allReleases.Where(w => !readReleases.Any(w2 => w2.SeriesID == w.SeriesID))
                                      .GroupBy(g => new { g.SeriesID })
                                      .Select(s => new { s.Key.SeriesID, Date = DateTime.MinValue });

                // only return releases that has been read once
                var unreadReleases = readReleases.Union(untouchReleases).SelectMany(s => allReleases.Where(w => (w.SeriesID == s.SeriesID && w.Date > s.Date))).ToList();

                return(unreadReleases.GroupBy(g => new { g.UserListID, g.Name }).Select(s => new UserList {
                    ID = s.Key.UserListID, Name = s.Key.Name, Type = s.Count(), UpdatedDate = s.Max(m => m.Date)
                }).ToList());
            }
        }
Ejemplo n.º 3
0
        public ActionResult Detail(ListCriteria criteria)
        {
            criteria.ByUserID = UserSession.UserID;
            var detail = Facade <ListFacade>().Get(criteria);

            return(View(detail));
        }
Ejemplo n.º 4
0
        public ActionResult Index(ListCriteria criteria)
        {
            var searchModel = CreateSearchModel(criteria);
            var pagedList   = Facade <ListFacade>().Search(searchModel);

            ViewBag.ListTemplates = Facade <ListFacade>().GetListTemplates();
            return(View(pagedList));
        }
Ejemplo n.º 5
0
        public ActionResult Public(ListCriteria criteria)
        {
            var searchModel = CreateSearchModel(criteria);

            criteria.ByUserID = 0;
            criteria.IsPublic = true; // get public list only
            var pagedList = Facade <ListFacade>().Search(searchModel);

            return(View(pagedList));
        }
Ejemplo n.º 6
0
        public ListDetail Get(ListCriteria criteria)
        {
            var qUserList = View <UserList>().All();

            var userList = qUserList.SingleOrDefault(w => w.ID == criteria.IDToInt);

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

            var listDetail = new ListDetail();

            MapProperty(userList, listDetail);

            return(listDetail);
        }
Ejemplo n.º 7
0
 private void DataPortal_Fetch(ListCriteria criteria)
 {
     using (SqlConnection cn = new SqlConnection(Database.ConnectionString))
     {
         cn.Open();
         using (SqlCommand cm = cn.CreateCommand())
         {
             cm.CommandType = CommandType.StoredProcedure;
             cm.CommandText = "[app_member].[visit_list_by_stringlist]";
             cm.Parameters.AddWithValue("@list", criteria.Lists);
             using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
             {
                 IsReadOnly = false;
                 while (dr.Read())
                 {
                     this.Add(new VisitReportInfo(dr));
                 }
                 IsReadOnly = true;
             }
         }
     }
 }