load(); header('Content-Type: application/json'); try { $db = getDbConnection(); // Get POST data $input = json_decode(file_get_contents('php://input'), true); if (!$input) { $input = $_POST; } // Validate required fields $required = ['infomercial_id', 'channel', 'date', 'block_id', 'position']; foreach ($required as $field) { if (!isset($input[$field])) { jsonResponse([ 'success' => false, 'error' => "Missing required field: $field" ], 400); } } // Get infomercial duration $stmt = $db->prepare("SELECT duration FROM infomercials WHERE id = ?"); $stmt->execute([$input['infomercial_id']]); $duration = $stmt->fetchColumn(); if (!$duration) { jsonResponse([ 'success' => false, 'error' => 'Infomercial not found' ], 404); } // Get block start and end time $stmt = $db->prepare("SELECT actual_start_time, actual_end_time FROM daily_blocks WHERE id = ?"); $stmt->execute([$input['block_id']]); $blockInfo = $stmt->fetch(); $blockStartTime = $blockInfo['actual_start_time']; $blockEndTime = $blockInfo['actual_end_time'] ?? '23:59:59'; // Get all transmissions in THIS SPECIFIC block only $stmt = $db->prepare(" SELECT t.id, t.start_time, c.duration FROM transmissions t JOIN infomercials c ON t.infomercial_id = c.id WHERE t.start_date = ? AND t.channel = ? AND t.start_time >= ? AND t.start_time < ? ORDER BY t.start_time ASC "); $stmt->execute([$input['date'], $input['channel'], $blockStartTime, $blockEndTime]); $transmissions = $stmt->fetchAll(); // Insert new transmission at position $position = (int)$input['position']; // Create temporary transmission entry $newTransmission = [ 'infomercial_id' => $input['infomercial_id'], 'duration' => $duration ]; // Insert at position array_splice($transmissions, $position, 0, [$newTransmission]); // Recalculate all start times $currentTime = $blockStartTime; foreach ($transmissions as $index => $tx) { if ($index === $position) { // Insert new transmission $stmt = $db->prepare(" INSERT INTO transmissions (infomercial_id, channel, template, start_date, start_time, duration, api_status) VALUES (?, ?, 'HOME030', ?, ?, ?, 'pending') "); $stmt->execute([ $input['infomercial_id'], $input['channel'], $input['date'], $currentTime, $duration ]); } else { // Update existing transmission $stmt = $db->prepare("UPDATE transmissions SET start_time = ?, api_status = 'pending' WHERE id = ?"); $stmt->execute([$currentTime, $tx['id']]); } $currentTime = addTimeToTime($currentTime, $tx['duration']); } jsonResponse([ 'success' => true, 'message' => 'Transmission inserted successfully' ]); } catch (Exception $e) { jsonResponse([ 'success' => false, 'error' => $e->getMessage() ], 500); }