示例#1
0
        public override bool Process(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;
            var text      = string.Empty;

            var list = context.Deputats.ToList().Where(p => p.NameWithInitials.ToLower().Contains(message.Text)).ToList();

            if (list.Count() == 1)
            {
                text = $"Додати депутата {list[0].NameWithInitials} в мій список?";
                var replyMarkup = new InlineKeyboardMarkup(new InlineKeyboardCallbackButton[]
                {
                    new InlineKeyboardCallbackButton("Так", "add_deputat " + list[0].Id),
                    new InlineKeyboardCallbackButton("Ні", "cancel")
                });
                client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, replyMarkup);
                return(true);
            }
            else if (list.Count() > 1)
            {
                text = "Виберіть депутата якого додати в список";

                var keys        = list.Select(p => new InlineKeyboardCallbackButton(p.NameWithInitials, $"add_deputat {p.Id}")).ToList();
                var replyMarkup = new InlineKeyboardMarkup(keys.ToArray());
                client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, replyMarkup);
                return(true);
            }
            return(false);
        }
示例#2
0
 public DeputatProcessor(IBudgetIfContext db)
 {
     _db           = db;
     deputatCache  = _db.Deputats.ToList();
     fractionCache = _db.Fractions.ToList();
     _webConnector = new WebConnector();
 }
示例#3
0
        public override void Execute(IBudgetIfContext context, CallbackQuery query, TelegramBotClient client, ChatUser user)
        {
            var queryText = query.Data;
            var parts     = queryText.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length > 1)
            {
                var id = Convert.ToInt32(parts[1]);

                var exist = user.Deputats.FirstOrDefault(p => p.Id == id);
                if (exist == null)
                {
                    var deputat = context.Deputats.FirstOrDefault(p => p.Id == id);
                    if (deputat == null)
                    {
                        client.SendTextMessageAsync(user.TelegramId, "Депутата не знайдено");
                        return;
                    }
                    else
                    {
                        user.Deputats.Add(deputat);
                        context.SaveChanges();
                        client.SendTextMessageAsync(user.TelegramId, $"Депутат {deputat.NameWithInitials} доданий до списку");
                        return;
                    }
                }
                else
                {
                    var text = "Такий депутат вже в списку";
                    client.SendTextMessageAsync(user.TelegramId, text);
                }
            }
        }
示例#4
0
        public override void Execute(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user)
        {
            var chatId = message.Chat.Id;
            var text   = "Тут все просто. Наберіть прізвище депутата (наприклад Шевченко), і додайте його собі в список (ми вже додали пару випадкових)." +
                         "\n Перегляд списку за командою /list. Для того, щоб видалити команда скористайтесь командою /remove. " +
                         "Для перегляду голосування наберіть номер законопроекту, наприклад, 6327 - номер законопроекту реформи медичної системи. Бот покаже голосування за перше і друге читання вибраних депутатів. " +
                         "Наберіть /top і бот виведе 20 найобговорюваніших законопроектів 2017 року.";

            client.SendTextMessageAsync(chatId, text);
        }
示例#5
0
        public override void Execute(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;

            var text = string.Join("\n", user.Deputats.Select(p => p.NameWithInitials));

            client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Default);
            return;
        }
