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