public APIGatewayProxyResponse FunctionHandler()

in src/backend/SubmitExamTask/Function.cs [52:109]


        public APIGatewayProxyResponse FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
        {
            var body = JsonConvert.DeserializeObject<Dictionary<string, string>>(request?.Body);

            var isIncidentId = Guid.TryParse(body["IncidentId"], out var incidentId);
            var isExamId = Guid.TryParse(body["ExamId"], out var examId);    
            var isScore = Int32.TryParse(body["Score"], out var score);
            var token = body["TaskToken"];

            if (!isIncidentId || !isExamId | !isScore | !(token.Length >= 1 & token.Length <= 1024))
            {
                return new APIGatewayProxyResponse
                {
                    StatusCode = (int) HttpStatusCode.BadRequest,
                    Headers = new Dictionary<string, string> {{"Content-Type", "application/json"}}
                };
            }

            Console.WriteLine($"IncidentId: {incidentId}");
            Console.WriteLine($"ExamId: {examId}");
            Console.WriteLine($"Score: {score}");
            Console.WriteLine($"Token: {token}");

            var incident = _incidentRepository.GetIncidentById(incidentId);
            var exam = incident.Exams.Find(e => e.ExamId == examId);
            exam.Score = score;

            _incidentRepository.SaveIncident(incident);

            Console.WriteLine(JsonConvert.SerializeObject(incident));

            var sendTaskSuccessRequest = new SendTaskSuccessRequest
            {
                TaskToken = token,
                Output = JsonConvert.SerializeObject(incident)
            };
            
            try
            {
                _amazonStepFunctionsClient.SendTaskSuccessAsync(sendTaskSuccessRequest).Wait();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            return new APIGatewayProxyResponse
            {
                StatusCode = (int) HttpStatusCode.OK,
                Headers = new Dictionary<string, string> {
                    {"Content-Type", "application/json"}, 
                    {"Access-Control-Allow-Origin", "*"},
                    {"Access-Control-Allow-Headers", "Content-Type"},
                    {"Access-Control-Allow-Methods", "OPTIONS,POST"}
                }
            };
        }