<?php
    header
('Content-Type: application/json');
    require_once 
'../DB/db_credentials.php';
    require_once 
'../DB/db_connection.php';

    
$data = json_decode(file_get_contents("php://input"), true);

    
$id           = $data['id']                     ?? '';
    
$title        = trim($data['title']             ?? '');
    
$duration     = $data['duration']               ?? '';
    
$ageLimit     = $data['ageLimit']               ?? '';
    
$uploaded     = $data['uploaded']               ?? 0;
    
$serialNumber = trim($data['serialNumber']      ?? '');
    
$imagePath    = trim($data['imagePath']         ?? '');
    
$releaseYear  = $data['releaseYear']            ?? null;  // new
    
$overview     = trim($data['overview']          ?? '');   // new
    
$issuedDate   = $data['issuedDate']             ?? '';
    
$languages    = $data['languages']              ?? [];

    if (!
$id || !$title || !$duration || $ageLimit === '' || !$serialNumber || !$issuedDate) {
        
http_response_code(400);
        echo 
json_encode(['status' => 'error', 'message' => 'Missing required fields.']);
        exit;
    }

    
// check if film exists
    
$sql = "SELECT COUNT(*) FROM citeLeParis_film WHERE pk_filmID = ?";
    
$stmt = mysqli_prepare($dbc, $sql);
    
mysqli_stmt_bind_param($stmt, 'i', $id);
    
mysqli_stmt_execute($stmt);
    
mysqli_stmt_bind_result($stmt, $exists);
    
mysqli_stmt_fetch($stmt);
    
mysqli_stmt_close($stmt);

    if (!
$exists) {
        
http_response_code(404);
        echo 
json_encode(['status' => 'error', 'message' => 'Film not found.']);
        
mysqli_close($dbc);
        exit;
    }

    
$sql = "UPDATE citeLeParis_film
            SET title = ?, duration = ?, ageLimit = ?, uploaded = ?, serialNumber = ?, imagePath = ?, releaseYear = ?, overview = ?, issuedDate = ?
            WHERE pk_filmID = ?"
;
    
$stmt = mysqli_prepare($dbc, $sql);

    if (!
$stmt) {
        
http_response_code(500);
        echo 
json_encode(['status' => 'error', 'message' => 'Failed to prepare update statement.']);
        
mysqli_close($dbc);
        exit;
    }

    
mysqli_stmt_bind_param($stmt, 'siisssissi', $title, $duration, $ageLimit, $uploaded, $serialNumber, $imagePath, $releaseYear, $overview, $issuedDate, $id);
    
$ok = mysqli_stmt_execute($stmt);
    
mysqli_stmt_close($stmt);

    if (!
$ok) {
        
http_response_code(500);
        echo 
json_encode(['status' => 'error', 'message' => 'Update failed.']);
        
mysqli_close($dbc);
        exit;
    }

    
// update film-language relations
    
$sql = "DELETE FROM citeLeParis_hasLanguage WHERE pkfk_film = ?";
    
$stmt = mysqli_prepare($dbc, $sql);
    
mysqli_stmt_bind_param($stmt, 'i', $id);
    
mysqli_stmt_execute($stmt);
    
mysqli_stmt_close($stmt);

    if (!empty(
$languages)) {
        
$sql = "INSERT INTO citeLeParis_hasLanguage (pkfk_film, pkfk_availableLanguage) VALUES (?, ?)";
        
$stmt = mysqli_prepare($dbc, $sql);

        foreach (
$languages as $langID) {
            
mysqli_stmt_bind_param($stmt, 'ii', $id, $langID);
            
mysqli_stmt_execute($stmt);
        }

        
mysqli_stmt_close($stmt);
    }

    
mysqli_close($dbc);

    
http_response_code(200);
    echo 
json_encode(['status' => 'success', 'message' => 'Film updated successfully.']);
?>