# Checkout Process Implementation This document describes the implementation of the checkout process with name collection for tickets that require identification. ## Implementation Details The implementation includes: 1. Database migration to add first_name and last_name fields to tickets 2. Updates to the Ticket model to validate names when required 3. New routes and controller actions for name collection 4. A new view for collecting ticket holder names 5. Updates to the existing JavaScript controller ## Running the Migration Once the Docker environment is fixed, run the following command to apply the database migration: ```bash docker compose exec rails bundle exec rails db:migrate ``` ## Testing the Implementation 1. Start the Docker containers: ```bash docker compose up -d ``` 2. Visit an event page and select tickets that require identification 3. The checkout process should redirect to the name collection page 4. After submitting names, the user should be redirected to the payment page 5. After successful payment, tickets should be created with the provided names ## Code Structure - Migration: `db/migrate/20250828143000_add_names_to_tickets.rb` - Model: `app/models/ticket.rb` - Controller: `app/controllers/events_controller.rb` - Views: - `app/views/events/collect_names.html.erb` (new) - `app/views/events/show.html.erb` (updated) - `app/views/components/_ticket_card.html.erb` (updated) - Routes: `config/routes.rb` (updated) - JavaScript: `app/javascript/controllers/ticket_cart_controller.js` (no changes needed)