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)); }
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); } }
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; }