Exemplo n.º 1
0
        public async Task <IActionResult> Post(MessagePostDto message)
        {
            var currentUserId = await _userService.GetUserIdByLogin(User.Identity.Name);

            var targetUser = await _userService.GetUserById(message.ReceiverId);

            if (targetUser == null)
            {
                return(BadRequest("Target user doesnt exist !"));
            }

            if (currentUserId.Value == targetUser.Id)
            {
                return(BadRequest("Cannot send message to yourself!"));
            }

            var result = await _messageService.AddMessage(currentUserId.Value, message);

            if (result.IsSuccessful)
            {
                var connectionId = MessagesHub.TryGetUserConnection(targetUser.Login);
                if (!string.IsNullOrEmpty(connectionId))
                {
                    await _hubContext.Clients.Client(connectionId).SendAsync("Recieve", message);
                }
                return(Ok());
            }

            return(StatusCode(500, result.Message));
        }
Exemplo n.º 2
0
        public async Task <OperationResult> AddMessage(int currentUserId, MessagePostDto message)
        {
            var messageModel = new Message()
            {
                Content     = message.Content,
                DateCreated = DateTime.Now,
                IsDelivered = false,
                ReceiverId  = message.ReceiverId,
                SenderId    = currentUserId
            };
            await repository.AddAsync(messageModel);

            var response = await repository.SaveChangesAsync();

            if (response > 0)
            {
                return(new OperationResult()
                {
                    IsSuccessful = true, Payload = messageModel
                });
            }
            else
            {
                return(OtherServices.GetIncorrectDatabaseConnectionResult());
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> PostMessageToChannelAsync(int id, MessagePostDto messagePostDto)
        {
            await _channelCommandService.NotifyTypingAsync(id, User.GetUserId(), true);

            await _messageCommandService.PostMessageToChannelAsync(messagePostDto.MessageContent, id, User.GetUserId(), User.GetWorkspaceId(), messagePostDto.MentionUserIds);

            return(Ok());
        }
Exemplo n.º 4
0
        public async Task <IActionResult> SendPrivateMessage([FromBody] MessagePostDto message)
        {
            if (await _userManager.FindByIdAsync(message.ReceiverId) == null)
            {
                return(BadRequest(new { Message = $"No user with provided ID { message.ReceiverId } has been found." }));
            }

            if (!await _messageService.AddAsync(message, User.FindFirstValue(ClaimTypes.NameIdentifier)))
            {
                return(Conflict(new { Error = "Request unsuccessfull." }));
            }

            await _messageHub.SendPrivateMessage(HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier), message);

            return(NoContent());
        }
Exemplo n.º 5
0
        public async Task SendPrivateMessage(string senderId, MessagePostDto message)
        {
            var sender = await _userManager.FindByIdAsync(senderId);

            var receiver = await _userManager.FindByIdAsync(message.ReceiverId);

            await _hubContext.Clients.User(message.ReceiverId).SendAsync("sendMessage",
                                                                         new
            {
                receiverId   = message.ReceiverId,
                receiverName = receiver.UserName,
                senderId     = senderId,
                senderName   = sender.UserName,
                sent         = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"),
                text         = message.Text
            });
        }
Exemplo n.º 6
0
        public async Task <IActionResult> UpdateMessageInChannelAsync(int channelId, int messageId, MessagePostDto messagePostDto)
        {
            await _messageCommandService.UpdateMessageInChannelAsync(messagePostDto.MessageContent, channelId, messageId, User.GetUserId(),
                                                                     User.GetWorkspaceId(), messagePostDto.MentionUserIds);

            return(Ok());
        }
Exemplo n.º 7
0
        public async Task <IActionResult> UpdateMessageInConversationAsync(int conversationId, int messageId, MessagePostDto messagePostDto)
        {
            await _messageCommandService.UpdateMessageInConversationAsync(messagePostDto.MessageContent, conversationId, messageId, User.GetUserId());

            return(Ok());
        }