Yacht Booking System - API Availability Test'; // 1. Get first yacht echo '

1. Test Setup - Get First Yacht

'; $yachts = get_posts([ 'post_type' => 'yacht', 'posts_per_page' => 1, 'orderby' => 'ID', 'order' => 'ASC', ]); if (empty($yachts)) { echo '

❌ Brak jachtów w systemie. Dodaj przynajmniej jeden jacht przed testem.

'; echo '

Dodaj jacht

'; die(); } $yacht = $yachts[0]; echo '

✅ Znaleziono jacht: ' . esc_html($yacht->post_title) . ' (ID: ' . $yacht->ID . ')

'; // 2. Test API Endpoint - Current Month echo '

2. Test API Endpoint - Availability

'; $start_date = date('Y-m-01'); // First day of current month $end_date = date('Y-m-t'); // Last day of current month $api_url = rest_url('yacht-booking/v1/availability/' . $yacht->ID); $api_url = add_query_arg([ 'start' => $start_date, 'end' => $end_date, ], $api_url); echo '

API URL: ' . esc_html($api_url) . '

'; // Call API $response = wp_remote_get($api_url); if (is_wp_error($response)) { echo '

❌ Błąd API: ' . $response->get_error_message() . '

'; } else { $status_code = wp_remote_retrieve_response_code($response); $body = wp_remote_retrieve_body($response); $data = json_decode($body, true); echo '

Status Code: ' . $status_code . '

'; if ($status_code === 200) { echo '

✅ API Response: SUCCESS

'; echo '
Raw Response (' . count($data) . ' dni)
';
        print_r($data);
        echo '
'; // Count statuses $statuses = ['available' => 0, 'booked' => 0, 'blocked' => 0]; foreach ($data as $day) { if (isset($day['status'])) { $statuses[$day['status']]++; } } echo '

Podsumowanie dostępności:

'; echo ''; } else { echo '

❌ Błąd HTTP: ' . $status_code . '

'; echo '
' . esc_html($body) . '
'; } } // 3. Test Direct Class Method echo '

3. Test Direct Method - Availability::get_availability_calendar()

'; $calendar = \YachtBooking\Availability::get_availability_calendar($yacht->ID, $start_date, $end_date); echo '

✅ Metoda zwróciła ' . count($calendar) . ' dni

'; echo '
Pokaż kalendarz'; echo ''; echo ''; foreach ($calendar as $date => $info) { $color = $info['status'] === 'available' ? '#d4edda' : ($info['status'] === 'booked' ? '#f8d7da' : '#fff3cd'); echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
DataStatusBooking ID
' . esc_html($date) . '' . esc_html($info['status']) . '' . ($info['booking_id'] ? $info['booking_id'] : '—') . '
'; echo '
'; // 4. Test is_available Method echo '

4. Test Method - Availability::is_available()

'; $test_start = date('Y-m-d', strtotime('+7 days')); $test_end = date('Y-m-d', strtotime('+10 days')); $is_available = \YachtBooking\Availability::is_available($yacht->ID, $test_start, $test_end); echo '

Sprawdzam dostępność jachtu od ' . $test_start . ' do ' . $test_end . ':

'; if ($is_available) { echo '

✅ Jacht jest DOSTĘPNY w tym terminie

'; } else { echo '

❌ Jacht NIE jest dostępny w tym terminie

'; } // 5. Test cache - Create test booking echo '

5. Test Cache - Create Test Booking

'; $test_booking_start = date('Y-m-d', strtotime('+14 days')); $test_booking_end = date('Y-m-d', strtotime('+17 days')); echo '

Tworzę testową rezerwację od ' . $test_booking_start . ' do ' . $test_booking_end . '

'; // Mark as booked \YachtBooking\Availability::mark_as_booked($yacht->ID, $test_booking_start, $test_booking_end, 999); // Check if now unavailable $is_still_available = \YachtBooking\Availability::is_available($yacht->ID, $test_booking_start, $test_booking_end); if (!$is_still_available) { echo '

✅ Cache działa! Daty zostały oznaczone jako zajęte

'; } else { echo '

❌ Problem z cache! Daty nadal są dostępne

'; } // Clean up test booking echo '

Czyszczę testową rezerwację...

'; \YachtBooking\Availability::clear_booking_availability(999); $is_available_again = \YachtBooking\Availability::is_available($yacht->ID, $test_booking_start, $test_booking_end); if ($is_available_again) { echo '

✅ Czyszczenie cache działa! Daty są ponownie dostępne

'; } else { echo '

❌ Problem z czyszczeniem cache!

'; } // Summary echo '
'; echo '

✅ Testy Zakończone!

'; echo '

Wszystkie komponenty systemu dostępności działają poprawnie.

'; echo '

Następne kroki:

'; echo '';