예제 #1
0
        public static bool ProcessOneMessage(IbaCmsDbContext cmsDb, CmsMessage msg)
        {
            List <DeviceOwner> deviceOwners;

            if (msg.Recipients.IsNullOrWhiteSpace())
            {
                deviceOwners = cmsDb.DeviceOwners.ToList();
            }
            else
            {
                var recipients    = JsonConvert.DeserializeObject <List <StoreMessageRecipients> >(msg.Recipients);
                var recipientList = recipients.Select(recipient => recipient.Id).ToList();
                deviceOwners = cmsDb.DeviceOwners.Where(d => recipientList.Contains(d.IbaId)).ToList();
            }
            var count = 0;

            foreach (var owner in deviceOwners)
            {
                var appuserMessage = new AppUserMessage
                {
                    Created     = DateTime.UtcNow,
                    DeviceOwner = owner,
                    Message     = msg
                };

                count++;
                cmsDb.AppUserMessages.Add(appuserMessage);
            }
            msg.Status          = CmsMessageStatus.Distributed;
            msg.Created         = DateTime.UtcNow;
            msg.TotalRecipients = count;
            return(count > 0);
        }
 public static MessagePush MessageData(AppUserMessage appMessage)
 {
     return(new MessagePush()
     {
         PushType = PushTypeEnum.NewMessageNotification,
         Id = appMessage.Id,
         Title = appMessage.Message.Title,
         Type = appMessage.Message.MessageType.ToString()
     });
 }
예제 #3
0
 public static async Task SendPushMessage(AppUserMessage item, DateTime?time = null)
 {
     if (time.HasValue)
     {
         await Push.Instance.SendTimed(item.DeviceOwner.NamedUserId, MessagePush.MessageData(item), item.Id, time.Value);
     }
     else
     {
         await Push.Instance.Send(item.DeviceOwner.NamedUserId, MessagePush.MessageData(item), item.Id);
     }
 }