#!/usr/bin/env php format('Y-m-d') !== $date) { echo "Error: Invalid date format. Expected Y-m-d (e.g., 2025-01-01) or 'today'/'yesterday'\n"; echo "Usage: php bin/hourly_summary.php [date] [hour]\n"; echo " date: Y-m-d format, 'today', or 'yesterday' (default: today)\n"; echo " hour: 0-23 (optional, untuk update jam tertentu saja)\n"; echo "Examples:\n"; echo " php bin/hourly_summary.php # Update hari ini\n"; echo " php bin/hourly_summary.php yesterday # Rekap kemarin\n"; echo " php bin/hourly_summary.php 2025-01-01 14 # Rekap jam 14 tanggal tertentu\n"; exit(1); } // Get hour from command line (optional, 0-23) $hour = null; if (isset($argv[2])) { $hourInput = (int) $argv[2]; if ($hourInput < 0 || $hourInput > 23) { echo "Error: Hour must be between 0 and 23\n"; exit(1); } $hour = $hourInput; } try { // Get database connection $dbHost = AppConfig::get('DB_HOST', 'localhost'); $dbName = AppConfig::get('DB_NAME', ''); $dbUser = AppConfig::get('DB_USER', ''); $dbPass = AppConfig::get('DB_PASS', ''); if (empty($dbName) || empty($dbUser)) { echo "Error: Database configuration not found in .env\n"; exit(1); } $db = Database::getConnection($dbHost, $dbName, $dbUser, $dbPass); // Initialize service $service = new HourlySummaryService($db); // Run aggregation if ($hour !== null) { echo "Processing hourly summary for date: {$date}, hour: {$hour}\n"; $result = $service->aggregateForDate($date, $hour); echo "Success!\n"; echo "Date: {$result['date']}\n"; echo "Hour: {$result['hour']}\n"; echo "Rows processed: {$result['rows_processed']}\n"; } else { echo "Processing hourly summary for date: {$date} (all hours)\n"; $result = $service->aggregateForDate($date); echo "Success!\n"; echo "Date: {$result['date']}\n"; echo "Rows processed: {$result['rows_processed']}\n"; } exit(0); } catch (Exception $e) { echo "Error: " . $e->getMessage() . "\n"; exit(1); }