<?php
// sekretaris/kampanye/edit.php
$pageTitle = 'Edit Kampanye';
require_once '../../includes/config.php';
require_once '../../includes/database.php';
require_once '../../includes/functions.php';
require_once '../../includes/auth.php';

// Mulai session jika belum dimulai
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// Cek apakah user sudah login dan role-nya sekretaris
if (!isset($_SESSION['user_id']) || !isset($_SESSION['role']) || $_SESSION['role'] != 'sekretaris') {
    // Redirect ke halaman login jika belum login atau bukan sekretaris
    setFlash('login_required', 'Anda harus login sebagai sekretaris untuk mengakses halaman ini', 'danger');
    header('Location: ' . SITE_URL . '/auth/login.php');
    exit;
}

// Cek apakah ada ID kampanye
if (!isset($_GET['id']) || empty($_GET['id'])) {
    setFlash('kampanye', 'ID kampanye tidak valid', 'danger');
    header('Location: ' . SITE_URL . '/sekretaris/kampanye/index.php');
    exit;
}

// Koneksi database
$db = dbConnect();
$id = $_GET['id'];

// Ambil data kampanye
$db->query("SELECT * FROM kampanye WHERE id = :id");
$db->bind(':id', $id);
$kampanye = $db->single();

if (!$kampanye) {
    setFlash('kampanye', 'Kampanye tidak ditemukan', 'danger');
    header('Location: ' . SITE_URL . '/sekretaris/kampanye/index.php');
    exit;
}

// Hanya kampanye yang menunggu persetujuan yang bisa diedit
if ($kampanye->status !== 'menunggu_persetujuan') {
    setFlash('edit_kampanye', 'Hanya kampanye yang menunggu persetujuan yang dapat diedit', 'warning');
}

