<?php
require_once 'config.php';
require_once 'includes/Database.php';
require_once 'includes/Auth.php';
require_once 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

Auth::requireAdmin();

$db = new Database();

// AJAX önizleme isteği - header.php'den ÖNCE kontrol et
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'preview') {
    header('Content-Type: application/json');
    try {
        $file = $_FILES['excel_file'];

        if ($file['error'] !== UPLOAD_ERR_OK) {
            throw new Exception('Dosya yüklenirken bir hata oluştu.');
        }

        $fileExtension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
        if (!in_array($fileExtension, ['xlsx', 'xls', 'csv'])) {
            throw new Exception('Sadece Excel dosyaları (.xlsx, .xls, .csv) yüklenebilir.');
        }

        // Excel dosyasını yükle
        $spreadsheet = IOFactory::load($file['tmp_name']);
        $worksheet = $spreadsheet->getActiveSheet();

        // Başlık satırını al
        $headers = $worksheet->rangeToArray('A1:G1')[0];

        // Tarih formatını koruyarak satırları oku
        $previewRows = [];
        $totalRows = 0;
        $rowIndex = 2; // Başlıktan sonra başla
        $previewCount = 0;

        foreach ($worksheet->getRowIterator(2) as $row) {
            $cellIterator = $row->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false);

            $rowData = [];
            $isEmpty = true;

            foreach ($cellIterator as $cell) {
                $columnIndex = $cell->getColumn();
                if ($columnIndex > 'G') break; // Sadece A-G sütunları

                $value = $cell->getValue();

                // A sütunu (Tarih) için özel formatla
                if ($columnIndex === 'A' && !empty($value)) {
                    if (is_numeric($value) && $value > 0) {
                        try {
                            $dateObj = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value);
                            $value = $dateObj->format('d.m.Y');
                        } catch (Exception $e) {
                            // Formatlanamadıysa olduğu gibi bırak
                        }
                    }
                }

                $rowData[] = $value;
                if (!empty($value)) $isEmpty = false;
            }

            if (!$isEmpty) {
                $totalRows++;
                if ($previewCount < 10) {
                    $previewRows[] = $rowData;
                    $previewCount++;
                }
            }

            if ($previewCount >= 10 && $totalRows > 100) break; // Performans için limit
        }

        echo json_encode([
            'success' => true,
            'headers' => $headers,
            'rows' => $previewRows,
            'totalRows' => $totalRows
        ]);
        exit;
    } catch (Exception $e) {
        echo json_encode(['success' => false, 'error' => $e->getMessage()]);
        exit;
    }
}

// Header dahil et
$pageTitle = 'Giden Arama Yükleme';
include 'includes/header.php';

