public IActionResult SendGroupMessage(GroupMessageModel newMessages) { Console.WriteLine(newMessages.Message.Body); if (newMessages.Contacts.Count > 0) { foreach (var contact in newMessages.Contacts) { newMessages.Message.To = contact; newMessages.Message.Send(); } } return(RedirectToAction("Index")); }
public void AddGroupMessage(GroupMessageModel message) { var groupExist = ChatStore.UsersByGroups.FirstOrDefault(x => x.GroupName == message.Group); if (groupExist != null) { //Clients.Group(message.Group).SendAsync("ReceiveGroupMessage", message); Clients.Clients(groupExist.Users .Where(x => x.ConnectionId != Context.ConnectionId) .Select(x => x.ConnectionId) .ToList()) .SendAsync("ReceiveGroupMessage", message); } }
public IEnumerable <GroupMessageModel> GetLastMessages(int accountId) { List <GroupMessageModel> lastMessages = new List <GroupMessageModel>(); IEnumerable <Group> allGroups = groupRepository.GetAllGroups(accountId); foreach (Group g in allGroups) { GroupMessage latestMessage = g.GroupMessages.OrderByDescending(m => m.MessageSent).FirstOrDefault(); GroupMessageModel newMessage = new GroupMessageModel(); newMessage.GroupMessage = latestMessage; if (latestMessage.SenderId == accountId) { newMessage.Sender = "You"; } else { newMessage.Sender = CheckContactList(accountId, latestMessage); } lastMessages.Add(newMessage); } return(lastMessages); }
public List <GroupMessageModel> GetGroupMessages(int accountId, Group group) { List <GroupMessageModel> messages = new List <GroupMessageModel>(); foreach (GroupMessage gm in group.GroupMessages) { GroupMessageModel message = new GroupMessageModel(); message.GroupMessage = gm; if (gm.SenderId == accountId) // Set sender & ability to delete message { message.Sender = "You"; message.RemoveChatAvailable = true; // You can only detele messages which you posted } else { message.Sender = CheckContactList(accountId, gm); message.RemoveChatAvailable = false; } messages.Add(message); } return(messages); }
public async Task <IActionResult> CreateConversationForUsersWithInitialMessage([FromBody] GroupMessageModel messageModel) { var invoker = await _userManager.FindByIdAsync(User.Identity.Name); var allIds = new List <string>(messageModel.UserIds) { invoker.Id }; var convId = FindConversationThatContainsAllIds(allIds); if (convId == null) { var users = new List <ApplicationUser> { invoker }; foreach (var id in messageModel.UserIds) { var us = await _userManager.FindByIdAsync(id); if (us == null) { return(BadRequest()); } users.Add(us); } await CreateConversationForUsers(users); convId = FindConversationThatContainsAllIds(allIds); await FriendRequestsController.NotifyUsersAboutNewConversation(_conversationHubContext, convId ?? 0, users.Select(u => new ApplicationUserModel(u)).ToList()); } await _messagesController.SaveMessageAsync(new MessageModel() { Content = messageModel.InitialMessage, ConversationId = convId ?? 0, senderId = invoker.Id, Type = Message.Type.Text }, invoker, Message.Type.Text); return(Ok()); }