load(); $api = new TalpaApi(); $db = new PDO("mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_NAME']}", $_ENV['DB_USER'], $_ENV['DB_PASS']); // Array om logs voor console te verzamelen $apiLogs = []; // 1. Registratie Commercial (Stap 1, 2, 4) if (isset($_POST['add_commercial'])) { $ep = $api->createEpisode($_POST['title'], $_POST['duration'], $_POST['season_id']); $apiLogs[] = ['call' => 'Create Episode', 'response' => $api->lastResponse]; if (isset($ep['id'])) { $asset = $api->createMediaAsset($ep['id']); $apiLogs[] = ['call' => 'Create Media Asset', 'response' => $api->lastResponse]; if (isset($asset['id'])) { $details = $api->getMediaAssetDetails($asset['id']); $apiLogs[] = ['call' => 'Get Media Asset Details', 'response' => $api->lastResponse]; $label = $details['mediaAssetLabel'] ?? 'Pending'; $stmt = $db->prepare("INSERT INTO commercials (title, duration, season_id, content_id, media_asset_id, media_asset_label, upload_status) VALUES (?, ?, ?, ?, ?, ?, 'pending')"); $stmt->execute([$_POST['title'], $_POST['duration'], $_POST['season_id'], $ep['id'], $asset['id'], $label]); } } } // 2. LOKALE Planning opslaan of bewerken if (isset($_POST['schedule_transmission'])) { $stmt = $db->prepare("SELECT duration FROM commercials WHERE id = ?"); $stmt->execute([$_POST['commercial_id']]); $commDuration = $stmt->fetchColumn(); if (!empty($_POST['edit_id'])) { $stmt = $db->prepare("UPDATE transmissions SET commercial_id=?, channel=?, template=?, start_date=?, start_time=?, duration=?, api_status='pending' WHERE id=?"); $stmt->execute([$_POST['commercial_id'], $_POST['channel'], $_POST['template'], $_POST['start_date'], $_POST['start_time'], $commDuration, $_POST['edit_id']]); } else { $stmt = $db->prepare("INSERT INTO transmissions (commercial_id, channel, template, start_date, start_time, duration, api_status) VALUES (?, ?, ?, ?, ?, ?, 'pending')"); $stmt->execute([$_POST['commercial_id'], $_POST['channel'], $_POST['template'], $_POST['start_date'], $_POST['start_time'], $commDuration]); } header("Location: index.php?view_date=" . $_POST['start_date']); exit; } // 3. Handmatige Sync naar Talpa (Stap 3 op verzoek) if (isset($_POST['sync_item'])) { $stmt = $db->prepare("SELECT t.*, c.content_id FROM transmissions t JOIN commercials c ON t.commercial_id = c.id WHERE t.id = ?"); $stmt->execute([$_POST['sync_id']]); $tx = $stmt->fetch(); $res = $api->createTransmission([ "channel" => $tx['channel'], "template" => $tx['template'], "startDate" => $tx['start_date'], "startTime" => $tx['start_time'], "duration" => $tx['duration'], "contentId" => $tx['content_id'] ]); $apiLogs[] = ['call' => 'Sync Transmission', 'response' => $api->lastResponse]; $status = (isset($res['id']) || (isset($res['statusCode']) && $res['statusCode'] == 201)) ? 'synced' : 'error'; $db->prepare("UPDATE transmissions SET api_status = ?, api_response = ? WHERE id = ?") ->execute([$status, json_encode($res), $_POST['sync_id']]); } // 4. Media Asset Label en Status bijwerken if (isset($_POST['update_media_asset'])) { $stmt = $db->prepare("UPDATE commercials SET media_asset_label = ?, upload_status = ? WHERE id = ?"); $stmt->execute([$_POST['media_asset_label'], $_POST['upload_status'], $_POST['commercial_id']]); header("Location: index.php?view_date=" . $selectedDate); exit; } // Data ophalen $commercials = $db->query("SELECT * FROM commercials ORDER BY created_at DESC")->fetchAll(); $selectedDate = $_GET['view_date'] ?? date('Y-m-d'); $stmt = $db->prepare("SELECT t.*, c.title, c.duration as comm_duration FROM transmissions t JOIN commercials c ON t.commercial_id = c.id WHERE t.start_date = ? ORDER BY t.start_time ASC"); $stmt->execute([$selectedDate]); $dailySchedule = $stmt->fetchAll(); $editItem = null; if (isset($_GET['edit'])) { $stmt = $db->prepare("SELECT * FROM transmissions WHERE id = ?"); $stmt->execute([$_GET['edit']]); $editItem = $stmt->fetch(); } ?> Dashboard - Telvero Talpa

Dashboard

Open Kalender
query("SELECT COUNT(*) FROM commercials")->fetchColumn(); $uploadedCommercials = $db->query("SELECT COUNT(*) FROM commercials WHERE upload_status = 'uploaded'")->fetchColumn(); $totalTransmissions = $db->query("SELECT COUNT(*) FROM transmissions")->fetchColumn(); $pendingSync = $db->query("SELECT COUNT(*) FROM transmissions WHERE api_status = 'pending'")->fetchColumn(); $syncedTransmissions = $db->query("SELECT COUNT(*) FROM transmissions WHERE api_status = 'synced'")->fetchColumn(); ?>
Totaal Commercials
Geüpload
Geplande Uitzendingen
Wacht op Sync

Snelle Acties

Excel Planner

Tabel-gebaseerde planning

Open Planner
Kalender View

Visuele tijdlijn planning

Open Kalender
Commercials

Registreer en beheer

Naar Commercials
Blok Templates

Beheer tijdblokken

Naar Blokken

Recente Activiteit

1. Commercial Registreren
2.

Vandaag's Planning

TijdProductDuurSync StatusActies
Bewerk

Media Asset Management

Titel Duur Content ID Label (Filename) Upload Status Actie