upskill-event-manager/wordpress-dev/bin/create-test-data-with-checkins.sh

249 lines
No EOL
10 KiB
Bash
Executable file

#!/bin/bash
# Create test events, tickets, attendees with check-ins for certificate testing
# Load configuration
source bin/deploy-config.sh
echo "=== Creating Test Data with Check-ins on Staging Server ==="
echo "Remote host: $REMOTE_HOST"
echo "Remote user: $REMOTE_USER"
echo "WordPress path: $REMOTE_PATH_BASE"
echo "==============================="
# Create PHP script to run on server
cat << 'EOF' > create-test-data.php
<?php
// Load WordPress
require_once 'wp-load.php';
// Ensure TEC and ET plugins are active
if (!class_exists('Tribe__Events__Main') || !class_exists('Tribe__Tickets__Main')) {
die("Required plugins (The Events Calendar or Event Tickets) are not active");
}
echo "Creating test data for certificate testing...\n";
// Get the test trainer user
$test_trainer = get_user_by('login', 'test_trainer');
if (!$test_trainer) {
die("test_trainer user not found. Please create this user first.");
}
$trainer_id = $test_trainer->ID;
echo "Found test_trainer user ID: {$trainer_id}\n";
// Event data
$events = [
[
'title' => 'HVAC Certification Workshop',
'description' => 'A comprehensive workshop for HVAC professionals seeking certification.',
'start_date' => date('Y-m-d H:i:s', strtotime('+2 weeks')),
'end_date' => date('Y-m-d H:i:s', strtotime('+2 weeks +8 hours')),
'price' => 250,
'capacity' => 30,
'attendees' => 20,
'checkins' => 15 // Number of attendees to check in
],
[
'title' => 'Advanced HVAC Troubleshooting',
'description' => 'Master advanced techniques for diagnosing and fixing complex HVAC issues.',
'start_date' => date('Y-m-d H:i:s', strtotime('+1 month')),
'end_date' => date('Y-m-d H:i:s', strtotime('+1 month +6 hours')),
'price' => 350,
'capacity' => 20,
'attendees' => 15,
'checkins' => 10
],
[
'title' => 'Commercial HVAC Systems',
'description' => 'Specialized training for commercial HVAC installation and maintenance.',
'start_date' => date('Y-m-d H:i:s', strtotime('+6 weeks')),
'end_date' => date('Y-m-d H:i:s', strtotime('+6 weeks +8 hours')),
'price' => 400,
'capacity' => 25,
'attendees' => 18,
'checkins' => 12
]
];
// Create events and related data
foreach ($events as $event_data) {
// Create event
$event_args = [
'post_title' => $event_data['title'],
'post_content' => $event_data['description'],
'post_status' => 'publish',
'post_type' => Tribe__Events__Main::POSTTYPE,
'post_author' => $trainer_id
];
$event_id = wp_insert_post($event_args);
if (is_wp_error($event_id)) {
echo "Failed to create event: " . $event_id->get_error_message() . "\n";
continue;
}
echo "Created event: {$event_data['title']} (ID: {$event_id})\n";
// Add event meta
update_post_meta($event_id, '_EventStartDate', $event_data['start_date']);
update_post_meta($event_id, '_EventEndDate', $event_data['end_date']);
update_post_meta($event_id, '_EventStartDateUTC', $event_data['start_date']);
update_post_meta($event_id, '_EventEndDateUTC', $event_data['end_date']);
update_post_meta($event_id, '_EventTimezone', 'America/New_York');
update_post_meta($event_id, '_EventCost', $event_data['price']);
// Create venue
$venue_args = [
'post_title' => "HVAC Training Center - {$event_data['title']}",
'post_status' => 'publish',
'post_type' => Tribe__Events__Main::VENUE_POST_TYPE,
'post_author' => $trainer_id
];
$venue_id = wp_insert_post($venue_args);
if (!is_wp_error($venue_id)) {
update_post_meta($venue_id, '_VenueAddress', '123 Training Street');
update_post_meta($venue_id, '_VenueCity', 'New York');
update_post_meta($venue_id, '_VenueState', 'NY');
update_post_meta($venue_id, '_VenueZip', '10001');
update_post_meta($venue_id, '_VenueCountry', 'USA');
update_post_meta($venue_id, '_VenuePhone', '555-123-4567');
update_post_meta($event_id, '_EventVenueID', $venue_id);
}
// Create organizer
$organizer_args = [
'post_title' => "HVAC Trainers Organization",
'post_status' => 'publish',
'post_type' => Tribe__Events__Main::ORGANIZER_POST_TYPE,
'post_author' => $trainer_id
];
$organizer_id = wp_insert_post($organizer_args);
if (!is_wp_error($organizer_id)) {
update_post_meta($organizer_id, '_OrganizerEmail', 'trainer@example.com');
update_post_meta($organizer_id, '_OrganizerPhone', '555-987-6543');
update_post_meta($organizer_id, '_OrganizerWebsite', 'https://hvactrainers.example.com');
update_post_meta($event_id, '_EventOrganizerID', $organizer_id);
}
// Create ticket for the event (using PayPal provider from Event Tickets Plus)
if (class_exists('Tribe__Tickets_Plus__Commerce__PayPal__Main')) {
$provider = Tribe__Tickets_Plus__Commerce__PayPal__Main::get_instance();
$ticket_id = $provider->ticket_add($event_id, [
'ticket_name' => "General Admission - {$event_data['title']}",
'ticket_description' => "Ticket for {$event_data['title']}",
'ticket_price' => $event_data['price'],
'ticket_show_description' => 'yes',
'ticket_start_date' => date('Y-m-d H:i:s'),
'ticket_end_date' => $event_data['start_date'],
'ticket_capacity' => $event_data['capacity']
]);
if ($ticket_id) {
echo "Created ticket ID: {$ticket_id} for event ID: {$event_id}\n";
// Create test attendees with email addresses
$attendee_ids = [];
for ($i = 1; $i <= $event_data['attendees']; $i++) {
$attendee_first_name = "Attendee" . $i;
$attendee_last_name = "Event" . $event_id;
$attendee_email = "attendee{$i}_event{$event_id}@example.com";
// Check if we should use a specific email for one attendee per event
if ($i === 1) {
$attendee_email = "ben@tealmaker.com";
$attendee_first_name = "Ben";
$attendee_last_name = "Tester";
}
// Create attendee post
$attendee_args = [
'post_title' => "{$attendee_first_name} {$attendee_last_name}",
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'tribe_tpp_attendees',
];
$attendee_id = wp_insert_post($attendee_args);
if (is_wp_error($attendee_id)) {
echo "Failed to create attendee for event {$event_id}: " . $attendee_id->get_error_message() . "\n";
continue;
}
$attendee_ids[] = $attendee_id;
// Add attendee meta
$meta = [
'_tribe_tpp_full_name' => "{$attendee_first_name} {$attendee_last_name}",
'_tribe_tpp_email' => $attendee_email,
'_tribe_tickets_full_name' => "{$attendee_first_name} {$attendee_last_name}",
'_tribe_tickets_email' => $attendee_email,
'_tribe_tpp_event' => $event_id,
'_tribe_tpp_product' => $ticket_id,
'_tribe_tpp_order' => uniqid('ORDER-'),
'_tribe_tpp_security_code' => wp_generate_password(10, false),
'_tribe_tickets_order_status' => 'complete',
'_tribe_tpp_attendee_optout' => 'no',
'_tribe_tickets_attendee_user_id' => 0,
];
foreach ($meta as $key => $value) {
update_post_meta($attendee_id, $key, $value);
}
// Check in some attendees (for certificate testing)
if ($i <= $event_data['checkins']) {
update_post_meta($attendee_id, '_tribe_tpp_checkin', 1);
update_post_meta($attendee_id, '_tribe_tpp_checked_in', 1);
update_post_meta($attendee_id, '_tribe_tickets_checkin_status', 1);
update_post_meta($attendee_id, 'check_in', 1);
update_post_meta($attendee_id, '_tribe_tpp_checkin_status', 1);
echo "Checked in attendee {$attendee_id} for event {$event_id}\n";
}
}
echo "Created {$event_data['attendees']} attendees for event {$event_id}\n";
echo "Checked in {$event_data['checkins']} attendees for event {$event_id}\n";
// Update event attendance count
update_post_meta($event_id, '_tribe_ticket_sold_count', $event_data['attendees']);
update_post_meta($ticket_id, '_tribe_ticket_sold', $event_data['attendees']);
update_post_meta($ticket_id, '_stock', $event_data['capacity'] - $event_data['attendees']);
} else {
echo "Failed to create ticket for event {$event_id}\n";
}
} else {
echo "Event Tickets Plus PayPal provider not available, skipping ticket creation\n";
}
echo "----------------------------\n";
}
echo "Test data creation completed!\n";
?>
EOF
# Copy PHP script to server and execute
echo "[1;33mCopying script to server...[0m"
scp create-test-data.php $REMOTE_USER@$REMOTE_HOST:/home/974670.cloudwaysapps.com/uberrxmprk/public_html/
echo "[1;33mExecuting script on server...[0m"
ssh $REMOTE_USER@$REMOTE_HOST "cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html/ && php create-test-data.php"
# Clean up
rm create-test-data.php
ssh $REMOTE_USER@$REMOTE_HOST "rm /home/974670.cloudwaysapps.com/uberrxmprk/public_html/create-test-data.php"
echo "[0;32mTest data creation completed![0m"
echo "1. Created events, tickets, and attendees on staging"
echo "2. Added check-in status for some attendees"
echo "3. Events are assigned to test_trainer user"
echo "4. One attendee for each event has email: ben@tealmaker.com"
echo "5. Checked-in attendees are ready for certificate generation"