//убирает подписку public static void RemoveSub(string userId, string sub, string subKey) { using (BotContext db = new BotContext()) { db.Users.Remove(new User(userId, sub, subKey)); db.SaveChanges(); } }
public static void CleanReadPosts() { using (BotContext db = new BotContext()) { db.UsersSeenContent.RemoveRange(db.UsersSeenContent); db.SaveChanges(); } }
//Убирает пользователя public static void RemoveUser(string userId) { using (BotContext db = new BotContext()) { db.UsersSubs.Remove(new UserSubCount(userId)); var removedSubs = db.Users.Where(user => user.UserId == userId); db.Users.RemoveRange(removedSubs.ToArray()); db.SaveChanges(); } }
//Получает количество подписок пользователя public static int GetUserSubs(string userId) { using (BotContext db = new BotContext()) { UserSubCount user = db .UsersSubs .ToList() .FirstOrDefault(user => user.UserID == userId); db.SaveChanges(); return(user.Count); } }
//добавляет нового пользователя public static void AddUser(string userId) { using (BotContext db = new BotContext()) { var newUser = new UserSubCount(userId); if (db.UsersSubs.ToList().Exists(user => user == newUser)) { return; } db.UsersSubs.Add(newUser); db.SaveChanges(); } }
//добавляет нового пользователя public static void AddUser(string userId) { using (BotContext db = new BotContext()) { if (db.Users.Any(user => user.UserId == userId)) { throw new ArgumentException($"User {userId} already exists"); } var newUser = new User(userId); db.Users.Add(newUser); db.SaveChanges(); } }
//Получает количество подписок пользователя public static int GetUserSubCount(string userId) { using (BotContext db = new BotContext()) { db.SaveChanges(); User user = db.Users.FirstOrDefault(user => user.UserId == userId); if (user == null) { throw new ArgumentException($"User {userId} doesn't exist"); } return(user.SubCount); } }
//получает список подписок пользователя public static List <string> GetUserSubList(string userId) { using (BotContext db = new BotContext()) { db.SaveChanges(); return(db .Users .ToList() .Where(user => user.UserId == userId) .Select(user => user.Subscription + " " + user.SubscriptionKey) .ToList()); } }
//добавляет пост в список прочитанных для данного пользователя public static bool AddReadPost(string userId, string postToken) { using (BotContext db = new BotContext()) { var post = new UserReadPosts(userId, postToken); if (db.UsersPosts.ToList().Exists(a => a.UserId == userId && a.PostToken == postToken)) { return(false); } db.UsersPosts.Add(post); db.SaveChanges(); } return(true); }
//Убирает пользователя public static void RemoveUser(string userId) { using (BotContext db = new BotContext()) { var user = db.Users.Where(x => x.UserId == userId).First(); if (user == null) { throw new ArgumentException($"User {userId} doesn't exist"); } db.Users.Remove(user); db.UsersSubscriptions.RemoveRange(db.UsersSubscriptions.Where(x => x.UserId == userId)); db.UsersSeenContent.RemoveRange(db.UsersSeenContent.Where(x => x.UserId == userId)); db.SaveChanges(); } }
//получает список подписок пользователя internal static IEnumerable <SingleSub> GetUserSubs(string userId) { using (BotContext db = new BotContext()) { db.SaveChanges(); User user = db.Users.FirstOrDefault(user => user.UserId == userId); if (user == null) { throw new ArgumentException($"User {userId} doesn't exist"); } return(db .UsersSubscriptions .Where(sub => sub.UserId == userId) .Select(sub => new SingleSub(sub.Subscription, sub.SubscriptionKey))); } }
//добавляет новую подписку public static void AddSub(string userId, string sub, string subKey) { using (BotContext db = new BotContext()) { if (db.UsersSubscriptions.Any( user => user.UserId == userId && user.Subscription == sub && user.SubscriptionKey == subKey)) { throw new ArgumentException("Subscription already exists"); } db.UsersSubscriptions.Add(new UserSubscription(userId, sub, subKey, GetUserSubCount(userId))); db.SaveChanges(); } }
//добавляет контент в список прочитанных для данного пользователя public static void AddSeenContent(string userId, string contentId) { using (BotContext db = new BotContext()) { if (!db.Users.Any(x => x.UserId == userId)) { throw new ArgumentException($"User {userId} doesn't exist"); } if (HaveUserSeenContent(userId, contentId)) { return; } db.UsersSeenContent.Add(new UserSeenContent(userId, contentId)); db.SaveChanges(); } }
//циклично сдвигает приоритет подписок пользователя public static void ShiftPriority(string userId) { using (BotContext db = new BotContext()) { if (!db.Users.Any(x => x.UserId == userId)) { throw new ArgumentException($"User {userId} doesn't exist"); } var subs = db.UsersSubscriptions.Where(x => x.UserId == userId).ToList(); foreach (var sub in subs) { sub.Priority = (sub.Priority + 1) % subs.Count(); } db.SaveChanges(); } }
//добавляет новую подписку public static void AddSub(string userId, string sub, string subKey) { using (BotContext db = new BotContext()) { if (db.Users .ToList() .Exists ( user => user.UserId == userId && user.Subscription == sub && user.SubscriptionKey == subKey )) { return; } db.Users.Add(new User(userId, sub, subKey)); db.SaveChanges(); } }
//убирает подписку public static void RemoveSub(string userId, string sub, string subKey) { using (BotContext db = new BotContext()) { var deletedSub = db.UsersSubscriptions.Where(x => x.UserId == userId && x.Subscription == sub && x.SubscriptionKey == subKey).FirstOrDefault(); if (deletedSub == null) { throw new ArgumentException("Subscription doesn't exists"); } db.UsersSubscriptions.Remove(deletedSub); foreach (var c in db.UsersSubscriptions .Where(x => x.UserId == userId && x.Priority > deletedSub.Priority)) { c.Priority--; } db.SaveChanges(); } }
//получает нужную подписку public static SingleSub GetSubWithZeroPriority(string userId) { using (BotContext db = new BotContext()) { db.SaveChanges(); User user = db.Users.FirstOrDefault(user => user.UserId == userId); if (user == null) { throw new ArgumentException($"User {userId} doesn't exist"); } var sub = db .UsersSubscriptions .FirstOrDefault(sub => sub.UserId == userId && sub.Priority == 0); if (sub == null) { return(null); } return(new SingleSub(sub)); } }