public ActionResult Send(SentMessageModel model) { if (ModelState.IsValid) { var groupMembers = dbProvider.GetUsersInGroup(new Group { Id = (int)model.GroupId }); if (groupMembers.All(x => x.Id != SessionData.User.Id)) { return(HttpNotFound()); } var materials = JsonConvert.DeserializeObject <Dictionary <int, string> >(model.Materials); var message = new Message { GroupId = (int)model.GroupId, SenderId = SessionData.User.Id, TimeStamp = DateTime.Now, Text = model.Ciphertext }; dbProvider.StoreMessage(message); foreach (var material in materials) { if (groupMembers.Any(x => x.Id == material.Key)) { dbProvider.StoreCryptographicMaterial(new MessageCryptoMaterial { Material = material.Value, MessageId = message.Id, UserId = material.Key }); } } if (model.Attachment != null && model.AttachmentName != null && model.AttachmentType != null) { dbProvider.StoreAttachment(new Attachment { Content = Encoding.UTF8.GetBytes(model.Attachment), FileExtension = model.AttachmentType, FileName = model.AttachmentName, MessageId = message.Id }); } foreach (var member in groupMembers) { MessengerHub.CallNewMessagesForGroup(member.RtID, (int)model.GroupId); } return(Content("OK")); } else { return(HttpNotFound()); } }
private async Task logSentNotification(MimeMessage message) { using (var context = new E_RadarDbContext()) { var newSentMessage = new SentMessageModel() { CreatedTime = DateTime.UtcNow, SentTime = DateTime.Parse(message.Date.ToString()), UniqueId = message.MessageId, From = message.From.ToString(), To = message.To.ToString(), Subject = message.Subject, Body = message.TextBody }; await context.SentMessages.AddAsync(newSentMessage); await context.SaveChangesAsync(); } }