<?php
/**
 * Template Name: HVAC Event Summary
 *
 * This template handles the display of the HVAC Event Summary page.
 * It shows detailed information about a specific event, including ticket sales,
 * attendee information, and revenue tracking.
 *
 * @package    HVAC Community Events
 * @subpackage Templates
 * @author     HVAC Community Events
 * @version    1.0.0
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// Check if user is logged in
if ( ! is_user_logged_in() ) {
    get_header();
    echo '<div id="primary" class="content-area primary ast-container">';
    echo '<main id="main" class="site-main">';
    echo '<div class="hvac-login-required" style="padding: 30px; background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; text-align: center; margin: 30px 0;">';
    echo '<h2>Authentication Required</h2>';
    echo '<p>Please log in to view the event summary.</p>';
    echo '<p><a href="' . esc_url(home_url('/community-login/')) . '" class="ast-button ast-button-primary">Log In</a></p>';
    echo '</div>';
    echo '</main></div>';
    get_footer();
    exit;
}

// Get the event ID from the URL parameter
$event_id = isset( $_GET['event_id'] ) ? absint( $_GET['event_id'] ) : 0;

// Ensure the data class is available
if ( ! class_exists( 'HVAC_Event_Summary_Data' ) ) {
    // Attempt to include it if not loaded
    $class_path = plugin_dir_path( __FILE__ ) . '../includes/community/class-event-summary-data.php';
    if ( file_exists( $class_path ) ) {
        require_once $class_path;
    } else {
        // Handle error: Class not found, cannot display summary
        echo "<p>Error: Event Summary data handler not found.</p>";
        return;
    }
}

// Initialize the event summary data handler
$summary_data_handler = new HVAC_Event_Summary_Data( $event_id );

// Check if the event is valid
if ( ! $summary_data_handler->is_valid_event() ) {
    // Redirect to dashboard if the event doesn't exist
    wp_safe_redirect( home_url( '/hvac-dashboard/' ) );
    exit;
}

// Get the event post to check ownership
$event = get_post($event_id);

// Check if the current user has permission to view this event
// Only the post author or users with edit_posts capability can view
if ($event->post_author != get_current_user_id() && !current_user_can('edit_posts')) {
    get_header();
    echo '<div id="primary" class="content-area primary ast-container">';
    echo '<main id="main" class="site-main">';
    echo '<div class="hvac-error">You do not have permission to view this event summary.</div>';
    echo '<p><a href="' . esc_url(home_url('/hvac-dashboard/')) . '" class="ast-button ast-button-primary">Return to Dashboard</a></p>';
    echo '</main></div>';
    get_footer();
    exit;
}

// Fetch all the required event data
$event_details = $summary_data_handler->get_event_details();
$venue_details = $summary_data_handler->get_event_venue_details();
$organizer_details = $summary_data_handler->get_event_organizer_details();
$transactions = $summary_data_handler->get_event_transactions();

// Calculate ticket sales summary data
$total_tickets = 0;
$total_revenue = 0;
$ticket_types = array();

// Process transactions data
if ( ! empty( $transactions ) ) {
    foreach ( $transactions as $txn ) {
        $total_tickets++;
        if ( isset( $txn['price'] ) ) {
            $total_revenue += floatval( $txn['price'] );
        }

        // Count ticket types
        $ticket_type = $txn['ticket_type_name'] ?? 'Unknown';
        if ( isset( $ticket_types[$ticket_type] ) ) {
            $ticket_types[$ticket_type]['count']++;
            if ( isset( $txn['price'] ) ) {
                $ticket_types[$ticket_type]['revenue'] += floatval( $txn['price'] );
            }
        } else {
            $ticket_types[$ticket_type] = array(
                'count' => 1,
                'revenue' => isset( $txn['price'] ) ? floatval( $txn['price'] ) : 0,
            );
        }
    }
}

// Start the template
get_header();
?>

<div id="primary" class="content-area primary ast-container">
    <main id="main" class="site-main">
        
        <!-- Event Summary Header & Navigation -->
        <div class="hvac-dashboard-header">
            <h1 class="entry-title"><?php echo esc_html( $event_details['title'] ); ?> - Summary</h1>
            <div class="hvac-dashboard-nav">
                <a href="<?php echo esc_url( home_url( '/hvac-dashboard/' ) ); ?>" class="ast-button ast-button-primary">Dashboard</a>
                <?php
                // Edit event link (if user has permission)
                if ( current_user_can( 'edit_post', $event_id ) ) {
                    $edit_url = add_query_arg( 'event_id', $event_id, home_url( '/manage-event/' ) );
                    echo '<a href="' . esc_url( $edit_url ) . '" class="ast-button ast-button-primary">Edit Event</a>';
                }
                
                // View public event page
                echo '<a href="' . esc_url( $event_details['permalink'] ) . '" class="ast-button ast-button-secondary" target="_blank">View Public Page</a>';
                
                // Email attendees link
                if ( current_user_can( 'edit_post', $event_id ) ) {
                    $email_url = add_query_arg( 'event_id', $event_id, home_url( '/email-attendees/' ) );
                    echo '<a href="' . esc_url( $email_url ) . '" class="ast-button ast-button-secondary">Email Attendees</a>';
                }
                ?>
            </div>
        </div>
        
        <!-- Event Overview Section -->
        <section class="hvac-event-summary-section">
            <h2>Event Overview</h2>
            <div class="hvac-event-summary-content">
                <!-- Event Details -->
                <div class="hvac-event-details">
                    <table class="hvac-details-table">
                        <tr>
                            <th>Date & Time:</th>
                            <td>
                                <?php 
                                if ( function_exists( 'tribe_get_start_date' ) && function_exists( 'tribe_get_end_date' ) ) {
                                    echo esc_html( tribe_get_start_date( $event_id, false ) );
                                    if ( ! $event_details['is_all_day'] ) {
                                        echo ' @ ' . esc_html( tribe_get_start_date( $event_id, false, 'g:i a' ) );
                                    }
                                    // Show end date/time if different from start date
                                    $start_date = tribe_get_start_date( $event_id, false, 'Y-m-d' );
                                    $end_date = tribe_get_end_date( $event_id, false, 'Y-m-d' );
                                    if ( $start_date !== $end_date ) {
                                        echo ' - ' . esc_html( tribe_get_end_date( $event_id, false ) );
                                        if ( ! $event_details['is_all_day'] ) {
                                            echo ' @ ' . esc_html( tribe_get_end_date( $event_id, false, 'g:i a' ) );
                                        }
                                    } elseif ( ! $event_details['is_all_day'] ) {
                                        echo ' - ' . esc_html( tribe_get_end_date( $event_id, false, 'g:i a' ) );
                                    }
                                } else {
                                    echo esc_html( $event_details['start_date'] ?? 'N/A' );
                                    echo ' - ';
                                    echo esc_html( $event_details['end_date'] ?? 'N/A' );
                                }
                                ?>
                            </td>
                        </tr>
                        <tr>
                            <th>Status:</th>
                            <td><?php echo esc_html( ucfirst( get_post_status( $event_id ) ) ); ?></td>
                        </tr>
                        <tr>
                            <th>Cost:</th>
                            <td><?php echo esc_html( $event_details['cost'] ?? 'N/A' ); ?></td>
                        </tr>
                        <?php if ( $venue_details && ! empty( $venue_details['name'] ) ) : ?>
                        <tr>
                            <th>Venue:</th>
                            <td>
                                <?php echo esc_html( $venue_details['name'] ); ?>
                                <?php if ( ! empty( $venue_details['address'] ) ) : ?>
                                    <div class="hvac-detail-subtext"><?php echo esc_html( $venue_details['address'] ); ?></div>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <?php endif; ?>
                        <?php if ( $organizer_details && ! empty( $organizer_details['name'] ) ) : ?>
                        <tr>
                            <th>Organizer:</th>
                            <td>
                                <?php echo esc_html( $organizer_details['name'] ); ?>
                                <?php if ( ! empty( $organizer_details['email'] ) ) : ?>
                                    <div class="hvac-detail-subtext"><?php echo esc_html( $organizer_details['email'] ); ?></div>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <?php endif; ?>
                    </table>
                </div>
            </div>
        </section>
        
        <!-- Event Statistics Section -->
        <section class="hvac-event-summary-section">
            <h2>Event Statistics</h2>
            <div class="hvac-stats-row">
                <!-- Total Tickets Stat Card -->
                <div class="hvac-stat-col">
                    <div class="hvac-stat-card">
                        <h3>Total Tickets</h3>
                        <p class="metric-value"><?php echo esc_html( $total_tickets ); ?></p>
                    </div>
                </div>
                
                <!-- Total Revenue Stat Card -->
                <div class="hvac-stat-col">
                    <div class="hvac-stat-card">
                        <h3>Total Revenue</h3>
                        <p class="metric-value">$<?php echo esc_html( number_format( $total_revenue, 2 ) ); ?></p>
                    </div>
                </div>
                
                <!-- Ticket Types / Distribution -->
                <?php foreach ( $ticket_types as $type => $data ) : ?>
                <div class="hvac-stat-col">
                    <div class="hvac-stat-card">
                        <h3><?php echo esc_html( $type ); ?></h3>
                        <p class="metric-value"><?php echo esc_html( $data['count'] ); ?></p>
                        <small>$<?php echo esc_html( number_format( $data['revenue'], 2 ) ); ?></small>
                    </div>
                </div>
                <?php endforeach; ?>
            </div>
        </section>
        
        <!-- Ticket Sales / Attendees Section -->
        <section class="hvac-event-summary-section">
            <h2>Ticket Sales &amp; Attendees</h2>
            <?php if ( ! empty( $transactions ) ) : ?>
            <div class="hvac-event-summary-content">
                <table class="hvac-transactions-table">
                    <thead>
                        <tr>
                            <th>Attendee</th>
                            <th>Email</th>
                            <th>Ticket Type</th>
                            <th>Price</th>
                            <th>Order ID</th>
                            <th>Checked In</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ( $transactions as $txn ) : ?>
                        <tr>
                            <td><?php echo esc_html( $txn['purchaser_name'] ?? 'N/A' ); ?></td>
                            <td><?php echo esc_html( $txn['purchaser_email'] ?? 'N/A' ); ?></td>
                            <td><?php echo esc_html( $txn['ticket_type_name'] ?? 'N/A' ); ?></td>
                            <td>$<?php echo esc_html( number_format( $txn['price'] ?? 0, 2 ) ); ?></td>
                            <td><?php echo esc_html( $txn['order_id'] ?? 'N/A' ); ?></td>
                            <td><?php echo $txn['checked_in'] ? 'Yes' : 'No'; ?></td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
            <?php else : ?>
            <p>No ticket sales or attendees found for this event.</p>
            <?php endif; ?>
        </section>
        
        <!-- Event Description Section -->
        <section class="hvac-event-summary-section">
            <h2>Event Description</h2>
            <div class="hvac-event-summary-content">
                <div class="hvac-event-description">
                    <?php echo wp_kses_post( $event_details['description'] ); ?>
                </div>
            </div>
        </section>
        
    </main>
</div>

<!-- Include CSS for the Event Summary page -->
<style>
    /* Event Summary Specific Styles */
    .hvac-event-summary-section {
        margin-bottom: 40px;
        background: #f8f9fa;
        border-radius: 8px;
        padding: 20px;
        border: 1px solid #e9ecef;
    }
    
    .hvac-event-summary-section h2 {
        margin-top: 0;
        margin-bottom: 20px;
        border-bottom: 1px solid #eee;
        padding-bottom: 10px;
    }
    
    .hvac-event-summary-content {
        margin-top: 20px;
    }
    
    /* Details Table */
    .hvac-details-table {
        width: 100%;
        border-collapse: collapse;
    }
    
    .hvac-details-table th,
    .hvac-details-table td {
        padding: 10px;
        text-align: left;
        border-bottom: 1px solid #eee;
        vertical-align: top;
    }
    
    .hvac-details-table th {
        width: 150px;
        font-weight: bold;
    }
    
    .hvac-detail-subtext {
        font-size: 0.9em;
        color: #666;
        margin-top: 5px;
    }
    
    /* Transactions Table */
    .hvac-transactions-table {
        width: 100%;
        border-collapse: collapse;
        margin-top: 20px;
    }
    
    .hvac-transactions-table th,
    .hvac-transactions-table td {
        padding: 10px;
        text-align: left;
        border-bottom: 1px solid #eee;
    }
    
    .hvac-transactions-table th {
        background-color: #f1f1f1;
        font-weight: bold;
    }
    
    .hvac-transactions-table tr:nth-child(even) {
        background-color: #f9f9f9;
    }
    
    .hvac-transactions-table tr:hover {
        background-color: #f0f0f0;
    }
    
    /* Stats Row (reused from dashboard) */
    .hvac-stats-row {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        margin: -10px;
        justify-content: space-between;
        align-items: stretch;
    }
    
    .hvac-stat-col {
        flex: 1;
        min-width: 160px;
        padding: 10px;
    }
    
    .hvac-stat-card {
        border: 1px solid #eee;
        padding: 15px;
        background: #fff;
        text-align: center;
        width: 100%;
        flex-grow: 1;
        height: 100%;
    }
    
    .hvac-stat-card h3 {
        margin: 0 0 10px;
        font-size: 16px;
        font-weight: normal;
        color: #666;
    }
    
    .hvac-stat-card .metric-value {
        font-size: 32px;
        font-weight: bold;
        color: #E9AF28;
        margin: 0;
    }
    
    .hvac-stat-card small {
        display: block;
        margin-top: 5px;
        color: #666;
    }
    
    @media (max-width: 768px) {
        .hvac-dashboard-header {
            flex-direction: column;
            align-items: flex-start;
        }
        
        .hvac-dashboard-nav {
            margin-top: 15px;
            display: flex;
            flex-wrap: wrap;
        }
        
        .hvac-dashboard-nav a {
            margin: 5px 5px 5px 0;
        }
        
        .hvac-details-table th {
            width: 100px;
        }
        
        .hvac-transactions-table {
            display: block;
            overflow-x: auto;
        }
    }
</style>

<?php
get_footer();
?>