Beispiel #1
0
 /// <summary>
 /// Save a message
 /// </summary>
 public static void SaveMessage(MessengerChatData messengerChatData)
 {
     using (var session = SessionFactoryBuilder.Instance.SessionFactory.OpenSession())
     {
         using (var transaction = session.BeginTransaction())
         {
             try
             {
                 session.Save(messengerChatData);
                 transaction.Commit();
             }
             catch
             {
                 transaction.Rollback();
             }
         }
     }
 }
Beispiel #2
0
        public void Handle(Player player, Request request)
        {
            int userId = request.ReadInt();

            try
            {
                if (!player.Messenger.HasFriend(userId))
                {
                    player.Send(new InstantChatErrorComposer(InstantChatError.NotFriend, userId));
                    return;
                }

                var friend      = player.Messenger.GetFriend(userId);
                var chatMessage = request.ReadString().FilterInput(false);

                var chatMessageData = new MessengerChatData
                {
                    UserId   = player.Details.Id,
                    FriendId = userId,
                    Message  = chatMessage,
                    IsRead   = friend.IsOnline
                };

                MessengerDao.SaveMessage(chatMessageData);

                if (!friend.IsOnline)
                {
                    player.Send(new InstantChatErrorComposer(InstantChatError.FriendOffline, userId));
                    return;
                }

                friend.Player.Send(new InstantChatComposer(player.Details.Id, chatMessage));
            }
            catch
            {
                player.Send(new InstantChatErrorComposer(InstantChatError.SendingFailed, userId));
            }
        }