Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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());
        }