|
@@ -0,0 +1,54 @@
|
|
|
+using System.Threading.Tasks;
|
|
|
+using MafiaTelegramBot.Controllers;
|
|
|
+using MafiaTelegramBot.DataBase;
|
|
|
+using MafiaTelegramBot.Resources;
|
|
|
+using Telegram.Bot.Types;
|
|
|
+using Telegram.Bot.Types.Enums;
|
|
|
+using Telegram.Bot.Types.ReplyMarkups;
|
|
|
+
|
|
|
+namespace MafiaTelegramBot.Models.Inlines
|
|
|
+{
|
|
|
+ public class ConnectToSelectedRoomQuery : Query
|
|
|
+ {
|
|
|
+ protected override string Name => strings.connect_to_selected_room_callback;
|
|
|
+ public override async Task<Message> Execute(Update update)
|
|
|
+ {
|
|
|
+ await DeletePreviousMessage(update.CallbackQuery.Message.Chat.Id, update.CallbackQuery.Message.MessageId);
|
|
|
+ var chatId = update.CallbackQuery.Message.Chat.Id;
|
|
|
+ await Bot.Get().SendChatActionAsync(chatId, ChatAction.Typing);
|
|
|
+ var data = update.CallbackQuery.Data;
|
|
|
+ var param = data.Split('|');
|
|
|
+ var userId = long.Parse(param[1]);
|
|
|
+ var roomName = param[2];
|
|
|
+ var user = await UserDao.GetUserById(userId);
|
|
|
+ var resultCode = await RoomController.ConnectToGame(user, roomName);
|
|
|
+ switch (resultCode)
|
|
|
+ {
|
|
|
+ case Constants.CODE_OK:
|
|
|
+ {
|
|
|
+ var users = await RoomController.GetPlayers(roomName);
|
|
|
+ foreach (var player in users)
|
|
|
+ {
|
|
|
+ if (userId == player.Id) continue;
|
|
|
+ await Bot.SendWithMarkdown2(player.ChatId, $"{strings.entry_another_user} _*{user?.Username}*_");
|
|
|
+ }
|
|
|
+ var keyboard = new InlineKeyboardMarkup(new []
|
|
|
+ {
|
|
|
+ new []{
|
|
|
+ InlineKeyboardButton.WithCallbackData(strings.look_user_list, $"{strings.look_user_list_callback}|{userId}|{roomName}"),
|
|
|
+ //TODO сделать другой выход из комнаты
|
|
|
+ InlineKeyboardButton.WithCallbackData(strings.leave, $"{strings.leave_callback}|{userId}")
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return await Bot.SendWithMarkdown2(chatId, strings.successful_entry_into_room, keyboard);
|
|
|
+ }
|
|
|
+ case Constants.ROOM_IS_FILLED:
|
|
|
+ return await Bot.SendWithMarkdown2(chatId, strings.room_is_filled);
|
|
|
+ case Constants.USER_ALREADY_IN_GAME:
|
|
|
+ return await Bot.SendWithMarkdown2(chatId, strings.user_already_in_game);
|
|
|
+ default:
|
|
|
+ return await Bot.SendWithMarkdown2(chatId, strings.unexpected_error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|