public async Task <IActionResult> UnreadMessagesForUser([FromRoute] int userid) { long count = 0; try { count = await GetUnreadMessages(userid); var lp = new MessagePolling(userid); Debug.WriteLine("Send unread: totalunread"); var message = await lp.WaitAsync() ?? new LpMessage { Unread = (int)count }; message.Unread = (int)count; Debug.WriteLine("Send unread: totalunread"); return(new JsonResult(message)); } catch (Exception e) { _logger.LogError(e.Message); } return(Json(new LpMessage { Unread = (int)count })); }
public async Task <ActionResult> Typing(int topicid) { try { var user = await _ctx.Users.GetUserByName(User.Identity.Name); MessagePolling.Publish(user.Id, new LpMessage { Topic = topicid, Name = user.FirstName, id = user.Id }); return(Json(null)); } catch (Exception e) { _logger.LogError(e.Message); return(Json(null)); } }
public async Task <ActionResult> AddToTopic([FromRoute] long id, [FromBody] AddMessageModel message) { try { var user = await _ctx.Users.GetUserByName(User.Identity.Name); message.Body = Regex.Replace(message.Body, "<.*?>", string.Empty); message.Body = message.Body.Replace("\r\n", "\n"); var msgstring = message.Body.Split(new[] { "\n" }, StringSplitOptions.None); message.Body = string.Join("<br/>", msgstring); var msg = new DbMessage { AuthorId = user.Id, Body = message.Body, Created = DateTime.Now, IsRead = false, TopicId = id }; var dbMessage = await _ctx.Messages.Create(msg); await _ctx.Topics.UpdateTs(id); var model = Mapper.Map <MessageModel>(dbMessage); model.IsAuthor = true; MessagePolling.Publish(user.Id, new LpMessage { Name = user.FirstName, id = user.Id, Topic = id, Unread = 1 }); return(Json(model)); } catch (Exception ex) { _logger.LogError(ex.Message); return(BadRequest()); } }