示例#6
0
        public TransactionProcessor(IBudgetIfContext db)
        {
            _db = db;
            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <Models.Transaction, Transaction>()
                .ForMember(p => p.amount, opt => opt.MapFrom(r => Convert.ToDouble(r.amount)))
                .ForMember(p => p.doc_date, opt => opt.MapFrom(r => new DateTime(Convert.ToInt32(r.doc_date.Substring(6, 4)), Convert.ToInt32(r.doc_date.Substring(3, 2)), Convert.ToInt32(r.doc_date.Substring(0, 2)))))
                .ForMember(p => p.doc_v_date, opt => opt.MapFrom(r => new DateTime(Convert.ToInt32(r.doc_v_date.Substring(6, 4)), Convert.ToInt32(r.doc_v_date.Substring(3, 2)), Convert.ToInt32(r.doc_v_date.Substring(0, 2)))))
                .ForMember(p => p.trans_date, opt => opt.MapFrom(r => new DateTime(Convert.ToInt32(r.trans_date.Substring(6, 4)), Convert.ToInt32(r.doc_v_date.Substring(3, 2)), Convert.ToInt32(r.trans_date.Substring(0, 2)))))
                .ForMember(p => p.number, opt => opt.MapFrom(r => r.id))
                .ForMember(p => p.id, opt => opt.Ignore());
            });

            _mapper = config.CreateMapper();
        }
示例#7
0
        public override bool Process(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;
            var items     = context.Polls.Where(p => p.SubjectNo.Contains(message.Text)).ToList();

            if (items.Any())
            {
                var filtered = new List <Poll>();
                var first    = items.Where(p => p.Subject.Contains(" - за основу")).ToList();
                if (first != null)
                {
                    filtered.AddRange(first);
                }
                var second = items.Where(p => p.Subject.Contains(" - у другому читанні та в цілому")).ToList();
                if (second != null)
                {
                    filtered.AddRange(second);
                }

                var list = user.Deputats.ToList();
                var text = "";
                foreach (var item in filtered)
                {
                    text += "<b>" + item.Subject.Trim() + "</b>\n";
                    text += "Час дата: " + item.VoteDate.ToString("yyyy-MM-dd HH:mm") + "\n";
                    text += (item.IsAccepted ? "<b>Рішення прийнято</b>" : "<b>Рішення провалено</b>") + "\n";
                    text += $"За: {item.Yes}\n Проти: {item.No}\n Утрималось: {item.Abstain}\n Не голосували: {item.NotVoted}\n";
                    text += "\n";
                    foreach (var deputat in list)
                    {
                        var vote = context.Votes.Where(p => p.PollId == item.Id && p.DeputatId == deputat.Id).FirstOrDefault();
                        if (vote != null)
                        {
                            text += $"<i>{deputat.NameWithInitials}</i> : {GetAnswer(vote.Answer)}" + "\n";
                        }
                    }
                    text += "\n\n";
                }
                client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Html);
                return(true);
            }
            return(false);
        }
示例#8
0
        public override void Execute(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user)
        {
            var chatId = message.Chat.Id;

            var list = user.Deputats.ToList();
            var keys = list.Select(p => new InlineKeyboardCallbackButton(p.NameWithInitials, $"remove_deputat {p.Id}")).ToList();

            var matrix = new List <InlineKeyboardButton[]>();
            var offset = 0;
            List <InlineKeyboardButton> subList = new List <InlineKeyboardButton>();

            do
            {
                subList = keys.Skip(offset).Take(3).Select(p => (InlineKeyboardButton)p).ToList();
                offset += 3;
                matrix.Add(subList.ToArray());
            } while (subList.Count > 0);

            var replyMarkup = new InlineKeyboardMarkup(matrix.ToArray());

            var text = "Виберіть депутата якого видалити:";

            client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, replyMarkup);
        }
示例#9
0
 public abstract void Execute(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user);
示例#10
0
 public TerrNumberProcessor(IBudgetIfContext db)
 {
     _db           = db;
     _webConnector = new WebConnector();
 }
示例#11
0
 public PollSubjectNoProcessor(IBudgetIfContext db)
 {
     _db           = db;
     _webConnector = new WebConnector();
 }
示例#12
0
 public abstract void Execute(IBudgetIfContext context, CallbackQuery query, TelegramBotClient client, ChatUser user);
示例#13
0
 public abstract bool Process(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user);
