public static bool ProcessOneMessage(IbaCmsDbContext cmsDb, P2PMessage msg)
        {
            var senderId     = msg.SenderId;
            var idToSendTo   = msg.Thread.InitialRecipientId == senderId ? msg.Thread.InitialSenderId : msg.Thread.InitialRecipientId;
            var deviceOwners = cmsDb.DeviceOwners.Where(r => r.IbaId == idToSendTo);
            var count        = 0;

            foreach (var owner in deviceOwners)
            {
                var appuserMessage = new AppP2PMessage
                {
                    Created     = DateTime.UtcNow,
                    DeviceOwner = owner,
                    Message     = msg
                };
                foreach (var device in owner.Devices.Where(d => !d.PushToken.IsNullOrWhiteSpace()))
                {
                    //var push = new PushMessageQueue
                    //{
                    //    Created = DateTime.UtcNow,
                    //    Device = device,
                    //    AppP2PMessage = appuserMessage
                    //};
                    //appuserMessage.Queued.Add(push);
                }
                count++;
                cmsDb.AppP2PMessages.Add(appuserMessage);
                SendPushMessage(appuserMessage);
            }
            msg.DeliveredTime = DateTime.UtcNow;
            return(count > 0);
        }
 public static MessagePush MessageData(AppP2PMessage p2pMessage)
 {
     return(new MessagePush()
     {
         PushType = PushTypeEnum.NewMessageNotification,
         Id = p2pMessage.Message.SenderId,
         Title = p2pMessage.Message.GetPushTitleForMessage(),
         Type = "P2P_MESSAGE"
     });
 }
 public static void SendPushMessage(AppP2PMessage item)
 {
     Push.Instance.Send(item.DeviceOwner.NamedUserId, MessagePush.MessageData(item), item.Id);
 }