예제 #1
0
        public async Task <IActionResult> CreateMessageAsync(Guid boardId, Guid topicId, [FromBody] RequestMessageDto message, [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            var messageDto = await _messageService.CreateMessageAsync(boardId, topicId, message);

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

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix.EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            if (includeLinks)
            {
                IEnumerable <LinkDto> links = new List <LinkDto>();
                links = CreateMessageLinks(boardId, topicId, messageDto.Id);
                var messageWithLinks = _mapper.Map <ResponseMessageLinksDto>(messageDto);
                messageWithLinks.Links = links;

                return(Ok(messageWithLinks));
            }

            return(CreatedAtRoute("GetMessage", new { boardId, topicId, messageId = messageDto.Id }, messageDto));
        }
예제 #2
0
        public async Task <ResponseMessageDto> CreateMessageAsync(Guid boardId, Guid topicId, RequestMessageDto message)
        {
            var messageEntity = _mapper.Map <Message>(message);

            messageEntity.Id      = Guid.NewGuid();
            messageEntity.TopicId = topicId;

            var createdEntity = await _messageRepository.CreateMessageAsync(messageEntity);

            var responseDto = _mapper.Map <ResponseMessageDto>(createdEntity);

            return(responseDto);
        }