in src/Relecloud.Web.CallCenter.Api/Services/TicketManagementService/TicketRenderCompleteMessageHandler.cs [58:87]
private async Task ProcessTicketRenderCompleteMessage(TicketRenderCompleteMessage ticketRenderCompleteMessage, CancellationToken cancellationToken)
{
using (var diScope = serviceProvider.CreateScope())
{
// Hosted services are registered as singletons, but it's a best practice
// to limit DbContext services to scoped lifetime. Therefore, we create a scope
// and resolve the DbContext from it, on demand, when we need it.
var database = diScope.ServiceProvider.GetRequiredService<ConcertDataContext>();
var ticket = database.Tickets
.Include(ticket => ticket.Concert)
.Include(ticket => ticket.User)
.Include(ticket => ticket.Customer)
.Where(ticket => ticket.Id == ticketRenderCompleteMessage.TicketId)
.FirstOrDefault();
if (ticket is null)
{
logger.LogWarning("No Ticket found for id:{TicketId}", ticketRenderCompleteMessage.TicketId);
return;
}
// Set the ticket's image name to the path returned by the render message
// and update the database.
ticket.ImageName = ticketRenderCompleteMessage.OutputPath;
database.Update(ticket);
await database.SaveChangesAsync(cancellationToken);
logger.LogInformation("Updated ticket image name for id {TicketId}", ticket.Id);
}
}