Пример #1
0
        public async Task <FromMessageDTO> GetById(long id)
        {
            Message message = await _messageRepository.GetByIdAsync(id);

            FromMessageDTO resource = _mapper.Map <Message, FromMessageDTO>(message);

            return(resource);
        }
Пример #2
0
        public async Task <ActionResult <FromMessageDTO> > GetById(long id)
        {
            FromMessageDTO messageDTO = await _messageService.GetById(id);

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

            return(messageDTO);
        }
Пример #3
0
        public async Task <MessageResponse> CreateMessageAsync(SaveMessageDTO messageDTO)
        {
            try
            {
                string sourceAddr   = messageDTO.SourceAddr;
                string destAddr     = messageDTO.DestinationAddr;
                Device sourceDevice = await _deviceRepository.GetByAddrAsync(sourceAddr);

                Device destDevice = await _deviceRepository.GetByAddrAsync(destAddr);

                if (sourceDevice == null || destDevice == null)
                {
                    string messageStr;
                    if (sourceDevice == null)
                    {
                        messageStr = DeviceNotFoundMessage(sourceAddr);
                    }
                    else
                    {
                        messageStr = DeviceNotFoundMessage(destAddr);
                    }
                    return(new MessageResponse(messageStr));
                }
                Message message = new Message()
                {
                    Content                 = messageDTO.Content,
                    SourceAddr              = sourceDevice,
                    SourceAddrDeviceId      = sourceDevice.DeviceId,
                    DestinationAddr         = destDevice,
                    DestinationAddrDeviceId = destDevice.DeviceId
                };
                //Save the message
                await _messageRepository.CreateMessageAsync(message);

                await _unitOfWork.CompleteAsync();

                _inMemoryMessageService.AddMessage(destAddr, message);

                FromMessageDTO messageResource = _mapper.Map <Message, FromMessageDTO>(message);

                return(new MessageResponse(messageResource));
            }
            catch (Exception ex)
            {
                // Do some logging stuff
                return(new MessageResponse($"An error occurred when saving the message: {ex.Message}"));
            }
        }
Пример #4
0
        public async Task <MessageResponse> UpdateMessageAsync(long id, SaveMessageDTO messageDTO)
        {
            Message foundMessage = await _messageRepository.GetByIdAsync(id);

            if (foundMessage == null)
            {
                return(new MessageResponse($"Message with id: {id} does not exist"));
            }
            string sourceAddr   = messageDTO.SourceAddr;
            string destAddr     = messageDTO.DestinationAddr;
            Device sourceDevice = await _deviceRepository.GetByAddrAsync(sourceAddr);

            Device destDevice = await _deviceRepository.GetByAddrAsync(destAddr);

            if (sourceDevice == null || destDevice == null)
            {
                string messageStr;
                if (sourceDevice == null)
                {
                    messageStr = DeviceNotFoundMessage(sourceAddr);
                }
                else
                {
                    messageStr = DeviceNotFoundMessage(destAddr);
                }
                return(new MessageResponse(messageStr));
            }
            try
            {
                //Update all the fields
                foundMessage.Content                 = messageDTO.Content;
                foundMessage.SourceAddr              = sourceDevice;
                foundMessage.SourceAddrDeviceId      = sourceDevice.DeviceId;
                foundMessage.DestinationAddr         = destDevice;
                foundMessage.DestinationAddrDeviceId = destDevice.DeviceId;

                _messageRepository.UpdateMessageAsync(foundMessage);
                await _unitOfWork.CompleteAsync();

                FromMessageDTO messageResource = _mapper.Map <Message, FromMessageDTO>(foundMessage);

                return(new MessageResponse(messageResource));
            }
            catch (Exception ex)
            {
                return(new MessageResponse($"An error occurred when saving the message: {ex.Message}"));
            }
        }
Пример #5
0
        public IEnumerable <FromMessageDTO> ExtractMessagesForDestDeviceFromMessageMem(string deviceAddr)
        {
            ConcurrentQueue <Message> messages = _inMemoryMessageService.ExtractMessagesForAddress(deviceAddr);

            if (messages == null)
            {
                return(null);
            }
            List <FromMessageDTO> messageDTOList = new List <FromMessageDTO>();

            foreach (Message message in messages)
            {
                FromMessageDTO messageResource = _mapper.Map <Message, FromMessageDTO>(message);
                messageDTOList.Add(messageResource);
            }

            return(messageDTOList);
        }
Пример #6
0
        public async Task <MessageResponse> DeleteMessageAsync(long id)
        {
            Message foundMessage = await _messageRepository.GetByIdAsync(id);

            if (foundMessage == null)
            {
                return(new MessageResponse($"Message with id: {id} does not exist"));
            }
            try
            {
                _messageRepository.DeleteMessageAsync(foundMessage);
                await _unitOfWork.CompleteAsync();

                FromMessageDTO messageResource = _mapper.Map <Message, FromMessageDTO>(foundMessage);

                return(new MessageResponse(messageResource));
            }
            catch (Exception ex)
            {
                return(new MessageResponse($"An error occurred when deleting the message: {ex.Message}"));
            }
        }
Пример #7
0
 /// <summary>
 /// Creates a success response.
 /// </summary>
 /// <param name="message">Saved message.</param>
 /// <returns>Response.</returns>
 public MessageResponse(FromMessageDTO messageDTO) : this(true, string.Empty, messageDTO)
 {
 }
Пример #8
0
 private MessageResponse(bool success, string message, FromMessageDTO messageDTO) : base(success, message)
 {
     MessageDTO = messageDTO;
 }