public async Task <ActionResult <MessageToCreateDto> > CreateMessage([FromBody] MessageToCreateDto messageToCreateDto)
        {
            try
            {
                var userConversatorFromRepo = await _repo.GetUserConversatorById(messageToCreateDto.UserConversatorId);

                if (userConversatorFromRepo == null)
                {
                    return(NotFound($"UserConversator with the id {userConversatorFromRepo.Id} does not exist."));
                }

                Message message = new Message()
                {
                    Text            = messageToCreateDto.Text,
                    Created         = DateTime.Now,
                    UserConversator = userConversatorFromRepo
                };
                await _repo.Create(message);

                if (await _repo.Save())
                {
                    return(CreatedAtAction(nameof(GetMessageById), new { id = message.Id }, message));
                }
            }
            catch (Exception e)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError,
                                       $"Failed to create the comment. Exception thrown when attempting to add data to the database: {e.Message}"));
            }
            return(BadRequest());
        }
Esempio n. 2
0
        public async Task <IActionResult> SendMessage(
            int userId, MessageToCreateDto msgDto
            )
        {
            var sender = await _repo.GetUser(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            msgDto.SenderId = userId;

            var recipient = await _repo.GetUser(msgDto.RecipientId);

            if (recipient == null)
            {
                return(BadRequest("Could not find your intended recipient."));
            }

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

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageToReturnDto>(message);

                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }

            throw new Exception("There was a problem sending your message.");
        }
Esempio n. 3
0
        public async Task <IActionResult> CreateMessage(int userId, MessageToCreateDto messageToCreateDto)
        {
            var sender = await _repo.GetUser(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }
            if (messageToCreateDto == null)
            {
                return(BadRequest());
            }

            var recipient = await _repo.GetUser(messageToCreateDto.RecipientId);

            if (recipient == null)
            {
                return(BadRequest("Could not find recipient user"));
            }
            messageToCreateDto.SenderId = userId;
            var message = _mapper.Map <Message>(messageToCreateDto);

            _repo.Add <Message>(message);
            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageToReturnDto>(message);
                return(CreatedAtAction("GetMessage", new { controller = "Message", id = message.Id }, messageToReturn));
            }
            throw new Exception("Creating the message failed on save");
        }
Esempio n. 4
0
        public async Task <IActionResult> Create(int userId, MessageToCreateDto dto)
        {
            var sender = await _userRepository.Get(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            dto.SenderId = userId;

            var receiver = await _userRepository.Get(dto.ReceiverId);

            if (_userRepository.Get(dto.ReceiverId) == null)
            {
                return(NotFound("Could not find user."));
            }

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

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageToReturnDto>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id, userId = userId }, messageToReturn));
            }

            throw new Exception("Failed to sent message.");
        }