public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            var posterId = command.Args[0];
            var poster   = PosterRepository.Read(posterId);

            return(CommandResult.AsSucceed(string.Empty, photoId: poster.FileId));
        }
Esempio n. 2
0
        private CommandResult ShowOne(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            var personId = command.Args[0];
            var person   = PersonRepository.Read(personId);

            return(CommandResult.AsSucceed(GetPersonString(person), inlineMenu: CreateMenu(syntax, personId), update: true));
        }
Esempio n. 3
0
        public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            var args     = command.Args[0].Split(" ", 2);
            var personId = args[0];
            var text     = args[1];
            var person   = PersonRepository.Read(personId);

            var letter = new Letter
            {
                Id             = text.GetHashCode().ToString(),
                Text           = text,
                PersonId       = personId,
                SenderId       = meta.UserId,
                SenderUserName = meta.NickName
            };

            letterRepository.Write(letter);

            var response = $"Письмо для {person.Name} от [{meta.NickName}](tg://user?id={meta.UserId}) \n\n{text}";
            var result   = CommandResult.AsSucceed("Отправлено");

            result.AdditionalMessage = CommandResult.AsSucceed(response, useMarkdown: true,
                                                               inlineMenu: CreateMenu(syntax, letter.Id),
                                                               chatId: UnprocessedLettersChatId);
            return(result);
        }
 public CommandManager(
     ITokenizer tokenizer,
     ICommandSyntax commandSyntax)
 {
     this.tokenizer     = tokenizer;
     this.commandSyntax = commandSyntax;
 }
Esempio n. 5
0
        private static InlineMenu CreateMenu(ICommandSyntax commandSyntax, string letterId)
        {
            var processCommandName = commandSyntax.GetCommandName <ProcessLetterCommandExecutor>();
            var builder            = InlineMenu.Build();

            builder.AddRow().WithCell("Обработано", processCommandName, letterId);
            return(builder.Create());
        }
Esempio n. 6
0
        public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            var exportAll = command.Args[0] == "all";
            var export    = exporter.Export(exportAll ? null : command.Args[0]);
            var fileName  = exportAll ? "Все" : command.Args[0];

            return(CommandResult.AsSucceed(string.Empty, fileContent: export, fileName: $"{fileName}.csv"));
        }
        public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax1)
        {
            var commands = syntax
                           .GetCommands()
                           .Select(c => $"/{c.Name} {c.Help}")
                           .ToArray();

            return(CommandResult.AsSucceed(string.Join(Environment.NewLine, commands)));
        }
Esempio n. 8
0
        public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            switch (command.Args.Length)
            {
            case 1:
                return(ShowOne(command, meta, syntax));

            default:
                throw new ArgumentException();
            }
        }
        private static InlineMenu CreateMenu(ICommandSyntax commandSyntax)
        {
            var organizeCommandName = commandSyntax.GetCommandName <OrganizeCommandExecutor>();
            var findCommandName     = commandSyntax.GetCommandName <FindCommandExecutor>();

            var builder = InlineMenu.Build();

            builder.AddRow().WithCell("Организовать", organizeCommandName);
            builder.AddRow().WithCell("Узнать", findCommandName);
            return(builder.Create());
        }
        public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            var letterId = command.Args[0];
            var letter   = letterRepository.Read(letterId);
            var person   = PersonRepository.Read(letter.PersonId);

            letter.IsProcessed = true;
            letterRepository.Write(letter);

            var response = $"Письмо для {person.Name} от [{letter.SenderUserName}](tg://user?id={letter.SenderId}) обработано\n\n{letter.Text}";

            return(CommandResult.AsSucceed(response, useMarkdown: true, chatId: ProcessedLettersChatId));
        }
Esempio n. 11
0
        private CommandResult ShowList(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            var query   = command.Args[0];
            var persons = query == "all"
                ? PersonRepository.ReadAll()
                : PersonRepository.Select(query).Concat(PersonRepository.SelectByLawsuit(query)).GroupBy(x => x.Id)
                          .Select(x => x.First()).ToList();

            var personsString = string.Join("\n", persons.Select((p, i) => $"{i + 1}. {p.Name} /show_{p.Id}"));

            return(CommandResult.AsSucceed($"Найдено {persons.Count}:\n{personsString}",
                                           inlineMenu: CreateMenu(syntax, query),
                                           update: meta.FromInlineMenu));
        }
Esempio n. 12
0
        public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
        {
            switch (command.Args.Length)
            {
            case 0:
                return(SelectLawsuit(meta, syntax));

            case 1:
                return(CreateDocument(command, meta, syntax));

            default:
                throw new ArgumentException();
            }
        }
Esempio n. 13
0
        protected InlineMenu CreateLawsuitsMenu(ICommandSyntax syntax, IEnumerable <string> lawsuits)
        {
            var commandName      = syntax.GetCommandName(GetType());
            var beginCommandName = syntax.GetCommandName <DefaultStartSuperCommandExecutor>();
            var builder          = InlineMenu.Build();

            foreach (var lawsuit in lawsuits.OrderBy(x => x))
            {
                builder.AddRow().WithCell(lawsuit, commandName, CreateCommandArg(lawsuit));
            }
            builder.AddRow().WithCell("Все", commandName, "all");
            builder.AddRow().WithCell("В начало", beginCommandName);
            return(builder.Create());
        }
