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