예제 #1
0
        public DomainUserItem UserPanelMessage(InMemoryStorage storage)
        {
            switch (_userItem.DomainStatus)
            {
            case DomainStatusEnum.User_Greeting:
                _sender.SendMessage(_userItem.ChatId, $"Привет , {_userItem.FirstName} .", MainWindow);
                _userItem.DomainStatus = DomainStatusEnum.User_MainWindow;
                break;

            case DomainStatusEnum.User_MainWindow:
                if (_userItem.Message.Equals("Погода \U00002600") || _userItem.Message.ToLower().Equals("погода"))
                {
                    _sender.SendMessage(_userItem.ChatId, "Введите город :", null);
                    _userItem.DomainStatus = DomainStatusEnum.User_Weather_InputCity;
                }
                else if (_userItem.Message.Equals("О боте \U0001F916") || _userItem.Message.ToLower().Equals("о боте"))
                {
                    _sender.SendMessage(_userItem.ChatId, "Данный бот является примером работы <ProductiveDeveloper> разработчика.\n" +
                                        $"Технологии :\n" +
                                        $"C#,\n" +
                                        $"Парсер данных. Сайт: https://pogoda.mail.ru,\n" +
                                        "SqlServer,\n" +
                                        "Telegram Api,\n" +
                                        "Yandex translate Api.", MainWindow);
                }
                else if (_userItem.Message.Equals("Напоминание") || _userItem.Message.Equals("Напоминание \U000023F0"))
                {
                    _userItem.DomainStatus = DomainStatusEnum.User_Reminder_InputDays;
                    _sender.SendMessage(_userItem.ChatId, "Выберите количество дней через которое будет отправляться прогноз погоды :", ReminderInputDays);
                }
                else if (_userItem.Message.Equals("/newsletterreset"))
                {
                    _reminder.ReminderRemove(_userItem.ChatId);
                    _sender.SendMessage(_userItem.ChatId, "Рассылка погоды отключена. \U00002705", MainWindow);
                }
                else
                {
                    _sender.SendMessage(_userItem.ChatId, "Я не знаю такой команды . \U0000274C", MainWindow);
                }
                break;

            case DomainStatusEnum.User_Reminder_InputDays:
                if (Int32.TryParse(_userItem.Message, out int _countDaysReminder) && _countDaysReminder != 0)
                {
                    _userItem.User_Reminder_CountDays = _countDaysReminder;
                    _sender.SendMessage(_userItem.ChatId, "Введите город для прогноза погоды :", null);
                    _userItem.DomainStatus = DomainStatusEnum.User_Reminder_InputCity;
                }
                else if (_userItem.Message.Equals("Отмена"))
                {
                    _userItem.DomainStatus = DomainStatusEnum.User_MainWindow;
                    _sender.SendMessage(_userItem.ChatId, "Отмена. \U0001F519", MainWindow);
                }
                else
                {
                    _sender.SendMessage(_userItem.ChatId, "Ввеедите число , а именно количество дней.", null);
                }
                break;

            case DomainStatusEnum.User_Reminder_InputCity:
                Parse.WeatherForecast.Parsing parsingReminder = new Parse.WeatherForecast.Parsing();
                WeatherForecast weatherForecastReminder       = parsingReminder.ParseWeatherForecast(_userItem.Message).Result;
                if (weatherForecastReminder.Days.Count.Equals(14))
                {
                    _userItem.User_Reminder_City      = _userItem.Message;
                    _userItem.ReminderWeatherForecast = weatherForecastReminder;
                    _sender.SendMessage(_userItem.ChatId, $"Рассылка погоды \U00002705\nКаждые {_userItem.User_Reminder_CountDays} (дня) \U000023F0\nГород : {_userItem.User_Reminder_City}", MainWindow);
                    _userItem.DomainStatus = DomainStatusEnum.User_MainWindow;
                    ReminderWeatherForecast reminder = new ReminderWeatherForecast()
                    {
                        ChatId = _userItem.ChatId,
                        City   = _userItem.User_Reminder_City,
                        DateOfRegistrationReminder = DateTimeOffset.Now,
                        IntervalDays = _userItem.User_Reminder_CountDays
                    };
                    _reminder.ReminderAdd(reminder);
                }
                else
                {
                    _sender.SendMessage(_userItem.ChatId, "Хмм... Что-то пошло не так.\nВозможно вы ввели неправильно город. \U0000274C", MainWindow);
                    _userItem.DomainStatus = DomainStatusEnum.User_MainWindow;
                }
                break;

            case DomainStatusEnum.User_Weather_InputCity:
                Parse.WeatherForecast.Parsing parsing = new Parse.WeatherForecast.Parsing();
                WeatherForecast weatherForecast       = parsing.ParseWeatherForecast(_userItem.Message).Result;
                if (!weatherForecast.Days.Count.Equals(14))
                {
                    _sender.SendMessage(_userItem.ChatId, "Хмм... Что-то пошло не так.\nВозможно вы ввели неправильно город. \U0000274C", MainWindow);
                    _userItem.DomainStatus = DomainStatusEnum.User_MainWindow;
                }
                else if (weatherForecast.Days.Count.Equals(14))
                {
                    _userItem.weatherForecast = weatherForecast;
                    _sender.SendMessage(_userItem.ChatId, "Введите количество дней для прогноза погоды : \n", WeatherForecastInputDays);
                    _userItem.DomainStatus = DomainStatusEnum.User_Weather_IputCountDays;
                }
                break;

            case DomainStatusEnum.User_Weather_IputCountDays:
                if (int.TryParse(_userItem.Message, out int _countDays) &&
                    _countDays <= _userItem.weatherForecast.Days.Count &&
                    _countDays != 0)
                {
                    string result = "\U0001F316 Утро \U0001F31D День \U0001F317 Вечер \U0001F31A Ночь\n" +
                                    "\U0001F525 Температура\n" +
                                    "\U0001F555 Давление\n" +
                                    "\U0001F4A7 Влажность\n" +
                                    "\U0001F4C8 Вероятность дождя\n\n\n";
                    for (int i = 0; i < _countDays; i++)
                    {
                        string a;
                        a = $"{_userItem.weatherForecast.Days[i].Day.DateTime}\n\n" +
                            $"          \U0001F316            \U0001F31D         \U0001F317            \U0001F31A\n\n" +
                            $"\U0001F525     {_userItem.weatherForecast.Days[i].Morning.Temperature}\t     {_userItem.weatherForecast.Days[i].Day.Temperature}\t       {_userItem.weatherForecast.Days[i].Evening.Temperature}\t\t    {_userItem.weatherForecast.Days[i].Night.Temperature}\n\n" +
                            $"\U0001F555     {_userItem.weatherForecast.Days[i].Morning.Pressure}       {_userItem.weatherForecast.Days[i].Day.Pressure}          {_userItem.weatherForecast.Days[i].Evening.Pressure}       {_userItem.weatherForecast.Days[i].Night.Pressure} (мм)\n\n" +
                            $"\U0001F4A7     {_userItem.weatherForecast.Days[i].Morning.Humidity}\t      {_userItem.weatherForecast.Days[i].Day.Humidity}\t       {_userItem.weatherForecast.Days[i].Evening.Humidity}\t     {_userItem.weatherForecast.Days[i].Night.Humidity}\n\n" +
                            $"\U0001F4C8      {_userItem.weatherForecast.Days[i].Morning.ChanceOfPrecipitation}\t      {_userItem.weatherForecast.Days[i].Day.ChanceOfPrecipitation}\t        {_userItem.weatherForecast.Days[i].Evening.ChanceOfPrecipitation}\t      {_userItem.weatherForecast.Days[i].Night.ChanceOfPrecipitation}\n\n\n";
                        result = result + a;
                    }
                    _sender.SendMessage(_userItem.ChatId, result, MainWindow);

                    _userItem.CountDays       = 0;
                    _userItem.weatherForecast = null;
                    _userItem.DomainStatus    = DomainStatusEnum.User_MainWindow;
                }
                else if (_userItem.Message.Equals("Отмена"))
                {
                    _userItem.DomainStatus = DomainStatusEnum.User_MainWindow;
                    _sender.SendMessage(_userItem.ChatId, "Отмена. \U0001F519", MainWindow);
                }
                else
                {
                    _sender.SendMessage(_userItem.ChatId, "Максимальное количество дней для прогноза - 14.", null);
                }
                break;
            }

            return(_userItem);
        }
예제 #2
0
 public void ReminderAdd(ReminderWeatherForecast reminderWeatherForecast)
 {
     RemindersList.Add(reminderWeatherForecast);
 }