$message = '';
$messageType = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['excel_file']) && !isset($_POST['action'])) {
    try {
        $file = $_FILES['excel_file'];

        // Dosya yükleme kontrolü
        if ($file['error'] !== UPLOAD_ERR_OK) {
            throw new Exception('Dosya yüklenirken bir hata oluştu.');
        }

        // Dosya uzantısı kontrolü
        $fileExtension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
        if (!in_array($fileExtension, ['xlsx', 'xls', 'csv'])) {
            throw new Exception('Sadece Excel dosyaları (.xlsx, .xls, .csv) yüklenebilir.');
        }

        // Excel dosyasını yükle
        $spreadsheet = IOFactory::load($file['tmp_name']);
        $worksheet = $spreadsheet->getActiveSheet();

        $successCount = 0;
        $errorCount = 0;
        $errors = [];

        $rowNumber = 2; // Excel satır numarası (başlık + 1)

        foreach ($worksheet->getRowIterator(2) as $excelRow) {
            $cellIterator = $excelRow->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false);

            // Satır verilerini oku
            $row = [];
            foreach ($cellIterator as $cell) {
                $columnIndex = $cell->getColumn();
                if ($columnIndex > 'G') break;
                $row[] = $cell->getValue();
            }

            // Boş satırları atla
            if (empty(array_filter($row))) {
                $rowNumber++;
                continue;
            }

            try {
                // B sütunundaki dahili numarasından kullanıcıyı bul
                $extensionFromExcel = trim($row[1] ?? ''); // B sütunu (index 1)
                if (empty($extensionFromExcel)) {
                    throw new Exception("Dahili numarası boş olamaz");
                }

                // Dahili numarasından kullanıcıyı bul
                // Kullanıcının extension alanında virgülle ayrılmış dahililer olabilir
                $user = $db->fetchOne("SELECT id, username, extension FROM users WHERE FIND_IN_SET(?, REPLACE(extension, ' ', '')) > 0 AND is_active = 1", [$extensionFromExcel]);

                if (!$user) {
                    throw new Exception("Dahili '$extensionFromExcel' için kullanıcı bulunamadı");
                }

                $userId = $user['id'];

                // Excel'den verileri al - DÜZELTME SONRASI FORMAT
                $callDate = $row[0] ?? ''; // A sütunu - Tarih
                // C sütunu (index 2) - Dahili Adı - Göz ardı edilecek
                $answeredCount = (int)($row[3] ?? 0); // D sütunu - Cevaplanan arama sayısı
                $unansweredCount = (int)($row[4] ?? 0); // E sütunu - Cevaplanmayan arama sayısı
                $callCount = $answeredCount + $unansweredCount; // Toplam arama sayısı

                // Zaman verilerini düzenle (HH:MM:SS formatında)
                $totalDuration = formatTime($row[5] ?? '00:00:00'); // F sütunu - Toplam konuşma süresi
                $avgDuration = formatTime($row[6] ?? '00:00:00'); // G sütunu - Ortalama konuşma süresi

                // Tarihi düzenle
                if (empty($callDate)) {
                    throw new Exception("Tarih boş olamaz");
                }

                // Excel tarih formatı (sayısal değer)
                if (is_numeric($callDate) && $callDate > 0) {
                    try {
                        $callDate = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($callDate)->format('Y-m-d');
                    } catch (Exception $e) {
                        throw new Exception("Tarih formatı hatalı: " . $callDate);
                    }
                } else {
                    // Metin tarih formatı - Türkiye formatını destekle (dd/mm/yyyy veya dd.mm.yyyy)
                    $callDate = trim($callDate);

                    // yyyy-mm-dd formatı - zaten doğru
                    if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $callDate)) {
                        // Zaten doğru formatta
                    }
                    // dd/mm/yyyy formatı
                    else if (preg_match('/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/', $callDate)) {
                        $dateObj = DateTime::createFromFormat('d/m/Y', $callDate);
                        if (!$dateObj) {
                            throw new Exception("Tarih formatı hatalı: " . $callDate);
                        }
                        $callDate = $dateObj->format('Y-m-d');
                    }
                    // dd.mm.yyyy formatı
                    else if (preg_match('/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/', $callDate)) {
                        $dateObj = DateTime::createFromFormat('d.m.Y', $callDate);
                        if (!$dateObj) {
                            throw new Exception("Tarih formatı hatalı: " . $callDate);
                        }
                        $callDate = $dateObj->format('Y-m-d');
                    }
                    // dd-mm-yyyy formatı
                    else if (preg_match('/^(\d{1,2})-(\d{1,2})-(\d{4})$/', $callDate)) {
                        $dateObj = DateTime::createFromFormat('d-m-Y', $callDate);
                        if (!$dateObj) {
                            throw new Exception("Tarih formatı hatalı: " . $callDate);
                        }
                        $callDate = $dateObj->format('Y-m-d');
                    }
                    else {
                        throw new Exception("Tarih formatı hatalı: " . $callDate . ". Desteklenen formatlar: dd.mm.yyyy, dd/mm/yyyy, yyyy-mm-dd");
                    }
                }

                // Tarih doğrulama (2000'den sonra olmalı)
                if ($callDate < '2000-01-01') {
                    throw new Exception("Geçersiz tarih: $callDate (2000 yılından sonra olmalı)");
                }

                // Tarih doğrulama (çok ileri tarih olmamalı - 10 yıl sonrası)
                $maxDate = date('Y-m-d', strtotime('+10 years'));
                if ($callDate > $maxDate) {
                    throw new Exception("Geçersiz tarih: $callDate (çok ileri bir tarih)");
                }

                // Cevaplama yüzdesini hesapla
                $answerPercentage = $callCount > 0 ? round(($answeredCount / $callCount) * 100, 2) : 0;

                // Aynı kullanıcı ve tarih için kayıt var mı kontrol et
                $existing = $db->fetchOne(
                    "SELECT id FROM outgoing_calls WHERE user_id = ? AND call_date = ?",
                    [$userId, $callDate]
                );

                if ($existing) {
                    // Güncelle
                    $sql = "UPDATE outgoing_calls SET
                            call_count = ?,
                            answered_count = ?,
                            unanswered_count = ?,
                            answer_percentage = ?,
                            total_duration = ?,
                            avg_duration = ?
                            WHERE id = ?";

                    $db->query($sql, [$callCount, $answeredCount, $unansweredCount, $answerPercentage, $totalDuration, $avgDuration, $existing['id']]);
                } else {
                    // Yeni kayıt ekle
                    $sql = "INSERT INTO outgoing_calls
                            (user_id, call_date, call_count, answered_count, unanswered_count, answer_percentage, total_duration, avg_duration)
                            VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

                    $db->query($sql, [$userId, $callDate, $callCount, $answeredCount, $unansweredCount, $answerPercentage, $totalDuration, $avgDuration]);
                }

                $successCount++;
            } catch (Exception $e) {
                $errorCount++;
                $errors[] = "Satır $rowNumber: " . $e->getMessage();
            }

            $rowNumber++;
        }

        if ($errorCount > 0) {
            $message = "İşlem tamamlandı. Başarılı: $successCount, Hatalı: $errorCount<br><br>Hatalar:<br>" . implode('<br>', $errors);
            $messageType = 'warning';
        } else {
            $message = "Excel dosyası başarıyla yüklendi! $successCount kayıt işlendi.";
            $messageType = 'success';
        }

    } catch (Exception $e) {
        $message = 'Hata: ' . $e->getMessage();
        $messageType = 'error';
    }
}

