Esempio n. 1
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req)
        {
            var sessionId = Guid.Parse(req.Query["sessionId"]);
            var commandId = Guid.Parse(req.Query["commandId"]);
            var userName  = req.Query["userName"];

            var commandCheckResult = await WorkflowSessionService.LoadSessionCommandResult(sessionId, commandId, userName);

            if (!commandCheckResult.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(commandCheckResult.Message);
            }

            if (commandCheckResult.Content.CommandStatus == CommandStatus.CompletedSuccesfully)
            {
                var loadAnalysisResults = AnalysisService.LoadImagaAnalysisData(commandCheckResult.Content.ResultIdentifier, userName).Result;

                if (!loadAnalysisResults.WasSuccessful)
                {
                    return(new BadRequestObjectResult(loadAnalysisResults.Message));
                }

                return(new OkObjectResult(loadAnalysisResults.Content));
            }

            return(new OkObjectResult(commandCheckResult.Content));
        }
Esempio n. 2
0
        public static void Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log)
        {
            // todo: break into private methods for readability + maybe wrapper for this if not succesful report client pattern
            var imageStoredEvent   = EventGridService.MapToEventType <ImageStoredEvent>(eventGridEvent);
            var repositoryResponse = ImagesStorageService.LoadImage(imageStoredEvent.ObjectId, imageStoredEvent.SessionId, imageStoredEvent.PartitionKey).Result;

            if (!repositoryResponse.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(repositoryResponse.Message);
            }

            var analysisResponse = AnalysisService.AnalyseImage(repositoryResponse.Content, imageStoredEvent.SessionId).Result;

            if (!analysisResponse.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(analysisResponse.Message);
            }

            var analysisStorageResponse = AnalysisService.StoreAnalysisData(analysisResponse.Content, imageStoredEvent.ObjectId, imageStoredEvent.SessionId, imageStoredEvent.PartitionKey).Result;

            if (!analysisStorageResponse.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(analysisStorageResponse.Message);
            }

            var raiseAnalysisSompletedEvent = AnalysisService.RaiseAnalysisCompleteEvent(
                analysisStorageResponse.Content, imageStoredEvent.SessionId, imageStoredEvent.CommandId, imageStoredEvent.PartitionKey).Result;

            if (!raiseAnalysisSompletedEvent.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(raiseAnalysisSompletedEvent.Message);
            }

            var workflowUpdateResult = WorkflowSessionService.StoreSessionCommandResult(
                imageStoredEvent.SessionId, imageStoredEvent.CommandId, analysisStorageResponse.Content.id,
                imageStoredEvent.PartitionKey, CommandStatus.CompletedSuccesfully).Result;

            if (!workflowUpdateResult.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(workflowUpdateResult.Message);
            }
        }
Esempio n. 3
0
        public static void Run(
            [EventGridTrigger] EventGridEvent eventGridEvent, ILogger log,
            [SendGrid(ApiKey = "SendGridApiKey")] out SendGridMessage message)
        {
            var analysisCompletedEvent = EventGridService.MapToEventType <AnalysisCompletedEvent>(eventGridEvent);
            var userEmail = analysisCompletedEvent.PartitionKey;

            var loadAnalysisResult = AnalysisService.LoadImagaAnalysisData(analysisCompletedEvent.AnalysisResultsId, analysisCompletedEvent.PartitionKey).Result;

            if (!loadAnalysisResult.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(loadAnalysisResult.Message);
            }

            var createMessageResult = ClientFeedbackService.CreateAnalysisCompletedEmail(userEmail, loadAnalysisResult.Content).Result;

            if (!createMessageResult.WasSuccessful)
            {
                ErrorReporting.ReportErrorToClient(createMessageResult.Message);
            }

            message = createMessageResult.Content;
        }