Пример #1
0
        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
            }));
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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());
            }
        }