function formatTime($time) {
    if (empty($time)) return '00:00:00';

    // Eğer zaten HH:MM:SS formatındaysa direkt dön
    if (preg_match('/^\d{2}:\d{2}:\d{2}$/', $time)) {
        return $time;
    }

    // Excel ondalık saat formatı (örn: 0.5 = 12 saat)
    if (is_numeric($time)) {
        $seconds = round($time * 86400); // 24 saat * 60 dakika * 60 saniye
        $hours = floor($seconds / 3600);
        $minutes = floor(($seconds % 3600) / 60);
        $secs = $seconds % 60;
        return sprintf('%02d:%02d:%02d', $hours, $minutes, $secs);
    }

    return '00:00:00';
}

// Kullanıcı listesi
$users = $db->fetchAll("SELECT id, username, full_name FROM users WHERE is_active = 1 ORDER BY full_name");
?>

<style>
    .upload-container {
        max-width: 900px;
        margin: 0 auto;
    }

    .card {
        background: white;
        border-radius: 15px;
        padding: 30px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
        margin-bottom: 25px;
    }

    .card-header {
        margin-bottom: 25px;
        padding-bottom: 15px;
        border-bottom: 2px solid #f0f0f0;
    }

    .card-header h2 {
        font-size: 22px;
        font-weight: 700;
        color: #2c3e50;
        margin-bottom: 8px;
    }

    .card-header p {
        color: #7f8c8d;
        font-size: 14px;
    }

    .message {
        padding: 15px 20px;
        border-radius: 10px;
        margin-bottom: 25px;
        font-size: 14px;
        line-height: 1.6;
    }

    .message.success {
        background: #d4edda;
        border: 1px solid #c3e6cb;
        color: #155724;
    }

    .message.error {
        background: #f8d7da;
        border: 1px solid #f5c6cb;
        color: #721c24;
    }

    .message.warning {
        background: #fff3cd;
        border: 1px solid #ffeaa7;
        color: #856404;
    }

    .upload-area {
        border: 3px dashed #ddd;
        border-radius: 15px;
        padding: 50px 30px;
        text-align: center;
        background: #f8f9fa;
        transition: all 0.3s;
        cursor: pointer;
    }

    .upload-area:hover {
        border-color: #667eea;
        background: #f0f2ff;
    }

    .upload-area.dragover {
        border-color: #667eea;
        background: #e8ebff;
    }

    .upload-icon {
        font-size: 64px;
        margin-bottom: 20px;
    }

    .upload-area h3 {
        font-size: 20px;
        font-weight: 600;
        color: #2c3e50;
        margin-bottom: 10px;
    }

    .upload-area p {
        color: #7f8c8d;
        font-size: 14px;
        margin-bottom: 20px;
    }

    .file-input {
        display: none;
    }

    .btn-upload {
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        color: white;
        padding: 12px 30px;
        border: none;
        border-radius: 10px;
        font-size: 15px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s;
    }

    .btn-upload:hover {
        transform: translateY(-2px);
        box-shadow: 0 5px 20px rgba(102, 126, 234, 0.4);
    }

    .selected-file {
        margin-top: 20px;
        padding: 15px 20px;
        background: white;
        border-radius: 10px;
        display: none;
        align-items: center;
        gap: 15px;
    }

    .selected-file.show {
        display: flex;
    }

    .file-icon {
        font-size: 32px;
    }

    .file-details {
        flex: 1;
    }

    .file-name {
        font-weight: 600;
        color: #2c3e50;
        margin-bottom: 5px;
    }

    .file-size {
        font-size: 13px;
        color: #7f8c8d;
    }

    .btn-remove {
        background: #e74c3c;
        color: white;
        border: none;
        padding: 8px 15px;
        border-radius: 6px;
        cursor: pointer;
        font-size: 13px;
    }

    .excel-format {
        background: #f8f9fa;
        padding: 20px;
        border-radius: 10px;
        margin-top: 25px;
    }

    .excel-format h3 {
        font-size: 16px;
        font-weight: 600;
        margin-bottom: 15px;
        color: #2c3e50;
    }

    .excel-format table {
        width: 100%;
        font-size: 13px;
        border-collapse: collapse;
    }

    .excel-format th {
        background: #667eea;
        color: white;
        padding: 10px;
        text-align: left;
        font-weight: 600;
    }

    .excel-format td {
        padding: 10px;
        border-bottom: 1px solid #e0e0e0;
    }

    .submit-btn {
        width: 100%;
        background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
        color: white;
        padding: 15px;
        border: none;
        border-radius: 10px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        margin-top: 20px;
        transition: all 0.3s;
    }

    .submit-btn:hover {
        transform: translateY(-2px);
        box-shadow: 0 5px 20px rgba(17, 153, 142, 0.4);
    }

    .submit-btn:disabled {
        background: #ccc;
        cursor: not-allowed;
        transform: none;
    }

    /* Preview Modal */
    .preview-modal {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.5);
        z-index: 1000;
        overflow-y: auto;
    }

    .preview-modal.show {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 20px;
    }

    .preview-content {
        background: white;
        border-radius: 15px;
        padding: 30px;
        max-width: 95%;
        max-height: 90vh;
        overflow-y: auto;
        box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    }

    .preview-header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-bottom: 20px;
        padding-bottom: 15px;
        border-bottom: 2px solid #f0f0f0;
    }

    .preview-header h3 {
        font-size: 20px;
        font-weight: 600;
        color: #2c3e50;
        margin: 0;
    }

    .preview-info {
        background: #e8f4f8;
        padding: 12px 20px;
        border-radius: 8px;
        margin-bottom: 20px;
        color: #0c5460;
        font-size: 14px;
    }

    .preview-table {
        width: 100%;
        border-collapse: collapse;
        font-size: 13px;
        margin-bottom: 20px;
    }

    .preview-table th {
        background: #667eea;
        color: white;
        padding: 12px;
        text-align: left;
        font-weight: 600;
        position: sticky;
        top: 0;
    }

    .preview-table td {
        padding: 10px 12px;
        border-bottom: 1px solid #e0e0e0;
    }

    .preview-table tr:hover {
        background: #f8f9fa;
    }

    .preview-actions {
        display: flex;
        gap: 15px;
        justify-content: flex-end;
    }

    .btn-cancel {
        background: #95a5a6;
        color: white;
        padding: 12px 30px;
        border: none;
        border-radius: 10px;
        font-size: 15px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s;
    }

    .btn-cancel:hover {
        background: #7f8c8d;
    }

    .btn-confirm {
        background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%);
        color: white;
        padding: 12px 30px;
        border: none;
        border-radius: 10px;
        font-size: 15px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s;
    }

    .btn-confirm:hover {
        transform: translateY(-2px);
        box-shadow: 0 5px 20px rgba(17, 153, 142, 0.4);
    }

    .loading {
        text-align: center;
        padding: 40px;
        font-size: 16px;
        color: #7f8c8d;
    }
