private async Task ProcessTicketRenderCompleteMessage()

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