public async Task <ActionResult <MessageReadDTO> > PostMessage(MessageWriteDTO messageDTO)
        {
            if (!TopicExists(messageDTO.TopicId) || !UserExists(messageDTO.AuthorId))
            {
                return(NotFound());
            }

            var message = MessageWriteDTO.FromDTO(messageDTO);

            message.Created = DateTime.Now;

            _context.Messages.Add(message);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetMessage), new { id = message.Id }, MessageReadDTO.ToDTO(message)));
        }
        public async Task <IActionResult> PutMessage(long id, MessageWriteDTO messageDTO)
        {
            if (id != messageDTO.Id)
            {
                return(BadRequest());
            }

            var message = await _context.Messages.FindAsync(id);

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

            MessageWriteDTO.UpdateFromDTO(messageDTO, message);
            message.Modified = DateTime.Now;
            message.Status  |= MessageStatuses.Edited;
            await _context.SaveChangesAsync();

            return(NoContent());
        }