</style>

<div class="upload-container">
    <?php if ($message): ?>
        <div class="message <?php echo $messageType; ?>">
            <?php echo $message; ?>
        </div>
    <?php endif; ?>

    <div class="card">
        <div class="card-header">
            <h2>📤 Giden Arama Excel Yükleme</h2>
            <p>Giden arama verilerinizi Excel dosyası olarak yükleyin</p>
        </div>

        <form method="POST" enctype="multipart/form-data" id="uploadForm">
            <div class="upload-area" id="uploadArea">
                <div class="upload-icon">📄</div>
                <h3>Excel Dosyası Seçin veya Sürükleyin</h3>
                <p>Desteklenen formatlar: .xlsx, .xls, .csv (Maksimum 10MB)</p>
                <button type="button" class="btn-upload" onclick="document.getElementById('fileInput').click()">
                    Dosya Seç
                </button>
                <input type="file" id="fileInput" name="excel_file" class="file-input" accept=".xlsx,.xls,.csv">
            </div>

            <div class="selected-file" id="selectedFile">
                <div class="file-icon">📊</div>
                <div class="file-details">
                    <div class="file-name" id="fileName"></div>
                    <div class="file-size" id="fileSize"></div>
                </div>
                <button type="button" class="btn-remove" onclick="removeFile()">Kaldır</button>
            </div>

            <button type="button" class="submit-btn" id="previewBtn" disabled onclick="showPreview()">
                Önizleme Göster
            </button>
        </form>

        <div class="excel-format">
            <h3>📋 Excel Dosya Formatı</h3>
            <p style="margin-bottom: 15px; color: #666; font-size: 13px;">
                Operatörden aldığınız Excel dosyasını <strong>olduğu gibi</strong> yükleyebilirsiniz.<br>
                <strong>ÖNEMLİ:</strong> B sütunundaki dahili numarası sistemde kayıtlı olmalıdır.<br>
                <strong>Tarih Formatları:</strong> 30/10/2025, 30.10.2025, 2025-10-30 desteklenir.
            </p>
            <table>
                <thead>
                    <tr>
                        <th>Sütun</th>
                        <th>Alan</th>
                        <th>Açıklama</th>
                        <th>Örnek</th>
                        <th>Durum</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><strong>A</strong></td>
                        <td>Tarih</td>
                        <td>Arama tarihi</td>
                        <td>2025-01-04</td>
                        <td><span style="color: green;">✓ Kullanılacak</span></td>
                    </tr>
                    <tr style="background: #fff3cd;">
                        <td><strong>B</strong></td>
                        <td>Dahili</td>
                        <td><strong>Telefon dahili numarası (Personel Eşleştirme)</strong></td>
                        <td>101</td>
                        <td><span style="color: green;">✓ Kullanılacak</span></td>
                    </tr>
                    <tr style="background: #f8f9fa;">
                        <td><strong>C</strong></td>
                        <td>Dahili Adı</td>
                        <td>Dahiliye ait personel adı (Göz ardı edilir)</td>
                        <td>Ahmet Yılmaz</td>
                        <td><span style="color: #999;">⊗ Göz ardı</span></td>
                    </tr>
                    <tr>
                        <td><strong>D</strong></td>
                        <td>Cevaplanan Arama</td>
                        <td>Arama yapılıp cevap alınan sayısı</td>
                        <td>30</td>
                        <td><span style="color: green;">✓ Kullanılacak</span></td>
                    </tr>
                    <tr>
                        <td><strong>E</strong></td>
                        <td>Cevaplanmayan Arama</td>
                        <td>Arama yapılan fakat cevap verilmeyen sayısı</td>
                        <td>5</td>
                        <td><span style="color: green;">✓ Kullanılacak</span></td>
                    </tr>
                    <tr>
                        <td><strong>F</strong></td>
                        <td>Toplam Süre</td>
                        <td>Toplam konuşma süresi (HH:MM:SS)</td>
                        <td>01:45:30</td>
                        <td><span style="color: green;">✓ Kullanılacak</span></td>
                    </tr>
                    <tr>
                        <td><strong>G</strong></td>
                        <td>Ortalama Süre</td>
                        <td>Ortalama konuşma süresi (HH:MM:SS)</td>
                        <td>00:03:02</td>
                        <td><span style="color: green;">✓ Kullanılacak</span></td>
                    </tr>
                    <tr style="background: #f8f9fa;">
                        <td><strong>H+ (Diğer)</strong></td>
                        <td>-</td>
                        <td>Diğer sütunlar göz ardı edilir</td>
                        <td>-</td>
                        <td><span style="color: #999;">⊗ Göz ardı</span></td>
                    </tr>
                </tbody>
            </table>
            <div style="margin-top: 15px; padding: 12px; background: #d1ecf1; border: 1px solid #bee5eb; border-radius: 8px; color: #0c5460;">
                <strong>💡 Not:</strong> Dahili numaralarını <a href="accounts.php" style="color: #0c5460; text-decoration: underline;">Hesaplar</a> sayfasından personellere atayabilirsiniz.
            </div>
        </div>
    </div>
