public static void ClearSourceContents(int sourceId) { using (Models.ICContext context = new Models.ICContext()) { string cmdText = @" Delete P From UserSourceContentLink P Join SourceContent Q on P.SourceContentId=Q.SourceContentId Where Q.SourceId=" + sourceId; context.Database.ExecuteSqlCommand(cmdText); cmdText = @" Delete P From UserSourceContentFavorLink P Join SourceContent Q on P.SourceContentId=Q.SourceContentId Where Q.SourceId=" + sourceId; context.Database.ExecuteSqlCommand(cmdText); cmdText = @" Delete Q From SourceContent Q Where Q.SourceId=" + sourceId; context.Database.ExecuteSqlCommand(cmdText); } }
public static UserProfile GetUser(string userName) { using (ICContext db = new ICContext()) { return db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == userName.ToLower()); } }
public static void ClearAllSourceContents(int interval) { using (Models.ICContext context = new Models.ICContext()) { string endTime = DateTime.Now.AddDays(-interval).ToString("yyyy-MM-dd HH:mm:ss"); string cmdText = @" Delete P From UserSourceContentLink P Join SourceContent Q on P.SourceContentId=Q.SourceContentId Where Q.AddTime<'" + endTime + "'"; context.Database.ExecuteSqlCommand(cmdText); cmdText = @" Delete P From UserSourceContentFavorLink P Join SourceContent Q on P.SourceContentId=Q.SourceContentId Where Q.AddTime<'" + endTime + "'"; context.Database.ExecuteSqlCommand(cmdText); cmdText = @" Delete P From SourceContent P Where P.AddTime<'" + endTime + "'"; context.Database.ExecuteSqlCommand(cmdText); } }
public static void RemoveLink(int userId, int sourceContentId) { using (Models.ICContext context = new Models.ICContext()) { var UserSourceContentLink = context.UserSourceContentLinks.Where(p => p.UserId == userId && p.SourceContentId == sourceContentId).FirstOrDefault(); if (UserSourceContentLink != null) { context.UserSourceContentLinks.Remove(UserSourceContentLink); context.SaveChanges(); } } }
public static void AddFavorLink(int userId, int sourceContentId) { using (Models.ICContext context = new Models.ICContext()) { var UserSourceContentFavorLink = context.UserSourceContentFavorLinks.Where(p => p.UserId == userId && p.SourceContentId == sourceContentId).FirstOrDefault(); if (UserSourceContentFavorLink == null) { context.UserSourceContentFavorLinks.Add(new Models.UserSourceContentFavorLink { UserId = userId, SourceContentId = sourceContentId }); context.SaveChanges(); } } }
/// <summary> /// Reload Source regex list /// </summary> public static void ReloadSourceRegexes() { allGroupRegexes.Clear(); using (Models.ICContext context = new Models.ICContext()) { foreach (var regexGroup in context.SourceRegexGroups.Where(p => p.Domain == "All")) { var regexes = regexGroup.SourceRegexes.ToList(); if (regexes.Count > 0) { allGroupRegexes.Add(new SourceContentRegexGroup(regexGroup.Name, regexGroup.Regex, regexGroup.Decode, regexes)); } } } }
public static IList<Models.SourceContentView> GetUserUnReadContents(int companyId, int userId, string keywords, string province, DateTime beginDate, DateTime endDate, int page, int pageSize, out int count) { using (Models.ICContext context = new Models.ICContext()) { var query = (from p in context.Sources join q in context.SourceContents on p.SourceId equals q.SourceId join s in context.UserSourceLinks on p.SourceId equals s.SourceId join r in context.UserSourceContentLinks on new { s.UserId, q.SourceContentId } equals new { r.UserId, r.SourceContentId } join f in context.UserSourceContentFavorLinks on new { s.UserId, q.SourceContentId } equals new { f.UserId, f.SourceContentId } into fDefault from fD in fDefault.DefaultIfEmpty() where p.Company == companyId && s.UserId == userId && (string.IsNullOrEmpty(keywords) || q.Content.Contains(keywords)) && (string.IsNullOrEmpty(province) || s.SourceName.Contains(province)) && q.SourceDate >= beginDate && q.SourceDate <= endDate orderby q.AddDate descending, q.AddHour - (q.AddHour % s.Interval) descending, q.SourceDate descending select new Models.SourceContentView { SourceId = p.SourceId, IsNew = true, IsFavor = fD != null, Source = s.SourceName, SourceContentId = q.SourceContentId, SourceDate = q.SourceDate, AddTime = q.AddTime, AddDate = q.AddDate, AddHours = q.AddHour - (q.AddHour % s.Interval), Content = q.Content, ContentType = q.ContentType, Url = q.Url }); count = query.Count(); return query.Skip(page > 0 ? page * pageSize - pageSize : 0).Take(pageSize).ToList(); } }
public static IList<Models.SourceContent> GetSourceContents(int sourceId) { using (Models.ICContext context = new Models.ICContext()) { return context.SourceContents.Where(p => p.SourceId == sourceId).ToList(); } }
public static IList<Models.SourceContentView> GetAllSourceContents(int companyId, string keywords, string province, DateTime beginDate, DateTime endDate, int page, int pageSize, out int count) { using (Models.ICContext context = new Models.ICContext()) { var query = (from p in context.Sources join q in context.SourceContents on p.SourceId equals q.SourceId where p.Company == companyId && (string.IsNullOrEmpty(keywords) || q.Content.Contains(keywords)) && (string.IsNullOrEmpty(province) || p.SourceName.Contains(province)) && q.SourceDate >= beginDate && q.SourceDate <= endDate orderby q.AddTime descending, q.SourceDate descending select new Models.SourceContentView { SourceId = p.SourceId, IsNew = false, IsFavor = false, SourceContentId = q.SourceContentId, SourceDate = q.SourceDate, AddTime = q.AddTime, AddDate = q.AddDate, AddHours = q.AddHour, Content = q.Content, ContentType = q.ContentType, Source = p.SourceName, Url = q.Url }); count = query.Count(); return query.Skip(page > 0 ? page * pageSize - pageSize : 0).Take(pageSize).ToList(); } }
public static List<Models.SourceView> GetSourceList(int userId, string search, int page, int pageSize, out int count) { using (Models.ICContext context = new Models.ICContext()) { var query = (from p in context.Sources join q in context.UserSourceLinks on p.SourceId equals q.SourceId where q.UserId == userId && (String.IsNullOrEmpty(search) || q.SourceName.Contains(search)) orderby q.SourceName select new Models.SourceView { SourceId = p.SourceId, SourceName = q.SourceName, Url = p.Url, CreateTime = q.CreateTime, Interval = q.Interval }); count = query.Count(); return query.Skip(page > 0 ? page * pageSize - pageSize : 0).Take(pageSize).ToList(); } }
public UserController() { this.context = new ICContext(); }
/// <summary> /// Get watched sources /// </summary> private IList<Models.Source> GetWatchedSources() { using (Models.ICContext context = new Models.ICContext()) { return (from p in context.Sources.Where(p => p.Interval > 0).ToList() //join q in this.WatchedSources //on p.SourceId equals q.SourceId into watchedSourcesDefault //from r in watchedSourcesDefault.DefaultIfEmpty() //where r == null select p).ToList(); } }
public static void AddSource(int company, int userId, Models.SourceView userSource) { if (string.IsNullOrEmpty(userSource.SourceName) || string.IsNullOrEmpty(userSource.Url)) { throw new ArgumentException("任务名称和任务地址不能为空!"); } if (!(userSource.Url.StartsWith("http://") || userSource.Url.StartsWith("https://"))) { userSource.Url = "http://" + userSource.Url; } using (Models.ICContext context = new Models.ICContext()) { if (userSource.SourceId > 0) { var sourceInDB = context.UserSourceLinks.Where(p => p.UserId == userId && p.SourceId == userSource.SourceId).FirstOrDefault(); if (sourceInDB != null) { sourceInDB.SourceName = userSource.SourceName; sourceInDB.Interval = userSource.Interval; context.SaveChanges(); } } else { var sourceInDB = context.Sources.Where(p => p.Url == userSource.Url).FirstOrDefault(); Models.UserSourceLink userSourceLinkInDB = null; if (sourceInDB == null) { Models.Source source = new Models.Source() { SourceName = userSource.SourceName, Url = userSource.Url, Domain = GetDomain(userSource.Url), Interval = userSource.Interval, CreateTime = DateTime.Now, Company = company, SourceType = 1 }; source.SourceUrls.Add(new Models.SourceUrl { Url = userSource.Url, Enabled = true }); source.UserSourceLinks.Add(new Models.UserSourceLink() { Source = sourceInDB, SourceName = userSource.SourceName, Interval = userSource.Interval, UserId = userId, CreateTime = DateTime.Now, UpdateTime = DateTime.Now }); context.Sources.Add(source); context.SaveChanges(); // collect system info SourceContentManager.ReloadSourceRegexes(); SourceContentManager.Collect(source, DateTime.Now, SourceContentType.System); } else { userSourceLinkInDB = sourceInDB.UserSourceLinks.Where(p => p.UserId == userId).FirstOrDefault(); if (userSourceLinkInDB == null) { userSourceLinkInDB = new Models.UserSourceLink() { SourceName = userSource.SourceName, Interval = userSource.Interval, Source = sourceInDB, UserId = userId, CreateTime = DateTime.Now, UpdateTime = DateTime.Now }; sourceInDB.UserSourceLinks.Add(userSourceLinkInDB); context.SaveChanges(); var queryDate = DateTime.Now.Date.AddMonths(-1); var sourceCotents = context.SourceContents.Where(p => p.SourceId == sourceInDB.SourceId && p.SourceDate >= queryDate).ToList(); if (sourceCotents.Count > 0) { foreach (var sourceContent in sourceCotents) { sourceContent.UserSourceContentLinks.Add(new Models.UserSourceContentLink { UserId = userId }); } } context.SaveChanges(); } } } } }
public static void RemoveSource(int userId, int sourceId) { using (Models.ICContext context = new Models.ICContext()) { context.Database.ExecuteSqlCommand(@" Delete From P From UserSourceContentLink P join SourceContent Q on P.SourceContentId=Q.SourceContentId join UserSourceLink R on Q.SourceId=R.SourceId Where P.UserId = {0} and R.SourceId = {1}", userId, sourceId); context.Database.ExecuteSqlCommand(@" Delete From P From UserSourceContentFavorLink P join SourceContent Q on P.SourceContentId=Q.SourceContentId join UserSourceLink R on Q.SourceId=R.SourceId Where P.UserId = {0} and R.SourceId = {1}", userId, sourceId); context.Database.ExecuteSqlCommand(@" Delete From UserSourceLink Where UserId = {0} and SourceId = {1}", userId, sourceId); ; } }
public static List<Models.SourceView> GetSourceList(int userId) { using (Models.ICContext context = new Models.ICContext()) { var query = (from p in context.Sources join q in context.UserSourceLinks on p.SourceId equals q.SourceId where q.UserId == userId orderby q.SourceName select new Models.SourceView { SourceId = p.SourceId, SourceName = q.SourceName, Url = p.Url, CreateTime = q.CreateTime, Interval = q.Interval }); return query.ToList(); } }
public static List<Models.Source> GetSourceList() { using (Models.ICContext context = new Models.ICContext()) { return context.Sources.OrderBy(p => p.SourceName).ToList(); } }
/// <summary> /// Get source content /// </summary> /// <param name="source">watched source</param> /// <param name="collectTime">collect time</param> public static void Collect(Models.Source source, DateTime collectTime, SourceContentType sourceContentType) { using (Models.ICContext context = new Models.ICContext()) { var userSourceLinks = context.UserSourceLinks.Where(p => p.SourceId == source.SourceId).ToList(); if (userSourceLinks.Count == 0) { return; } var sourceUrls = context.SourceUrls.Where(p => p.SourceId == source.SourceId && p.Enabled).ToList(); foreach (var sourceUrl in sourceUrls) { string response = Utility.RequestHelper.GetResponse(sourceUrl.Url); var regexGroups = context.SourceRegexGroups.Where(p => p.Domain == source.Domain).ToList(); if (regexGroups != null && regexGroups.Count > 0) { List<SourceContentRegexGroup> groupRegexes = new List<SourceContentRegexGroup>(); foreach (var regexGroup in regexGroups) { var regexes = regexGroup.SourceRegexes.ToList(); if (regexes.Count > 0) { groupRegexes.Add(new SourceContentRegexGroup(regexGroup.Name, regexGroup.Regex, regexGroup.Decode, regexes)); } } Collect(source, userSourceLinks, collectTime, sourceContentType, context, response, groupRegexes); } else { Collect(source, userSourceLinks, collectTime, sourceContentType, context, response, allGroupRegexes); } } } }
public static Models.Source GetSource(int id) { using (Models.ICContext context = new Models.ICContext()) { return context.Sources.Find(id); } }