public async Task <IActionResult> CreateMessage(int userId, MessageForCreateDTO messageForCreateDTO)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageForCreateDTO.SenderId = userId;

            var recipient = await _repository.GetUser(messageForCreateDTO.RecipientId);

            if (recipient == null)
            {
                return(BadRequest("User not found!"));
            }

            var message = _mapper.Map <Message>(messageForCreateDTO);

            _repository.Add(message);

            if (await _repository.SaveChanges())
            {
                var messageDTO = _mapper.Map <MessageForCreateDTO>(message);
                return(Ok(messageDTO));
            }
            throw new System.Exception("Message could not be sent");
        }
Пример #2
0
        public async Task <IActionResult> CreateMessage(int userId, MessageForCreateDTO messageForCreateDTO)
        {
            var sender = await _repo.GetUser(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(StatusCode(401, "Unauthorize"));
            }
            messageForCreateDTO.SenderId = userId;

            if (await _repo.GetUser(messageForCreateDTO.RecipientId) == null)
            {
                return(BadRequest("Recipient Isn't available"));
            }

            var message = _mapper.Map <Message>(messageForCreateDTO);

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                var    messageToReturn = _mapper.Map <MessageToReturnDTO>(message);
                string connectionId;
                if (ConnectedUser.UserConnectedList.TryGetValue(messageForCreateDTO.RecipientId, out connectionId))
                {
                    messageToReturn.IsRead = true;
                    await _hubContext.Clients.Client(connectionId).SendAsync("newmsg", messageToReturn);
                }
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }


            throw new Exception("Couldn't save Message");
        }
Пример #3
0
        [HttpPost] // Base Route
        public async Task <IActionResult> CreateMessage(int userId, MessageForCreateDTO messageForCreate)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) // Get Id From Token
            {
                return(Unauthorized());
            }

            messageForCreate.SenderId = userId;

            var recipient = await _datingRepository.GetUser(messageForCreate.RecipientId); // AutoMapper Sends This Data Auto...

            // Create So It Will Map Auto...
            var sender = await _datingRepository.GetUser(messageForCreate.SenderId);

            if (recipient == null)
            {
                return(BadRequest("No se encontró el usuario"));
            }

            var message = _mapper.Map <Messages>(messageForCreate);

            _datingRepository.Add <Messages>(message);

            if (await _datingRepository.SaveAll())
            {
                var messagetoReturn = _mapper.Map <MessageToReturnDTO>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messagetoReturn));
            }

            return(BadRequest("Fallo en la actualización"));
        }
        public async Task <IActionResult> AddMessageAsync(int userId, MessageForCreateDTO messageForCreateDTO)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageForCreateDTO.SenderId = userId;

            var recipient = await _unitOfWork.Users.FindOneAsync(u => u.UserId == messageForCreateDTO.RecipientId);

            if (recipient == null)
            {
                return(BadRequest("Error: The user cannot be found!"));
            }

            var createdMessage = _mapper.Map <MessageModel>(messageForCreateDTO);

            _unitOfWork.Messages.Add(createdMessage);

            if (await _unitOfWork.SaveAllAsync())
            {
                return(StatusCode(201));
            }

            throw new Exception("Error: Saving message to database failed!");
        }