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