Exemplo n.º 1
0
        public IActionResult AddMessage(MessageModel messageModel)
        {
            try
            {
                if (messageModel == null)
                {
                    return(BadRequest("Data is null."));
                }
                if (!ModelState.IsValid)
                {
                    Errors errors = ErrorsHelper.GetErrors(ModelState);
                    return(BadRequest(errors));
                }

                string id = User.Identity.Name;
                messageModel.userID = id;
                MessageModel message = messagesRepository.AddMessage(messageModel);
                return(StatusCode(StatusCodes.Status201Created, message));
            }
            catch (Exception ex)
            {
                Errors errors = ErrorsHelper.GetErrors(ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, errors));
            }
        }
Exemplo n.º 2
0
        public async Task SendTo(string recieverId, string message, string localDate)
        {
            var posixTime       = DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc);
            var localDateParsed = posixTime.AddMilliseconds(Convert.ToInt64(localDate));

            var senderUser = await _userManager.GetUserAsync(Context.User);

            var senderId    = senderUser.Id;
            var senderEmail = await _userManager.GetEmailAsync(senderUser);

            var recieverEmail = _userManager.Users.Where(u => u.Id == recieverId).FirstOrDefault().Email;

            DateTime localTime = DateTime.Now;

            var reciever = new User {
                Id    = recieverId,
                Email = recieverEmail
            };
            var sender = new User {
                Id    = senderId,
                Email = senderEmail
            };

            var receiverConId = await GetConnectionId(recieverId);

            var isUnread = receiverConId == null;

            _messagesRepository.AddMessage(sender, reciever, message, localDateParsed, isUnread);
        }
Exemplo n.º 3
0
        public async Task <ActionResult <MessageDto> > CreateMessage(CreateMessageDto createMessageDto)
        {
            var currentUsername = User.GetUsername();

            if (currentUsername == createMessageDto.RecipientUsername)
            {
                return(BadRequest("You cannot send messages to yourself"));
            }

            var sender = await _userRepository.GetUserByUsernameAsync(currentUsername);

            var recipient = await _userRepository.GetUserByUsernameAsync(createMessageDto.RecipientUsername);

            var message = new Message
            {
                Sender            = sender,
                Recipient         = recipient,
                SenderUsername    = sender.UserName,
                RecipientUsername = recipient.UserName,
                Content           = createMessageDto.Content,
            };

            _messagesRepository.AddMessage(message);

            if (await _messagesRepository.SaveAllAsync())
            {
                return(Ok(_mapper.Map <MessageDto>(message)));
            }

            return(BadRequest("Failed to send message"));
        }
Exemplo n.º 4
0
        public async Task SendMessage(CreateMessageDto createMessageDto)
        {
            var username = Context.User.GetUsername();

            if (username == createMessageDto.RecipientUsername)
            {
                throw new HubException("You cannot send message to yourself");
            }

            var sender = await userRepository.GetUserByUsernameAsync(username);

            var recipient = await userRepository.GetUserByUsernameAsync(createMessageDto.RecipientUsername);

            if (recipient == null)
            {
                throw new HubException("Not found user");
            }

            var message = new Message
            {
                Content           = createMessageDto.Content,
                Sender            = sender,
                Recipient         = recipient,
                SenderUsername    = sender.UserName,
                RecipientUsername = recipient.UserName
            };

            var groupName = GetGroupName(sender.UserName, recipient.UserName);

            var group = await messageRepository.GetMessageGroup(groupName);

            if (group.Connections.Any(x => x.Username == recipient.UserName))
            {
                message.DateRead = DateTime.UtcNow;
            }
            else
            {
                var connections = await presenceTracker.GetConnectionsForUser(recipient.UserName);

                if (connections != null)
                {
                    await presenceHub.Clients.Clients(connections).SendAsync("NewMessageReceived",
                                                                             new { username = sender.UserName, KnownAs = sender.KnownAs });
                }
            }

            messageRepository.AddMessage(message);

            if (await messageRepository.SaveAllAsync())
            {
                await Clients.Group(groupName).SendAsync("NewMessage", mapper.Map <MessageDto>(message));
            }
        }
Exemplo n.º 5
0
 public IActionResult Post(string recipient, Message message)
 {
     try
     {
         var result = _repository.AddMessage(recipient, message);
         return(Ok(result));
     }
     catch (Exception ex)
     {
         _logger.LogError($"Exception in MessagesController.Post(). message: [{message}]", ex);
         return(StatusCode(500));
     }
 }
Exemplo n.º 6
0
        public async Task <ActionResult> CreateMessage([FromBody] MessageRequestDTO requestDTO)
        {
            var senderUsername = User.GetUsername();

            if (senderUsername == requestDTO.RecipientUsername)
            {
                return(BadRequest("You can't message yourself"));
            }

            var sender = await _userRepository.GetUserByUsernameAsync(senderUsername);

            var recipient = await _userRepository.GetUserByUsernameAsync(requestDTO.RecipientUsername);

            if (recipient == null)
            {
                return(NotFound("Recipient not found"));
            }

            var message = new Message
            {
                Content           = requestDTO.Content,
                Sender            = sender,
                SenderUsername    = sender.UserName,
                Recipient         = recipient,
                RecipientUsername = recipient.UserName,
            };

            _messageRepository.AddMessage(message);

            if (await _messageRepository.SaveAllAsync())
            {
                return(Ok(new MessageDTO
                {
                    Id = message.Id,
                    Content = requestDTO.Content,
                    SenderId = sender.Id,
                    SenderUsername = sender.UserName,
                    SenderPhotoUrl = sender.Photos.FirstOrDefault(x => x.IsMain).Url,
                    RecipientId = recipient.Id,
                    RecipientUsername = recipient.UserName,
                    RecipientPhotoUrl = recipient.Photos.FirstOrDefault(x => x.IsMain).Url,
                    DateSent = message.DateSent
                }));
            }

            return(BadRequest("Unable to send message to user"));
        }
