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)); }
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); }