// Proses form jika disubmit
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $kampanye->status === 'menunggu_persetujuan') {
    // Validasi input
    $judul = sanitize($_POST['judul'] ?? '');
    $deskripsi = $_POST['deskripsi'] ?? '';
    $target_donasi = str_replace(['Rp', '.', ','], '', $_POST['target_donasi'] ?? 0);
    $tanggal_mulai = $_POST['tanggal_mulai'] ?? '';
    $tanggal_selesai = $_POST['tanggal_selesai'] ?? '';
    
    $errors = [];
    
    // Validasi data
    if (empty($judul)) {
        $errors[] = 'Judul kampanye tidak boleh kosong';
    }
    
    if (empty($deskripsi)) {
        $errors[] = 'Deskripsi kampanye tidak boleh kosong';
    }
    
    if (empty($target_donasi) || !is_numeric($target_donasi) || $target_donasi <= 0) {
        $errors[] = 'Target donasi harus berupa angka dan lebih dari 0';
    }
    
    if (empty($tanggal_mulai)) {
        $errors[] = 'Tanggal mulai tidak boleh kosong';
    }
    
    if (empty($tanggal_selesai)) {
        $errors[] = 'Tanggal selesai tidak boleh kosong';
    }
    
    if (!empty($tanggal_mulai) && !empty($tanggal_selesai)) {
        if (strtotime($tanggal_mulai) > strtotime($tanggal_selesai)) {
            $errors[] = 'Tanggal mulai tidak boleh lebih besar dari tanggal selesai';
        }
    }
    
    // Upload gambar jika ada
    $gambar = $kampanye->gambar; // Default ke gambar yang sudah ada
    if (isset($_FILES['gambar']) && $_FILES['gambar']['error'] != UPLOAD_ERR_NO_FILE) {
        $upload_dir = UPLOAD_DIR . 'kampanye/';
        $upload_result = uploadFile($_FILES['gambar'], $upload_dir, 'gambar');
        
        if ($upload_result === false) {
            $errors[] = 'Upload gambar gagal. Pastikan format file adalah JPG, JPEG, atau PNG dan ukuran tidak lebih dari 2MB';
        } else {
            // Hapus gambar lama jika bukan default
            if ($gambar != 'default.jpg') {
                $old_image_path = UPLOAD_DIR . 'kampanye/' . $gambar;
                if (file_exists($old_image_path)) {
                    unlink($old_image_path);
                }
            }
            $gambar = $upload_result;
        }
    }
    
    // Jika tidak ada error, update data
    if (empty($errors)) {
        $db->query("UPDATE kampanye SET 
                   judul = :judul, 
                   deskripsi = :deskripsi, 
                   target_donasi = :target_donasi, 
                   tanggal_mulai = :tanggal_mulai, 
                   tanggal_selesai = :tanggal_selesai, 
                   gambar = :gambar
                   WHERE id = :id");
        $db->bind(':judul', $judul);
        $db->bind(':deskripsi', $deskripsi);
        $db->bind(':target_donasi', $target_donasi);
        $db->bind(':tanggal_mulai', $tanggal_mulai);
        $db->bind(':tanggal_selesai', $tanggal_selesai);
        $db->bind(':gambar', $gambar);
        $db->bind(':id', $id);
        
        if ($db->execute()) {
            // Log aktivitas
            logActivity('Mengubah kampanye', 'kampanye', $id, 'Sekretaris mengubah kampanye: ' . $judul);
            
            // Kirim notifikasi ke ketua
            $db->query("SELECT id FROM users WHERE role = 'ketua'");
            $ketua = $db->resultSet();
            foreach ($ketua as $user) {
                createNotification(
                    $user->id,
                    'Kampanye Diperbarui',
                    'Kampanye yang menunggu persetujuan telah diperbarui: ' . $judul,
                    SITE_URL . '/ketua/kampanye/detail.php?id=' . $id
                );
            }
            
            setFlash('kampanye', 'Kampanye berhasil diupdate', 'success');
            header('Location: ' . SITE_URL . '/sekretaris/kampanye/index.php');
            exit;
        } else {
            setFlash('edit_kampanye', 'Gagal update data kampanye', 'danger');
        }
    } else {
        // Gabungkan semua error
        $error_message = implode('<br>', $errors);
        setFlash('edit_kampanye', $error_message, 'danger');
    }
}

// Include header
require_once '../../includes/header.php';
?>

<div class="container-fluid">
    <div class="row">
        <!-- Sidebar -->
                <?php require_once '../../includes/sidebar-sekretaris.php'; ?>


        <!-- Content Area -->
        <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
            <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
                <h1 class="h2">Edit Kampanye</h1>
                <div class="btn-toolbar mb-2 mb-md-0">
                    <a href="<?= SITE_URL ?>/sekretaris/kampanye/index.php" class="btn btn-sm btn-outline-secondary">
                        <i class="fas fa-arrow-left me-1"></i> Kembali
                    </a>
                </div>
            </div>

            <?php flash(); ?>

            <!-- Status Banner -->
            <?php if ($kampanye->status === 'menunggu_persetujuan'): ?>
                <div class="alert alert-warning">
                    <i class="fas fa-exclamation-triangle me-1"></i> Kampanye ini sedang menunggu persetujuan dari Ketua Yayasan.
                </div>
            <?php elseif ($kampanye->status === 'aktif'): ?>
                <div class="alert alert-success">
                    <i class="fas fa-check-circle me-1"></i> Kampanye ini telah disetujui dan sedang aktif. Data tidak dapat diubah.
                </div>
            <?php elseif ($kampanye->status === 'dibatalkan'): ?>
                <div class="alert alert-danger">
                    <i class="fas fa-times-circle me-1"></i> Kampanye ini telah ditolak/dibatalkan. Data tidak dapat diubah.
                </div>
            <?php elseif ($kampanye->status === 'selesai'): ?>
                <div class="alert alert-info">
                    <i class="fas fa-info-circle me-1"></i> Kampanye ini telah selesai. Data tidak dapat diubah.
                </div>
            <?php endif; ?>

            <!-- Form Edit Kampanye -->
            <div class="card">
                <div class="card-body">
                    <form action="" method="post" enctype="multipart/form-data">
                        <div class="row">
                            <div class="col-md-8">
                                <div class="mb-3">
                                    <label for="judul" class="form-label">Judul Kampanye <span class="text-danger">*</span></label>
                                    <input type="text" class="form-control" id="judul" name="judul" required value="<?= $kampanye->judul ?>" <?= $kampanye->status !== 'menunggu_persetujuan' ? 'disabled' : '' ?>>
                                </div>
                                
                                <div class="mb-3">
                                    <label for="deskripsi" class="form-label">Deskripsi <span class="text-danger">*</span></label>
                                    <textarea class="