/// <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(); } } } }
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)); } }