</div>

<!-- Preview Modal -->
<div class="preview-modal" id="previewModal">
    <div class="preview-content">
        <div class="preview-header">
            <h3>📊 Excel Önizleme</h3>
        </div>
        <div id="previewBody">
            <div class="loading">Yükleniyor...</div>
        </div>
    </div>
</div>

<script>
const uploadArea = document.getElementById('uploadArea');
const fileInput = document.getElementById('fileInput');
const selectedFile = document.getElementById('selectedFile');
const previewBtn = document.getElementById('previewBtn');
const previewModal = document.getElementById('previewModal');
let currentFile = null;

// Dosya seçildiğinde
fileInput.addEventListener('change', function() {
    if (this.files.length > 0) {
        showSelectedFile(this.files[0]);
    }
});

// Drag & Drop
uploadArea.addEventListener('dragover', function(e) {
    e.preventDefault();
    this.classList.add('dragover');
});

uploadArea.addEventListener('dragleave', function() {
    this.classList.remove('dragover');
});

uploadArea.addEventListener('drop', function(e) {
    e.preventDefault();
    this.classList.remove('dragover');

    const files = e.dataTransfer.files;
    if (files.length > 0) {
        fileInput.files = files;
        showSelectedFile(files[0]);
    }
});

function showSelectedFile(file) {
    const fileName = document.getElementById('fileName');
    const fileSize = document.getElementById('fileSize');

    fileName.textContent = file.name;
    fileSize.textContent = formatFileSize(file.size);

    selectedFile.classList.add('show');
    previewBtn.disabled = false;
    currentFile = file;
}

