Example #1
0
        public async Task SendtoPublicTimeline(string roomName, string message)
        {
            try
            {
                var user = _context.Users.Where(u => u.UserName == IdentityName).FirstOrDefault();
                var room = _context.Rooms.Where(r => r.Name == roomName).FirstOrDefault();

                if (!string.IsNullOrEmpty(message.Trim()))
                {
                    var newmessage = new Message()
                    {
                        Content   = Regex.Replace(message, @"(?i)<(?!img|a|/a|/img).*?>", string.Empty),
                        Timestamp = DateTime.Now
                    };
                    _context.Messages.Add(newmessage);
                    _context.SaveChanges();
                    var baseTimeline = new PersonalTimeline()
                    {
                        FromUser = user,
                        ToRoom   = room,
                        Message  = newmessage
                    };
                    _context.BaseTimelines.Add(baseTimeline);
                    _context.SaveChanges();

                    var messageViewModel = _mapper.Map <Tuple <Message, PersonalTimeline>, MessageViewModel>(Tuple.Create(newmessage, baseTimeline));
                    await Clients.Group(roomName).SendAsync("newMessage", messageViewModel);
                }
            }
            catch (Exception ex)
            {
                await Clients.Caller.SendAsync("onError", "Message not send! Message should be 1-500 characters.");
            }
        }
Example #2
0
        public async Task <ActionResult <MessageViewModel> > SendtoPublicTimeline(string fromUser, string roomName, string message)
        {
            if (string.IsNullOrEmpty(message.Trim()))
            {
                return(BadRequest("Need a Message"));
            }
            var user = _context.Users.Where(u => u.UserName == fromUser).FirstOrDefault();
            var room = _context.Rooms.Where(r => r.Name == roomName).FirstOrDefault();

            var newmessage = new Message()
            {
                Content   = Regex.Replace(message, @"(?i)<(?!img|a|/a|/img).*?>", string.Empty),
                Timestamp = DateTime.Now
            };

            _context.Messages.Add(newmessage);
            var baseTimeline = new PersonalTimeline()
            {
                FromUser = user,
                ToRoom   = room,
                Message  = newmessage
            };

            _context.BaseTimelines.Add(baseTimeline);
            _context.SaveChanges();
            await _hubContext.Clients.Group(room.Name).
            SendAsync("newMessage", _mapper.Map <Tuple <Message, PersonalTimeline>, MessageViewModel>(Tuple.Create(newmessage, baseTimeline)));

            return(Ok());
        }
Example #3
0
        public async Task SendtoPersonalTimeline(string roomName, string receiverName, string message)
        {
            if (_ConnectionsMap.TryGetValue(receiverName, out string userId))
            {
                var recieveduserid = _context.Users.FirstOrDefault(u => u.UserName == receiverName);
                var sender         = _context.Users.Where(u => u.UserName == IdentityName).FirstOrDefault();
                var room           = _context.Rooms.Where(r => r.Name == roomName).FirstOrDefault();
                if (!string.IsNullOrEmpty(message.Trim()))
                {
                    // Build the message
                    var newmessage = new Message()
                    {
                        Content   = Regex.Replace(message, @"(?i)<(?!img|a|/a|/img).*?>", string.Empty),
                        Timestamp = DateTime.Now
                    };
                    _context.Messages.Add(newmessage);
                    _context.SaveChanges();
                    var personalTimeline = new PersonalTimeline()
                    {
                        FromUser = sender,
                        ToRoom   = room,
                        Message  = newmessage,
                        ToUser   = recieveduserid
                    };
                    _context.PersonalTimelines.Add(personalTimeline);
                    _context.SaveChanges();

                    var messageViewModel = _mapper.Map <Tuple <Message, PersonalTimeline>, MessageViewModel>(Tuple.Create(newmessage, personalTimeline));
                    await Clients.User(recieveduserid.Id).SendAsync("newMessage", messageViewModel);

                    await Clients.Caller.SendAsync("newMessage", messageViewModel);
                }
            }
        }
Example #4
0
        public async Task <IActionResult> SendtoPersonalTimeline(string fromUser, string receiverUser, string roomName, string message)
        {
            if (string.IsNullOrEmpty(message.Trim()))
            {
                return(BadRequest("Need a Message"));
            }
            var recievedUserId = _context.Users.FirstOrDefault(u => u.UserName == receiverUser);

            if (recievedUserId == null)
            {
                return(BadRequest($"non-existing User ({recievedUserId})"));
            }
            var sender = _context.Users.Where(u => u.UserName == fromUser).FirstOrDefault();
            var room   = _context.Rooms.Where(r => r.Name == roomName).FirstOrDefault();

            var newMessage = new Message()
            {
                Content   = Regex.Replace(message, @"(?i)<(?!img|a|/a|/img).*?>", string.Empty),
                Timestamp = DateTime.Now
            };

            _context.Messages.Add(newMessage);
            var personalTimeline = new PersonalTimeline()
            {
                FromUser = sender,
                ToRoom   = room,
                Message  = newMessage,
                ToUser   = recievedUserId
            };

            _context.BaseTimelines.Add(personalTimeline);
            _context.SaveChanges();
            await _hubContext.Clients.User(recievedUserId.Id).SendAsync("newMessage", newMessage);

            await _hubContext.Clients.User(sender.Id).SendAsync("newMessage", newMessage);

            return(Ok());
        }