public RSSFeedItem UpdateFeed(RSSFeedItem item) { try { var dc = new RNManagementContext(); var feeds = (from xx in dc.RssFeeds where xx.RssId == item.FeedId select xx).FirstOrDefault(); feeds.UrlOfRss = item.RSSUrl; feeds.NameOfSite = item.NameOfOrganization; feeds.UrlOfSite = item.MainUrl; feeds.InitialImageUrl = item.InitialImageUrl; feeds.MainImageUrl = item.MainImageUrl; feeds.CanNotScanFeed = item.CanNotScanFeed; if (!String.IsNullOrEmpty(item.AuthorUserName)) feeds.UserIdToAssignPostsTo = (Guid)Membership.GetUser(item.AuthorUserName).ProviderUserKey; else feeds.UserIdToAssignPostsTo = new Guid(); var catsInDb = feeds.InitialCategories.ToList(); var tagsInDb = feeds.InitialTags.ToList(); foreach (var cat in catsInDb) { var c = item.Categories.Where(x => x.CategoryRNId == cat.CategoryRNId).FirstOrDefault(); if (c == null) feeds.InitialCategories.Remove(cat); } foreach (var cat in item.Categories) { var c = feeds.InitialCategories.Where(x => x.CategoryRNId == cat.CategoryRNId).FirstOrDefault(); if (c == null) feeds.InitialCategories.Add(new DataModels.RN.RSS.RSSFeedCategory() { CategoryRNId = cat.CategoryRNId }); } foreach (var cat in tagsInDb) { var c = item.Tags.Where(x => x.TagName == cat.TagName).FirstOrDefault(); if (c == null) feeds.InitialTags.Remove(cat); } foreach (var cat in item.Tags) { var c = feeds.InitialTags.Where(x => x.TagName == cat.TagName).FirstOrDefault(); if (c == null) feeds.InitialTags.Add(new DataModels.RN.RSS.RSSFeedTag() { TagName = cat.TagName }); } int count = dc.SaveChanges(); return item; } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, GetType()); } return new RSSFeedItem(); }
public RSSFactory AddNewFeed(RSSFeedItem item) { try { var dc = new RNManagementContext(); var ff = dc.RssFeeds.Where(x => x.UrlOfRss == item.RSSUrl).FirstOrDefault(); if (ff == null) { RSSFeed feed = new RSSFeed(); feed.UrlOfRss = item.RSSUrl; feed.UrlOfSite = item.MainUrl; feed.NameOfSite = item.NameOfOrganization; feed.TotalPostsImported = 0; feed.LastCheck = DateTime.UtcNow.AddYears(-100); feed.Created = DateTime.UtcNow; feed.InitialImageUrl = item.InitialImageUrl; feed.MainImageUrl = item.MainImageUrl; feed.CanNotScanFeed = item.CanNotScanFeed; if (!String.IsNullOrEmpty(item.AuthorUserName)) feed.UserIdToAssignPostsTo = (Guid)Membership.GetUser(item.AuthorUserName).ProviderUserKey; foreach (var c in item.Categories) { DataModels.RN.RSS.RSSFeedCategory cat = new DataModels.RN.RSS.RSSFeedCategory(); cat.CategoryRNId = c.CategoryRNId; feed.InitialCategories.Add(cat); } foreach (var t in item.Tags) { DataModels.RN.RSS.RSSFeedTag tag = new DataModels.RN.RSS.RSSFeedTag(); tag.TagName = t.TagName; feed.InitialTags.Add(tag); } dc.RssFeeds.Add(feed); dc.SaveChanges(); } else ff.IsRemoved = false; } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, GetType()); } return this; }