public ActionResult SendMessage([FromBody] Models.Message message, [FromBody] string userToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            User user = _context.Users.FirstOrDefault(u => u.UserToken == userToken);

            if (user == null)
            {
                return(NotFound("Invalid token"));
            }

            string accessToken = user.Accounts.FirstOrDefault(a => a.PlatformName == message.NetworkName).AccessToken;

            if (accessToken == null)
            {
                return(BadRequest("Access token for network not found"));
            }

            Connector connector = _context.Connectors.FirstOrDefault(c => c.NetworkName == message.NetworkName);

            Data.Models.Message dataMessage = new Data.Models.Message()
            {
                NetworkName = message.NetworkName,
                ReceiverId  = message.ReceiverId,
                Text        = message.Text
            };

            _connectorSender.SendMessage(connector, dataMessage, accessToken);

            return(Ok());
        }
Example #2
0
        public async Task <IActionResult> SendMessage([FromBody] AggregatorMessage message, [FromQuery] string userToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            User user = await _context
                        .Users
                        .Include(u => u.Accounts)
                        .FirstOrDefaultAsync(u => u.UserToken == userToken);

            if (user == null)
            {
                return(NotFound("Invalid token"));
            }

            string accessToken = user
                                 .Accounts
                                 .FirstOrDefault(a => a.PlatformName == message.NetworkName)
                                 .AccessToken;

            if (accessToken == null)
            {
                return(BadRequest("Access token for network not found"));
            }

            Connector connector = await _context
                                  .Connectors
                                  .FirstOrDefaultAsync(c => c.NetworkName == message.NetworkName);

            Message dataMessage = new Message()
            {
                NetworkName   = message.NetworkName,
                NetworkUserId = message.ReceiverId,
                Text          = message.Text
            };

            _connectorSender.SendMessage(connector, dataMessage, accessToken);

            return(Ok());
        }