Esempio n. 1
0
        public IActionResult Post([FromBody] JArray requestJArray)
        {
            var requestContent = requestJArray.ToString();

            _logger.LogInformation($"Received events: {requestContent}");

            EventGridSubscriber eventGridSubscriber = new EventGridSubscriber();

            EventGridEvent[] eventGridEvents = eventGridSubscriber.DeserializeEventGridEvents(requestContent);

            foreach (EventGridEvent eventGridEvent in eventGridEvents)
            {
                if (eventGridEvent.Data is SubscriptionValidationEventData eventData)
                {
                    _logger.LogInformation($"Got SubscriptionValidation event data, validationCode: {eventData.ValidationCode},  validationUrl: {eventData.ValidationUrl}, topic: {eventGridEvent.Topic}");
                    // Do any additional validation (as required) such as validating that the Azure resource ID of the topic matches
                    // the expected topic and then return back the below response
                    var responseData = new SubscriptionValidationResponse()
                    {
                        ValidationResponse = eventData.ValidationCode
                    };

                    return(Ok(responseData));
                }
                else
                {
                    var statement        = new StatementExtension((JObject)eventGridEvent.Data);
                    var statementWrapper = new StatementWrapper(eventGridEvent.Subject, statement);
                    _decisionChannel.Next(statementWrapper);
                }
            }

            return(Ok(null));
        }
Esempio n. 2
0
 private async Task HandleStatement(StatementWrapper statementWrapper)
 {
     try
     {
         var decisionStatement        = await new PersonApplicationService().MakeDecisionAsync(statementWrapper.Data, _personRepository);
         var decisionStatementWrapper = new StatementWrapper(statementWrapper.Subject, decisionStatement);
         _decisionChannel.Next(decisionStatementWrapper);
     }
     catch (Exception exception)
     {
         _logger.LogError("Exception handling statement for person aggregate: " + exception.Message);
         _logger.LogError(exception.StackTrace);
     }
 }