/// <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()); }
/// <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); }