<?php
// Data fetching logic for plan responses

$activePlans = [];

if (
$dbc && !mysqli_connect_errno()) {
    
$query "SELECT pk_Plan, fromDate, weeks FROM CINE_Plan WHERE isActive = TRUE ORDER BY fromDate DESC";
    
$result mysqli_query($dbc$query);
    
    if (
$result) {
        while (
$plan mysqli_fetch_assoc($result)) {
            
$planId $plan['pk_Plan'];
            
$fromDate $plan['fromDate'];
            
$weeks $plan['weeks'];
            
            
// Calculate end date
            
$endDate date('Y-m-d'strtotime($fromDate ' + ' $weeks ' weeks'));
            
            
// Get plages for this plan
            
$plages getPlanPlages($dbc$fromDate$endDate);
            
            
$plan['plages'] = $plages;
            
$plan['endDate'] = $endDate;
            
$activePlans[] = $plan;
        }
        
mysqli_free_result($result);
    }
}

/**
 * Get plages for a specific date range
 */
function getPlanPlages($dbc$fromDate$endDate) {
    
$plageQuery "
        SELECT 
            p.pk_Plage,
            p.date,
            p.fromTime,
            p.toTime,
            p.extraTime,
            f.name as film_name,
            f.imagePath as film_image,
            supervisor.firstName as supervisor_first,
            supervisor.lastName as supervisor_last,
            supervisor.pk_Person as supervisor_id,
            e.name as extra_name
        FROM CINE_Plage p
        LEFT JOIN CINE_Film f ON p.fk_Film = f.pk_Film
        LEFT JOIN CINE_Person supervisor ON p.fk_Person_supervises = supervisor.pk_Person
        LEFT JOIN CINE_Extra e ON p.fk_Extra = e.pk_Extra
        WHERE p.date >= ? AND p.date <= ?
        ORDER BY p.date ASC, p.fromTime ASC
    "
;
    
    
$plageStmt mysqli_prepare($dbc$plageQuery);
    
mysqli_stmt_bind_param($plageStmt"ss"$fromDate$endDate);
    
mysqli_stmt_execute($plageStmt);
    
$plageResult mysqli_stmt_get_result($plageStmt);
    
    
$plages = [];
    if (
$plageResult) {
        while (
$plage mysqli_fetch_assoc($plageResult)) {
            
$plageId $plage['pk_Plage'];
            
            
// Get registrations for this plage
            
$registrations getPlageRegistrations($dbc$plageId);
            
            
$plage['registrations'] = $registrations;
            
$plages[] = $plage;
        }
    }
    
mysqli_stmt_close($plageStmt);
    
    return 
$plages;
}

/**
 * Get registrations for a specific plage
 */
function getPlageRegistrations($dbc$plageId) {
    
$registrationQuery "
        SELECT 
            r.createdAt,
            person.pk_Person,
            person.firstName,
            person.lastName,
            person.email,
            answer.label as answer_label,
            (SELECT COUNT(*) FROM CINE_Plage WHERE fk_Person_supervises = person.pk_Person) as work_count
        FROM CINE_Registers r
        JOIN CINE_Person person ON r.fk_Person = person.pk_Person
        LEFT JOIN CINE_Answer answer ON r.fk_Answer = answer.pk_Answer
        WHERE r.fk_Plage = ?
        ORDER BY work_count ASC, r.createdAt ASC
    "
;
    
    
$regStmt mysqli_prepare($dbc$registrationQuery);
    
mysqli_stmt_bind_param($regStmt"i"$plageId);
    
mysqli_stmt_execute($regStmt);
    
$regResult mysqli_stmt_get_result($regStmt);
    
    
$registrations = [];
    if (
$regResult) {
        while (
$registration mysqli_fetch_assoc($regResult)) {
            
$registrations[] = $registration;
        }
    }
    
mysqli_stmt_close($regStmt);
    
    return 
$registrations;
}

/**
 * Generate participant initials for avatar
 */
function generateParticipantInitials($firstName$lastName) {
    
$firstName trim($firstName);
    
$lastName trim($lastName);

    
// Get first character of each name, handling edge cases
    
$firstInitial = !empty($firstName) ? strtoupper(substr($firstName01)) : '';
    
$lastInitial = !empty($lastName) ? strtoupper(substr($lastName01)) : '';

    
// Create initials - fallback to first name if no last name
    
$initials $firstInitial $lastInitial;
    if (empty(
$initials)) {
        
$initials = !empty($firstName) ? strtoupper(substr($firstName02)) : 'U';
    } else if (
strlen($initials) == 1) {
        
$initials $firstInitial . (!empty($firstName) && strlen($firstName) > strtoupper(substr($firstName11)) : '');
    }

    
// Ensure we have exactly 2 characters max
    
$initials substr($initials02);
    return 
htmlspecialchars($initials);
}
?>