private dynamic ExpandSingleItem(MessageForReturnDto messageDto)
        {
            var links = GetLinks(messageDto.Id);

            var resourceToReturn = messageDto.ToDynamic() as IDictionary <string, object>;

            resourceToReturn.Add("links", links);

            return(resourceToReturn);
        }
        public async Task <ActionResult <MessageForReturnDto> > UpdateMessage(int id, MessageForReturnDto messageDto)
        {
            try
            {
                var existingMessage = await _repo.GetMessageById(id);

                if (existingMessage == null)
                {
                    return(NotFound($"We could not find any message with Id: {id}"));
                }

                Message updatedMessage = _mapper.Map(messageDto, existingMessage);
                _repo.Update(updatedMessage);
                if (await _repo.Save())
                {
                    return(CreatedAtAction(nameof(GetMessageById), new { id = updatedMessage.Id }, _mapper.Map <MessageForReturnDto>(updatedMessage)));
                }
            }
            catch (Exception e)
            {
                return(this.StatusCode(StatusCodes.Status500InternalServerError, $"Database Failure: {e.Message}"));
            }
            return(BadRequest());
        }
 public async Task SendMessageToUser(MessageForReturnDto message)
 {
     var senderId    = message.SenderId.ToString();
     var recipientId = message.RecipientId.ToString();
     await Clients.Users(senderId, recipientId).SendAsync("broadCast", message);
 }