in PetAdoptions/petsite/petsite/Controllers/PaymentController.cs [61:109]
public async Task<IActionResult> MakePayment(string petId, string pettype)
{
AWSXRayRecorder.Instance.AddMetadata("PetType", pettype);
AWSXRayRecorder.Instance.AddMetadata("PetId", petId);
ViewData["txStatus"] = "success";
try
{
AWSXRayRecorder.Instance.BeginSubsegment("Call Payment API");
Console.WriteLine(
$"[{AWSXRayRecorder.Instance.TraceContext.GetEntity().RootSegment.TraceId}][{AWSXRayRecorder.Instance.GetEntity().TraceId}] - Inside MakePayment Action method - PetId:{petId} - PetType:{pettype}");
AWSXRayRecorder.Instance.AddAnnotation("PetId", petId);
AWSXRayRecorder.Instance.AddAnnotation("PetType", pettype);
var result = await PostTransaction(petId, pettype);
AWSXRayRecorder.Instance.EndSubsegment();
AWSXRayRecorder.Instance.BeginSubsegment("Post Message to SQS");
var messageResponse = PostMessageToSqs(petId, pettype).Result;
AWSXRayRecorder.Instance.EndSubsegment();
AWSXRayRecorder.Instance.BeginSubsegment("Send Notification");
var snsResponse = SendNotification(petId).Result;
AWSXRayRecorder.Instance.EndSubsegment();
if ("bunny" == pettype) // Only call StepFunction for "bunny" pettype to reduce number of invocations
{
// Console.WriteLine($"STEPLOG- PETTYPE- {pettype}");
// AWSXRayRecorder.Instance.BeginSubsegment("Start Step Function");
var stepFunctionResult = StartStepFunctionExecution(petId, pettype).Result;
//Console.WriteLine($"STEPLOG - RESPONSE - {stepFunctionResult.HttpStatusCode}");
// AWSXRayRecorder.Instance.EndSubsegment();
}
//Increase purchase metric count
PetAdoptionCount.Inc();
return View("Index");
}
catch (Exception ex)
{
ViewData["txStatus"] = "failure";
ViewData["error"] = ex.Message;
AWSXRayRecorder.Instance.AddException(ex);
return View("Index");
}
}