Esempio n. 14
0
        private InlineMenu CreateMenu(ICommandSyntax commandSyntax, string lawsuit)
        {
            var startCommandName          = commandSyntax.GetCommandName <DefaultStartSuperCommandExecutor>();
            var findCommandName           = commandSyntax.GetCommandName <FindCommandExecutor>();
            var downloadPosterCommandName = commandSyntax.GetCommandName <DownloadPosterCommandExecutor>();

            var lawsuitPosters = GetLawsuitPosterIds(lawsuit).ToArray();

            var builder = InlineMenu.Build();

            builder.AddRow().WithCell("Найти другого узника совести", findCommandName);
            if (lawsuitPosters.Any())
            {
                builder.AddRow().WithCell("Скачать плакат для печати", downloadPosterCommandName, lawsuitPosters[0]);
            }
            builder.AddRow().WithCell("В начало", startCommandName);
            return(builder.Create());
        }
Esempio n. 15
0
        protected InlineMenu CreateMenu(Command command, ICommandSyntax commandSyntax)
        {
            var startCommandName          = commandSyntax.GetCommandName <DefaultStartSuperCommandExecutor>();
            var organizeCommandName       = commandSyntax.GetCommandName <OrganizeCommandExecutor>();
            var downloadListCommandName   = commandSyntax.GetCommandName <DownloadListCommandExecutor>();
            var downloadPosterCommandName = commandSyntax.GetCommandName <DownloadPosterCommandExecutor>();

            var lawsuit        = command.Args[0];
            var lawsuitPosters = GetLawsuitPosterIds(lawsuit).ToArray();
            var builder        = InlineMenu.Build();

            builder.AddRow().WithCell("Найти другую группу", organizeCommandName);
            builder.AddRow().WithCell("Скачать cписок для печати", downloadListCommandName, lawsuit);
            if (lawsuitPosters.Any())
            {
                builder.AddRow().WithCell("Скачать плакат для печати", downloadPosterCommandName, lawsuitPosters[0]);
            }
            builder.AddRow().WithCell("В начало", startCommandName);
            return(builder.Create());
        }
Esempio n. 16
0
        protected InlineMenu CreateMenu(ICommandSyntax commandSyntax, string personId)
        {
            var startCommandName          = commandSyntax.GetCommandName <DefaultStartSuperCommandExecutor>();
            var findCommandName           = commandSyntax.GetCommandName <FindCommandExecutor>();
            var downloadCardCommandName   = commandSyntax.GetCommandName <DownloadCardCommandExecutor>();
            var downloadPosterCommandName = commandSyntax.GetCommandName <DownloadPosterCommandExecutor>();

            var personPosters = GetPersonPosters(personId).ToArray();

            var builder = InlineMenu.Build();

            builder.AddRow().WithCell("Найти другого узника совести", findCommandName);
            builder.AddRow().WithCell("Скачать карточку для печати", downloadCardCommandName);
            if (personPosters.Any())
            {
                builder.AddRow().WithCell("Скачать плакат для печати", downloadPosterCommandName, personPosters[0]);
            }
            builder.AddRow().WithCell("В начало", startCommandName);
            return(builder.Create());
        }
 public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
 {
     try
     {
         var person = personParser.Parse(command.Args[0], meta.PhotoId);
         PersonRepository.Write(person);
         return(CommandResult.AsSucceed("Карточка добавлена"));
     }
     catch
     {
         try
         {
             var poster = posterParser.Parse(command.Args[0], meta.PhotoId);
             PosterRepository.Write(poster);
             return(CommandResult.AsSucceed("Плакат добавлен"));
         }
         catch
         {
             return(CommandResult.AsFailed(
                        "Ожидаемый формат карточки:\n\n[Фото]\nФИО\nДело\nАдрес\n[День рождения]\n[Информация]\n[Тип]\n[Статус]\n\nОжидаемый формат плаката:\n\nФото\nФИО|Дело"));
         }
     }
 }
Esempio n. 18
0
 public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax1)
 {
     return(CommandResult.AsSucceed($"Unknown command. Type '/{syntax.HelpCommandName}' for help"));
 }
Esempio n. 19
0
 public ICommandExecutor UseSyntax(ICommandSyntax syntax)
 {
     this.syntax = syntax;
     return(this);
 }
Esempio n. 20
0
 private CommandResult SelectLawsuit(CommandMeta meta, ICommandSyntax syntax) =>
 CommandResult.AsSucceed("Выберите дело",
                         inlineMenu: CreateLawsuitsMenu(syntax, GetLawsuits(meta)),
                         update: meta.FromInlineMenu);
Esempio n. 21
0
 private CommandResult CreateDocument(Command command, CommandMeta meta, ICommandSyntax syntax) =>
 CommandResult.AsSucceed("Выберите действие", inlineMenu: CreateMenu(command, syntax), update: meta.FromInlineMenu);
Esempio n. 22
0
 public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax)
 {
     return(CommandResult.AsSucceed("Карточка"));
 }
 public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) =>
 CommandResult.AsSucceed("Вы хотите организовать вечер писем узникам совести или написать одному из них?",
                         inlineMenu: CreateMenu(syntax),
                         update: meta.FromInlineMenu);
 public CandidatesGenerator(ICommandSyntax syntax)
 {
     Contract.Requires(syntax != null);
     _syntax = syntax;
 }
Esempio n. 25
0
 private CommandResult Start(CommandMeta meta, ICommandSyntax syntax) =>
 CommandResult.AsSucceed("Отправьте боту фамилию узника совести или посмотрите список по делам",
                         inlineMenu: CreateLawsuitsMenu(syntax, GetLawsuits(meta)),
                         update: meta.FromInlineMenu);
Esempio n. 26
0
 public CommandParser(ICommandSyntax syntax)
 {
     Contract.Requires(syntax != null);
     _syntax = syntax;
 }