public override void Execute() { using (var db = new AppDbContext()) { User user = db.GetUserByTelegramId(Message.From.Id); if (user == null || !user.Subscriptions.Any()) { SendResponse("Вы не подписаны ни на один сериал"); Status = true; return; } if (ShowId != null) { var show = db.GetShowById(ShowId.Value); if (show == null) { SendResponse($"Сериал с идентификатором {ShowId} не найден"); } else { var response = Unsubscribe(user, show); SendResponse(response); } } else { SendSubscriptions(user, GetMessageSize()); } } Status = true; }
public override void Execute() { string response = null; do { User user = GetUser(Message.From); if (user == null || !UserHasSubscriptions(user)) { response = "Вы не подписаны ни на один сериал"; break; } if (ShowId != null) { Show show; using (AppDbContext db = new AppDbContext()) { show = db.GetShowById(ShowId.Value); } if (show == null) { response = $"Сериал с идентификатором {ShowId} не найден"; break; } response = Unsubscribe(user, show); } else { int messageSize; int.TryParse(Arguments, out messageSize); if (messageSize == 0) { messageSize = MaxPageSize; } messageSize = Math.Min(messageSize, MaxPageSize); SendSubscriptions(user, messageSize); } } while (false); if (!string.IsNullOrEmpty(response)) { Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } } Status = true; }
public override void Execute() { Show show; string showTitle = string.Empty; bool subscribeById = ShowId != null; if (ShowId == null) { int messageSize; int.TryParse(Arguments, out messageSize); if (messageSize == 0) { messageSize = MaxPageSize; } messageSize = Math.Min(messageSize, MaxPageSize); ShowId = RequestShow(out showTitle); if (ShowId == null) { SendShowList(showTitle, messageSize); Status = true; return; } } string response; Program.Logger.Info($"{GetType().Name}: {Message.From} is trying to subscribe to '{(subscribeById ? $"Id = {ShowId}" : showTitle)}'"); using (AppDbContext db = new AppDbContext()) { show = db.GetShowById(ShowId.Value); if (show == null) { Program.Logger.Info($"{GetType().Name}: Show '{(subscribeById ? $"Id = {ShowId}" : showTitle)}' was not found"); response = $"Сериал '{(subscribeById ? $"Id = {ShowId}" : showTitle)}' не найден"; Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; return; } Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database"); User user; try { user = db.GetUserByTelegramId(Message.From.Id); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while searching user in database", e); } bool newUser = false; if (user == null) { user = new User { TelegramUserId = Message.From.Id, FirstName = Message.From.FirstName, LastName = Message.From.LastName, Username = Message.From.Username }; newUser = true; } if (newUser) { Program.Logger.Info($"{GetType().Name}: {user} is new User"); } else { Program.Logger.Debug($"{GetType().Name}: User {user} is already exist"); } bool subscriptionExists; Program.Logger.Debug($"{GetType().Name}: Checking for subscription existence"); try { subscriptionExists = user.Subscriptions.Any(s => s.Show.Id == show.Id); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while checking for subscription existence", e); } if (subscriptionExists) { Program.Logger.Info($"{GetType().Name}: User {Message.From} is already subscribed to {show.OriginalTitle}"); response = $"Вы уже подписаны на сериал '{show.Title}'"; } else { Subscription subscription = new Subscription { User = user, Show = show, SubscriptionDate = DateTimeOffset.Now }; if (newUser) { user.Subscriptions.Add(subscription); db.Users.Add(user); } else { db.Subscriptions.Add(subscription); } response = $"Вы подписались на сериал '{show.Title}'"; } Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); try { db.SaveChanges(); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while saving changes to database", e); } } Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; }
public override void Execute() { Show show; string showTitle = string.Empty; bool subscribeById = ShowId != null; if (ShowId == null) { bool showFound = RequestShow(out showTitle); if (!showFound) { SendShowList(showTitle, GetMessageSize()); } Status = true; return; } string response; Program.Logger.Info($"{GetType().Name}: {Message.From} is trying to subscribe to '{(subscribeById ? $"Id = {ShowId}" : showTitle)}'"); using (AppDbContext db = new AppDbContext()) { show = db.GetShowById(ShowId.Value); if (show == null) { Program.Logger.Info($"{GetType().Name}: Show '{(subscribeById ? $"Id = {ShowId}" : showTitle)}' was not found"); response = $"Сериал '{(subscribeById ? $"Id = {ShowId}" : showTitle)}' не найден"; Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; return; } Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database"); var user = db.GetUserByTelegramId(Message.From.Id); bool newUser = false; if (user == null) { user = new User { TelegramUserId = Message.From.Id, FirstName = Message.From.FirstName, LastName = Message.From.LastName, Username = Message.From.Username }; newUser = true; } Program.Logger.Debug($"{GetType().Name}: Checking for subscription existence"); var subscriptionExists = user.Subscriptions.Any(s => s.Show.Id == show.Id); if (subscriptionExists) { Program.Logger.Info($"{GetType().Name}: User {Message.From} is already subscribed to {show.OriginalTitle}"); response = $"Вы уже подписаны на сериал \"{show.Title}\" ({show.SiteType.Title})"; } else { Subscribe(db, user, show, newUser); response = $"Вы подписались на сериал \"{show.Title}\" ({show.SiteType.Title})"; } Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); db.SaveChanges(); } Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; }