示例#14
0
        public override void Execute(IBudgetIfContext context, Message message, TelegramBotClient client, ChatUser user)
        {
            var chatId       = message.Chat.Id;
            var messageId    = message.MessageId;
            var authority    = context.Authorities.First();
            var pollList     = authority.PollLists.First();
            var list         = pollList.PollBatches.ToList();
            var opinions     = authority.Opinions.ToList();
            var listDeputats = user.Deputats.ToList();

            var parts = message.Text.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length > 1)
            {
                var id    = Convert.ToInt32(parts[1]);
                var batch = list.FirstOrDefault(p => p.Id == id);
                if (batch != null)
                {
                    var opinion = opinions.FirstOrDefault(p => p.PollBatchId == batch.Id);
                    var text    = $"/top_{batch.Id} {RemoveBlaBla(batch.Name).Trim()} \n<b>{batch.Status.ToUpper().Trim()}</b> " + "\n";
                    if (opinion != null)
                    {
                        text += $"<b>{opinion.Description}</b>\n";
                    }

                    var first = batch.Polls.OrderByDescending(p => p.VoteDate).FirstOrDefault(p => p.Subject.Contains(" - за основу"));
                    if (first != null)
                    {
                        text += "<i>Перше читання:</i>\n";
                        text += "Дата: " + first.VoteDate.ToString("yyyy-MM-dd HH:mm") + "\n";
                        foreach (var deputat in listDeputats)
                        {
                            var vote = context.Votes.Where(p => p.PollId == first.Id && p.DeputatId == deputat.Id).FirstOrDefault();
                            if (vote != null)
                            {
                                text += $"<i>{deputat.NameWithInitials}</i> : {GetAnswer(vote.Answer)} {(opinion != null ? "<b>(" + ZradaPeremoga(opinion.IsSupport > 0, vote.Answer) + ")</b>" : "")}" + "\n";
                            }
                        }
                        text += "\n";
                    }
                    var second = batch.Polls.OrderByDescending(p => p.VoteDate).FirstOrDefault(p => p.Subject.Contains(" - у другому читанні та в цілому"));
                    if (second != null)
                    {
                        text += "<i>Друге читання:</i>\n";
                        text += "Дата: " + second.VoteDate.ToString("yyyy-MM-dd HH:mm") + "\n";
                        foreach (var deputat in listDeputats)
                        {
                            var vote = context.Votes.Where(p => p.PollId == first.Id && p.DeputatId == deputat.Id).FirstOrDefault();
                            if (vote != null)
                            {
                                text += $"<i>{deputat.NameWithInitials}</i> : {GetAnswer(vote.Answer)} {(opinion != null ? "<b>(" + ZradaPeremoga(opinion.IsSupport > 0, vote.Answer)+ ")</b>" : "")}" + "\n";
                            }
                        }
                        text += "\n";
                    }
                    client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Html);
                }
                else
                {
                    client.SendTextMessageAsync(chatId, "Нічого не знайдено");
                }
            }
            else
            {
                var text = "";
                foreach (var batch in list)
                {
                    var opinion = opinions.FirstOrDefault(p => p.PollBatchId == batch.Id);
                    if (opinion != null)
                    {
                        text += $"<b>{opinion.Description.ToUpper().Trim()}</b> <i>({(opinion.IsSupport > 0 ? "Перемога" : "Зрада")})</i>\n";
                    }
                    text += $"/top_{batch.Id} {RemoveBlaBla(batch.Name).Trim()} \n<b>{batch.Status.Trim()}</b> " + "\n\n";
                }
                client.SendTextMessageAsync(chatId, text, Telegram.Bot.Types.Enums.ParseMode.Html);
            }
        }
示例#15
0
 public PollBatchProcessor(IBudgetIfContext db)
 {
     _db = db;
     _pollBatchesCache = _db.PollBatches.ToList();
 }
示例#16
0
 public BaseApiController()
 {
     Context = DependencyResolver.Current.GetService <IBudgetIfContext>();
 }
示例#17
0
 public PollBatchNamesProcessor(IBudgetIfContext db)
 {
     _db = db;
 }