static string TrySubscribe(long chatId, Group page) { if (page == null) { return("Ошибка параметра: данная страница не существует."); } else if (page.Type != VkNet.Enums.SafetyEnums.GroupType.Page) { return("Ошибка параметра: данная страница не является пабликом."); } else { Subscriber subscriberModel = AddOrReturnSubscriber(chatId); PublicPage pageModel = AddOrReturnPublicPage(page); if (pageModel == null) { return("Ошибка системы: данные в данном паблике повреждены. Попробуйте подписаться после обновления последних двух постов."); } if (db.Subscriptions.Any(subscription => subscription.PublicPageId == pageModel.Id && subscription.SubscriberId == subscriberModel.Id)) { return("Ошибка параметра: вы уже подписаны на данную страницу."); } } return(null); }
private static List <Post> GetNewPosts(PublicPage page) { return(VkService.GetLastPosts(page.PageVkId, 50) .Where(i => i.Id > page.LastPostId) .OrderBy(o => o.Id) .ToList <Post>()); }
static PublicPage AddOrReturnPublicPage(Group group) { PublicPage page; if (!db.PublicPages.Any(o => o.PageVkId == group.Id)) { long lastPostId = GetLastPostId(group.Id); if (lastPostId != Int64.MaxValue) { page = new PublicPage() { PageVkId = group.Id, LastPostId = GetLastPostId(group.Id), Name = group.Name, ScreenName = group.ScreenName }; db.PublicPages.Add(page); db.SaveChanges(); } else { return(null); } } else { page = db.PublicPages.Where(o => o.PageVkId == group.Id).First(); } return(page); }
static string Unsubscribe(long chatId, Group page) { Subscriber subscriberModel = AddOrReturnSubscriber(chatId); PublicPage pageModel = AddOrReturnPublicPage(page); Subscription subscriptionModel = db.Subscriptions.Single(subscription => subscription.PublicPageId == pageModel.Id); subscriberModel.Subscriptions.Remove(subscriptionModel); db.SaveChanges(); return("Вы успешно отписались от '" + page.Name + "'."); }
static string Subscribe(long chatId, Group page) { Subscriber subscriberModel = AddOrReturnSubscriber(chatId); PublicPage pageModel = AddOrReturnPublicPage(page); subscriberModel.Subscriptions.Add(new Subscription { PublicPageId = pageModel.Id, SubscriberId = subscriberModel.Id }); db.SaveChanges(); return("Вы успешно подписались на '" + page.Name + "'."); }
private static List <Subscriber> GetSubscribers(PublicPage page) { List <Subscriber> subscribers = new List <Subscriber>(); List <Subscription> subscriptions = db.Subscriptions .Include(sub => sub.Subscriber) .Where(subscription => subscription.PublicPageId == page.Id) .ToList <Subscription>(); foreach (var subscription in subscriptions) { subscribers.Add(subscription.Subscriber); } return(subscribers); }
static string TryUnsubscribe(long chatId, Group page) { Subscriber subscriberModel = AddOrReturnSubscriber(chatId); PublicPage pageModel = AddOrReturnPublicPage(page); if (pageModel == null) { return("Ошибка системы: данные в данном паблике повреждены. Попробуйте подписаться после обновления последних двух постов."); } if (!db.Subscriptions.Any(subscription => subscription.PublicPageId == pageModel.Id && subscription.SubscriberId == subscriberModel.Id)) { return("Ошибка параметра: вы не подписаны на данную страницу."); } return(null); }