Ejemplo n.º 1
0
        public async Task <ChatParametersDTO> GetChatParametersAsync(long chatId)
        {
            var chatParametersDTO = default(ChatParametersDTO);
            var chatParameters    = await _unitOfWork.ChatParameters.FindChatParametersAsync(chatId);

            if (chatParameters is not null)
            {
                var facultyId = chatParameters.FacultyId;
                var faculty   = await _scheduleParser.ParseFacultyAsync(facultyId);

                var group = await _scheduleParser.ParseGroupAsync(facultyId, chatParameters.GroupId, chatParameters.GroupTypeId);

                chatParametersDTO = new ChatParametersDTO()
                {
                    ChatId                 = chatId,
                    FacultyId              = faculty.Id,
                    GroupId                = group.Id,
                    GroupTypeId            = group.TypeId,
                    FacultyTitleWithoutTag = faculty.TitleWithoutFacultyTag,
                    GroupTitle             = group.Title
                };
            }

            return(chatParametersDTO);
        }
Ejemplo n.º 2
0
        private async Task SendScheduleAsync(long chatId, DateTime dateTime)
        {
            var chatParameters = await _chatParametersService.GetChatParametersAsync(chatId);

            if (chatParameters is not null)
            {
                var group = await _scheduleParser.ParseGroupAsync(chatParameters.FacultyId, chatParameters.GroupId, chatParameters.GroupTypeId);

                var studyDay = await _scheduleParser.ParseStudyDayAsync(group, dateTime);

                var html = studyDay.ToHTML();

                var nextRequest = await _client.SendTextMessageAsync
                                  (
                    chatId,
                    text : html,
                    parseMode : ParseMode.Html,
                    replyMarkup : dateTime.ToNavigationKeyboard()
                                  );

                _callbackQueryListener.RegisterRequest
                (
                    nextRequest,
                    HandleIncomingDateAsync
                );
            }
            else
            {
                await _client.SendTextMessageAsync
                (
                    chatId,
                    text : "Вы не настроили бота, чтобы использовать этот функционал. Используйте /bind, чтобы начать работу",
                    parseMode : ParseMode.Html
                );
            }
        }
Ejemplo n.º 3
0
        protected override async Task HandleAsync(Message message, string[] arguments, RequestDelegate nextHandler)
        {
            var chatId   = message.Chat.Id;
            var nextDate = DateTime.Today.AddDays(1);

            var stringBuilder = new StringBuilder();

            if (!nextDate.DayOfWeek.Equals(DayOfWeek.Sunday))
            {
                await _client.SendChatActionAsync
                (
                    chatId,
                    chatAction : ChatAction.Typing
                );

                var group = default(Group);
                var incomingGroupTitle = arguments.FirstOrDefault();

                if (!string.IsNullOrWhiteSpace(incomingGroupTitle))
                {
                    group = await _scheduleParser.ParseGroupAsync(incomingGroupTitle);

                    if (group is null)
                    {
                        stringBuilder.AppendLine($"Группа под названием \"{incomingGroupTitle}\" не найдена. Пожалуйста, уточните запрос");
                    }
                }
                else
                {
                    var chatParameters = await _chatParametersService.GetChatParametersAsync(chatId);

                    if (chatParameters is not null)
                    {
                        group = await _scheduleParser.ParseGroupAsync(chatParameters.FacultyId, chatParameters.GroupId, chatParameters.GroupTypeId);
                    }
                    else
                    {
                        stringBuilder.AppendLine("Вы не настроили бота, чтобы использовать этот функционал. Используйте /bind, чтобы начать работу");
                    }
                }

                if (group is not null)
                {
                    var studyDay = await _scheduleParser.ParseStudyDayAsync(group, nextDate);

                    var html = studyDay.ToHTML();
                    stringBuilder.AppendLine(html);
                }
            }
            else
            {
                stringBuilder.AppendLine("Завтра выходной день. Используйте /schedule, чтобы получить расписание на следующую неделю");
            }

            await _client.SendTextMessageAsync
            (
                chatId,
                text : stringBuilder.ToString(),
                parseMode : ParseMode.Html
            );

            _logger?.LogInformation("Tomorrow command processed");
        }