Exemplo n.º 1
0
        private async Task RegisterCardAsync(string replyToken, UserProfile user, string keyword, int gameId)
        {
            try
            {
                var cardId = await _bingoClient.AddCardAsync(gameId, keyword);

                await _tableStorage.UpdateCardEntryAsync(user.UserId, cardId, gameId);

                await _tableStorage.AddCardUserAsync(gameId, cardId, user.UserId, user.DisplayName);

                var cardStatus = await _bingoClient.GetCardStatusAsync(cardId);

                //string replyMessage = CreateCardString(cardStatus);
                var imageMessage = await CreateImageMessageAsync(cardStatus, gameId, cardId);

                await _messagingClient.ReplyMessageAsync(replyToken, new ISendMessage[] {
                    new TextMessage(ReplyMessage_CardCreated),
                    imageMessage
                });

                var cardUsers = await _tableStorage.GetCardUsersAsync(gameId);

                var gameUser = _tableStorage.FindGameEntry(gameId)?.RowKey;
                var to       = cardUsers.Where(cusr => cusr.UserId != user.UserId).Select(cusr => cusr.UserId).Concat(new[] { gameUser }).ToArray();
                await _messagingClient.MultiCastMessageAsync(to,
                                                             new[] { new TextMessage($"{user.DisplayName} さんがエントリーしました!") });
            }
            catch (Exception e)
            {
                throw new RegisterCardException(e.Message, e);
            }
        }