Exemplo n.º 7
0
        public IActionResult CreateMessage([FromBody] Message message)
        {
            if (message == null)
            {
                return(BadRequest());
            }

            message.Date = DateTime.Now;
            _messagesRepository.AddMessage(message);

            if (!_messagesRepository.Save())
            {
                throw new Exception("Failed to save changes");
            }


            return(CreatedAtRoute("GetMessage", new { id = message.Id }, message));
        }
Exemplo n.º 8
0
 public HttpResponseMessage AddMessage(MessageModel messageModel)
 {
     try
     {
         HttpResponseMessage hrm = new HttpResponseMessage(HttpStatusCode.Created)
         {
             Content = new StringContent(JsonConvert.SerializeObject(messagesRepository.AddMessage(messageModel)))
         };
         return(hrm);
     }
     catch (Exception ex)
     {
         Errors errors          = ErrorsHelper.GetErrors(ex);
         HttpResponseMessage hr = new HttpResponseMessage(HttpStatusCode.InternalServerError)
         {
             Content = new StringContent(errors.ToString())
         };
         return(hr);
     }
 }
        public HttpResponseMessage AddMessage(MessageModel messageModel)
        {
            try
            {
                if (messageModel == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Data is null."));
                }
                if (!ModelState.IsValid)
                {
                    Errors errors = ErrorsHelper.GetErrors(ModelState);
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, errors));
                }

                MessageModel message = messagesRepository.AddMessage(messageModel);
                return(Request.CreateResponse(HttpStatusCode.Created, message));
            }
            catch (Exception ex)
            {
                Errors errors = ErrorsHelper.GetErrors(ex);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, errors));
            }
        }
Exemplo n.º 10
0
        public async Task <ActionResult <MessageDto> > CreateMessage(CreateMessageDto createMessageDto)
        {
            var username = User.GetUserName();

            if (username == createMessageDto.RecipientUsername.ToLower())
            {
                return(BadRequest("You cannot send messages to yourself"));
            }

            var sender = await _userRepository.GetUserByUsernameAsync(username);

            var recipient = await _userRepository.GetUserByUsernameAsync(createMessageDto.RecipientUsername);

            if (recipient is null)
            {
                return(NotFound());
            }

            var message = new Message
            {
                Sender            = sender,
                SenderId          = sender.Id,
                SenderUsername    = username,
                Recipient         = recipient,
                RecipientId       = recipient.Id,
                RecipientUsername = recipient.UserName,
                Content           = createMessageDto.Content
            };

            _messagesRepository.AddMessage(message);
            if (await _messagesRepository.SaveAllAsync())
            {
                return(Ok(_mapper.Map <MessageDto>(message)));
            }

            return(BadRequest("Unable to save message"));
        }
Exemplo n.º 11
0
        public async Task <ActionResult <MessageDto> > AddMessage(CreateMessageDto createMessageDto)
        {
            var username = User.GetUsername();

            if (username == createMessageDto.RecipientUsername)
            {
                BadRequest("You cannot send message to yourself");
            }

            var sender = await userRepository.GetUserByUsernameAsync(username);

            var recipient = await userRepository.GetUserByUsernameAsync(createMessageDto.RecipientUsername);

            if (recipient == null)
            {
                return(NotFound());
            }

            var message = new Message
            {
                Content           = createMessageDto.Content,
                Sender            = sender,
                Recipient         = recipient,
                SenderUsername    = sender.UserName,
                RecipientUsername = recipient.UserName
            };

            messageRepository.AddMessage(message);

            if (await messageRepository.SaveAllAsync())
            {
                return(Ok(mapper.Map <MessageDto>(message)));
            }

            return(BadRequest("Failed to add message"));
        }
        public async Task <ActionResult <AppUserMessagesResponse> > CreateMessage([FromBody] AppUserMessagesRequest request)
        {
            var userName = User.GetUserName();

            if (userName == request.RecipientUserName.ToLowerInvariant())
            {
                return(BadRequest("You cannot send messages to yourself"));
            }

            var sender = await GetUser(userName).ConfigureAwait(false);

            var recipient = await GetUser(request.RecipientUserName).ConfigureAwait(false);

            if (recipient == null)
            {
                return(NotFound());
            }

            var message = new Message
            {
                Sender            = sender,
                Recipient         = recipient,
                SenderUserName    = sender.UserName,
                RecipientUserName = recipient.UserName,
                Content           = request.Content
            };

            _messagesRepository.AddMessage(message);

            if (await _messagesRepository.SaveAllAsync())
            {
                return(Ok(_mapper.Map <AppUserMessagesResponse>(message)));
            }

            return(BadRequest("Failed to send message"));
        }
Exemplo n.º 13
0
 /// <summary>
 /// Post api/messages отправка сообщения
 /// </summary>
 /// <param name="value">Сообщение</param>
 /// <returns>Успешность выполнения</returns>
 public IHttpActionResult Post([FromBody] Message value)
 {
     _messagesRepository.AddMessage(value);
     return(Ok());
 }