function removeFile() {
    fileInput.value = '';
    selectedFile.classList.remove('show');
    previewBtn.disabled = true;
    currentFile = null;
}

function formatFileSize(bytes) {
    if (bytes === 0) return '0 Bytes';
    const k = 1024;
    const sizes = ['Bytes', 'KB', 'MB', 'GB'];
    const i = Math.floor(Math.log(bytes) / Math.log(k));
    return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];
}

function showPreview() {
    if (!currentFile) return;

    previewModal.classList.add('show');
    document.getElementById('previewBody').innerHTML = '<div class="loading">Yükleniyor...</div>';

    const formData = new FormData();
    formData.append('excel_file', currentFile);
    formData.append('action', 'preview');

    fetch('upload_outgoing.php', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            displayPreview(data);
        } else {
            document.getElementById('previewBody').innerHTML =
                '<div class="preview-info" style="background: #f8d7da; color: #721c24;">Hata: ' + data.error + '</div>';
        }
    })
    .catch(error => {
        document.getElementById('previewBody').innerHTML =
            '<div class="preview-info" style="background: #f8d7da; color: #721c24;">Bir hata oluştu: ' + error.message + '</div>';
    });
}

function displayPreview(data) {
    let html = '<div class="preview-info">';
    html += '<strong>📊 Toplam Satır:</strong> ' + data.totalRows + ' (İlk 10 satır gösteriliyor)';
    html += '</div>';

    html += '<div style="overflow-x: auto;">';
    html += '<table class="preview-table">';
    html += '<thead><tr>';

    // Başlıklar
    const columnNames = ['Tarih', 'Dahili', 'Dahili Adı', 'Cevaplanan', 'Cevaplanmayan', 'Toplam Süre', 'Ort. Süre'];
    columnNames.forEach((name, idx) => {
        const letter = String.fromCharCode(65 + idx);
        html += '<th>' + letter + ' - ' + name + '</th>';
    });
    html += '</tr></thead>';

    html += '<tbody>';
    data.rows.forEach((row, idx) => {
        // Boş satırları atla
        if (row.every(cell => !cell)) return;

        html += '<tr>';
        row.forEach((cell, cellIdx) => {
            if (cellIdx < 7) { // Sadece ilk 7 sütunu göster
                html += '<td>' + (cell || '-') + '</td>';
            }
        });
        html += '</tr>';
    });
    html += '</tbody>';
    html += '</table>';
    html += '</div>';

    html += '<div class="preview-actions">';
    html += '<button type="button" class="btn-cancel" onclick="closePreview()">İptal</button>';
    html += '<button type="button" class="btn-confirm" onclick="confirmUpload()">Onayla ve Yükle</button>';
    html += '</div>';

    document.getElementById('previewBody').innerHTML = html;
}

function closePreview() {
    previewModal.classList.remove('show');
}

function confirmUpload() {
    // Gerçek formu gönder
    document.getElementById('uploadForm').submit();
}
</script>

<?php include 'includes/footer.php'; ?>
