Ejemplo n.º 1
0
        /// <summary>
        /// 获取用户所有落在某个时间段的日程表事件,只要是起始时间或结束时间在指定范围都算
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="startTime">起始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <returns></returns>
        public IEnumerable <EventModel> GetEvents(int userId, DateTime startTime, DateTime endTime)
        {
            //转为yyyy-MM-dd HH:mm:ss标准格式以便在数据库中以字符串数据规则进行比对
            string starts        = CommOp.ToTimeStr(startTime);
            string ends          = CommOp.ToTimeStr(endTime);
            int    startTimeId   = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.StartTime);
            int    endTimeId     = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.EndTime);
            int    alertBeforeId = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.AlertBefore);
            int    urlId         = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.ProcessUrl);

            return(_article.GetAllInCatalog(ScheduleEvent.Root.Id)
                   .Where(ca => ca.Article.EditorId == userId
                          //不是属于通知
                          && ca.Article.Options < ScheduleEvent.OptionNotice)
                   .Select(ca => new EventModel
            {
                start = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == startTimeId).Value,
                end = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == endTimeId).Value,
                caId = ca.Id,
                title = ca.Article.Title,
                alertBefore = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == alertBeforeId).Value,
                editable = ca.Article.Options == ScheduleEvent.OptionReadOnly,
                finished = ca.Article.State == ScheduleEvent.EventFinished,
                url = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == urlId).Value,
            })
                   .Where(r => (r.start != null && starts.CompareTo(r.start) <= 0 && ends.CompareTo(r.start) >= 0) ||
                          (r.end != null && starts.CompareTo(r.end) <= 0 && ends.CompareTo(r.end) >= 0))
                   .ToList());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据文件的ID返回文件的物理路径
        /// </summary>
        /// <param name="fileIds"></param>
        /// <returns></returns>
        public string[] GetFilePath(params int[] fileIds)
        {
            IFileLocator locator = null;

            if (fileIds.IsEmpty())
            {
                return(new string[0]);
            }

            var files = _article.GetAllInCatalog(SystemTypes.Root.Id)
                        .Where(f => fileIds.Contains(f.Id))
                        .ToList()
                        .Select(f => locator.GetFilePath(f.GetExtStr(SystemTypes.Root.Key)))
                        .ToArray();

            return(files);
        }