249 lines
No EOL
10 KiB
Bash
Executable file
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" |