<?php
include_once 'includes/header.php';
include_once 'config/database.php';

// Verificar si la extensión GD está disponible para compresión de imágenes
$gdAvailable = extension_loaded('gd');
if (!$gdAvailable) {
    // Mostrar advertencia solo una vez por sesión
    if (!isset($_SESSION['gd_warning_shown'])) {
        $_SESSION['gd_warning_shown'] = true;
    }
}

$database = new Database();
$conn = $database->getConnection();

// Obtener el codempresa del usuario logueado
$codempresaUsuario = null;
try {
    $stmt = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
    $stmt->execute([$_SESSION['user']['codempleado']]);
    $empresaInfo = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($empresaInfo) {
        $codempresaUsuario = $empresaInfo['codempresa'];
    }
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener información de la empresa: " . $e->getMessage();
    header("Location: ofertas.php");
    exit();
}

// Delete logic
if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    try {
        // Obtener información de la foto antes de eliminar
        $stmt = $conn->prepare("SELECT foto FROM tofertas WHERE codofertas = ? AND codempresa = ?");
        $stmt->execute([$id, $codempresaUsuario]);
        $oferta = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$oferta) {
            $_SESSION['error'] = "❌ Campaña no encontrada o sin permisos para eliminarla";
            header("Location: ofertas.php");
            exit();
        }
        
        // Eliminar el archivo de foto si existe
        if ($oferta['foto'] && file_exists($oferta['foto'])) {
            unlink($oferta['foto']);
        }
        
        $stmt = $conn->prepare("DELETE FROM tofertas WHERE codofertas = ? AND codempresa = ?");
        $stmt->execute([$id, $codempresaUsuario]);
        $_SESSION['success'] = "🎯 Campaña eliminada correctamente";
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al eliminar la campaña: " . $e->getMessage();
    }
    header("Location: ofertas.php");
    exit();
}

// Insert/Update logic
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $denominacion = trim($_POST['denominacion']);
    $fechainicio = $_POST['fechainicio'];
    $fechafin = $_POST['fechafin'];
    $estado = trim($_POST['estado']);
    $codempleado = $_SESSION['user']['codempleado'];

    // Handle foto upload
    $foto = '';
    if (isset($_FILES['foto']) && $_FILES['foto']['error'] == 0) {
        $allowed_types = ['image/jpeg', 'image/jpg', 'image/png'];
        $file_type = $_FILES['foto']['type'];
        
        if (!in_array($file_type, $allowed_types)) {
            $_SESSION['error'] = "❌ Solo se permiten archivos JPG/JPEG/PNG";
            header("Location: ofertas.php");
            exit();
        }
        
        $target_dir = "logo/";
        if (!is_dir($target_dir)) {
            mkdir($target_dir, 0755, true);
        }
        
        $file_extension = pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION);
        $foto = $target_dir . time() . '_' . uniqid() . '.' . $file_extension;
        
        if (move_uploaded_file($_FILES['foto']['tmp_name'], $foto)) {
            // La imagen se subió correctamente
            $_SESSION['success'] = "🎉 Foto subida correctamente";
        } else {
            $_SESSION['error'] = "❌ Error al subir el archivo de foto";
            header("Location: ofertas.php");
            exit();
        }
    }

    if (isset($_POST['id'])) {
        // Update
        try {
            if (empty($denominacion)) {
                throw new Exception("La denominación de la campaña es obligatoria");
            }

            $sql = "UPDATE tofertas SET 
                    denominacion = ?, fechainicio = ?, fechafin = ?, estado = ?, codempresa = ?";
            
            $params = [$denominacion, $fechainicio, $fechafin, $estado, $codempresaUsuario];

            // Add foto to update if provided
            if ($foto) {
                // Obtener la foto anterior para eliminarla
                $stmt = $conn->prepare("SELECT foto FROM tofertas WHERE codofertas = ? AND codempresa = ?");
                $stmt->execute([$_POST['id'], $codempresaUsuario]);
                $old_foto = $stmt->fetchColumn();
                
                if ($old_foto && file_exists($old_foto)) {
                    unlink($old_foto);
                }
                
                $sql .= ", foto = ?";
                $params[] = $foto;
            }

            $sql .= " WHERE codofertas = ? AND codempresa = ?";
            $params[] = $_POST['id'];
            $params[] = $codempresaUsuario;

            $stmt = $conn->prepare($sql);
            $stmt->execute($params);
            $_SESSION['success'] = "✅ campaña actualizada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al actualizar la campaña: " . $e->getMessage();
        }
    } else {
        // Insert
        try {
            if (empty($denominacion)) {
                throw new Exception("La denominación de la campaña es obligatoria");
            }

            $stmt = $conn->prepare("INSERT INTO tofertas (denominacion, fechainicio, fechafin, foto, estado, codempleado, codempresa) 
                                   VALUES (?, ?, ?, ?, ?, ?, ?)");
            $stmt->execute([$denominacion, $fechainicio, $fechafin, $foto, $estado, $codempleado, $codempresaUsuario]);
            $_SESSION['success'] = "🎉 Campaña creada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al crear la campaña: " . $e->getMessage();
        }
    }
    header("Location: ofertas.php");
    exit();
}

// Edit logic - fetch single record
$editData = null;
if (isset($_GET['edit'])) {
    try {
        $stmt = $conn->prepare("SELECT * FROM tofertas WHERE codofertas = ? AND codempresa = ?");
        $stmt->execute([$_GET['edit'], $codempresaUsuario]);
        $editData = $stmt->fetch(PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al obtener la campaña: " . $e->getMessage();
    }
}

// Fetch all records with search
try {
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    
    $query = "SELECT o.*, emp.nombres as empleado_nombre, emp.apellidoPaterno as empleado_apellido
              FROM tofertas o
              LEFT JOIN templeado emp ON o.codempleado = emp.codempleado
              WHERE o.codempresa = ?";
    
    $params = [$codempresaUsuario];
    if ($search) {
        $query .= " AND (
            o.denominacion LIKE ? OR o.estado LIKE ?
        )";
        $searchTerm = "%{$search}%";
        $params[] = $searchTerm;
        $params[] = $searchTerm;
    }
    
    $query .= " ORDER BY o.fechainicio DESC, o.denominacion";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $ofertas = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los datos: " . $e->getMessage();
    $ofertas = [];
}

// Función para validar imagen (sin compresión)
function validateImage($source) {
    $allowedTypes = ['image/jpeg', 'image/jpg', 'image/png'];
    $info = getimagesize($source);
    
    if ($info && in_array($info['mime'], $allowedTypes)) {
        return true;
    }
    
    return false;
}
?>

<style>
.foto-preview {
    max-width: 200px;
    max-height: 200px;
    border-radius: 10px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    margin-top: 10px;
}

.foto-upload-area {
    border: 2px dashed #667eea;
    border-radius: 10px;
    padding: 20px;
    text-align: center;
    background: #f8f9ff;
    transition: all 0.3s ease;
}

.foto-upload-area:hover {
    border-color: #4facfe;
    background: #e8f4fd;
}

.foto-upload-area input[type="file"] {
    display: none;
}

.foto-upload-label {
    cursor: pointer;
    color: #667eea;
    font-weight: 600;
}

.foto-upload-label:hover {
    color: #4facfe;
}

.estado-badge {
    font-size: 0.8rem;
    padding: 6px 12px;
}

.estado-activo {
    background-color: #28a745;
    color: white;
}

.estado-inactivo {
    background-color: #dc3545;
    color: white;
}
</style>

<div class="col-md-10 p-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2 style="background: linear-gradient(135deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-weight: bold;">
            <i class="fas fa-gift" style="color: #667eea;"></i> Gestión de Campañas
        </h2>
        <?php if (!isset($_GET['edit']) && !isset($_GET['create'])): ?>
            <a href="?create" class="btn btn-primary" style="background: linear-gradient(135deg, #667eea, #764ba2); border: none; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);">
                <i class="fas fa-plus"></i> Nueva Campaña
            </a>
        <?php endif; ?>
    </div>

    <?php if (isset($_SESSION['success'])): ?>
        <div class="alert alert-success alert-custom">
            <i class="fas fa-check-circle"></i>
            <?php 
            echo $_SESSION['success']; 
            unset($_SESSION['success']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['warning'])): ?>
        <div class="alert alert-warning alert-custom">
            <i class="fas fa-exclamation-triangle"></i>
            <?php 
            echo $_SESSION['warning']; 
            unset($_SESSION['warning']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['error'])): ?>
        <div class="alert alert-danger alert-custom">
            <i class="fas fa-exclamation-triangle"></i>
            <?php 
            echo $_SESSION['error']; 
            unset($_SESSION['error']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_GET['create']) || isset($_GET['edit'])): ?>
        <!-- Form for create/edit -->
        <div class="card mb-4" style="border: none; box-shadow: 0 10px 30px rgba(0,0,0,0.1);">
            <div class="card-body">
                <h5 class="card-title" style="background: linear-gradient(135deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-weight: bold;">
                    <i class="fas fa-gift"></i> <?php echo isset($_GET['edit']) ? 'Editar' : 'Crear' ?> Campaña
                </h5>
                <form method="POST" action="ofertas.php" enctype="multipart/form-data">
                    <?php if (isset($_GET['edit'])): ?>
                        <input type="hidden" name="id" value="<?php echo $editData['codofertas']; ?>">
                    <?php endif; ?>
                    
                    <div class="row">
                        <div class="col-md-12 mb-3">
                            <label class="form-label">
                                <i class="fas fa-tag"></i> Denominación de la Campaña *
                            </label>
                            <input type="text" class="form-control" name="denominacion" maxlength="300"
                                   value="<?php echo $editData ? htmlspecialchars($editData['denominacion']) : ''; ?>" required>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-md-4 mb-3">
                            <label class="form-label">
                                <i class="fas fa-calendar-alt"></i> Fecha de Inicio *
                            </label>
                            <input type="date" class="form-control" name="fechainicio"
                                   value="<?php echo $editData ? date('Y-m-d', strtotime($editData['fechainicio'])) : date('Y-m-d'); ?>" required>
                        </div>

                        <div class="col-md-4 mb-3">
                            <label class="form-label">
                                <i class="fas fa-calendar-times"></i> Fecha de Fin *
                            </label>
                            <input type="date" class="form-control" name="fechafin"
                                   value="<?php echo $editData ? date('Y-m-d', strtotime($editData['fechafin'])) : date('Y-m-d', strtotime('+30 days')); ?>" required>
                        </div>

                        <div class="col-md-4 mb-3">
                            <label class="form-label">
                                <i class="fas fa-toggle-on"></i> Estado *
                            </label>
                            <select class="form-select" name="estado" required>
                                <option value="">Seleccionar...</option>
                                <option value="ACTIVO" <?php echo ($editData && $editData['estado'] == 'ACTIVO') ? 'selected' : ''; ?>>ACTIVO</option>
                                <option value="INACTIVO" <?php echo ($editData && $editData['estado'] == 'INACTIVO') ? 'selected' : ''; ?>>INACTIVO</option>
                            </select>
                        </div>
                    </div>

                    <div class="mb-3">
                        <label class="form-label">
                            <i class="fas fa-image"></i> Foto de la Campaña
                        </label>
                        <div class="foto-upload-area">
                            <label for="foto" class="foto-upload-label">
                                <i class="fas fa-cloud-upload-alt fa-2x mb-2"></i><br>
                                <span>Haga clic para seleccionar una foto</span><br>
                                <small class="text-muted">Solo se permiten archivos JPG/JPEG/PNG</small>
                            </label>
                            <input type="file" id="foto" name="foto" accept=".jpg,.jpeg,.png" onchange="previewFoto(this)">
                        </div>
                        <?php if ($editData && $editData['foto']): ?>
                            <div class="mt-3">
                                <label class="form-label">Foto Actual:</label>
                                <img src="<?php echo htmlspecialchars($editData['foto']); ?>" alt="Foto actual" class="foto-preview">
                            </div>
                        <?php endif; ?>
                        <div id="foto-preview" class="mt-3" style="display: none;">
                            <label class="form-label">Vista Previa:</label>
                            <img id="preview-img" class="foto-preview">
                        </div>
                    </div>

                    <div class="d-flex gap-2">
                        <button type="submit" class="btn btn-primary" style="background: linear-gradient(135deg, #667eea, #764ba2); border: none; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);">
                            <i class="fas fa-save"></i> Guardar
                        </button>
                        <a href="ofertas.php" class="btn btn-secondary">
                            <i class="fas fa-times"></i> Cancelar
                        </a>
                    </div>
                </form>
            </div>
        </div>
    <?php else: ?>
        <!-- Search form -->
        <div class="card mb-4" style="background: linear-gradient(135deg, #f8f9fa, #e9ecef); border: none; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
            <div class="card-body">
                <form method="GET" action="ofertas.php" class="row g-3">
                    <div class="col-md-8">
                        <input type="text" class="form-control" name="search" 
                               placeholder="Buscar por denominación o estado..."
                               value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>"
                               style="border: 2px solid #e9ecef; border-radius: 10px; transition: all 0.3s ease;">
                    </div>
                    <div class="col-md-4">
                        <button type="submit" class="btn btn-primary" style="background: linear-gradient(135deg, #667eea, #764ba2); border: none; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);">
                            <i class="fas fa-search"></i> Buscar
                        </button>
                        <?php if (isset($_GET['search'])): ?>
                            <a href="ofertas.php" class="btn btn-secondary">
                                <i class="fas fa-times"></i> Limpiar
                            </a>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>

        <!-- List of records -->
        <div class="card" style="border: none; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
            <div class="card-body" style="background: linear-gradient(135deg, #f8f9fa, #ffffff);">
                <div class="table-responsive">
                    <table class="table table-striped" style="border-radius: 10px; overflow: hidden;">
                    <thead style="background: linear-gradient(135deg, #667eea, #764ba2); color: white;">
                        <tr>
                            <th style="border: none; padding: 15px;"><i class="fas fa-hashtag"></i> ID</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-image"></i> Foto</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-tag"></i> Denominación</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-calendar-alt"></i> Fecha Inicio</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-calendar-times"></i> Fecha Fin</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-toggle-on"></i> Estado</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-user"></i> Creado por</th>
                            <th style="border: none; padding: 15px;"><i class="fas fa-cogs"></i> Acciones</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($ofertas as $oferta): ?>
                            <tr>
                                <td>
                                    <span class="badge bg-primary rounded-pill"><?php echo $oferta['codofertas']; ?></span>
                                </td>
                                <td>
                                    <?php if ($oferta['foto']): ?>
                                        <img src="<?php echo htmlspecialchars($oferta['foto']); ?>" 
                                             alt="Foto <?php echo htmlspecialchars($oferta['denominacion']); ?>" 
                                             style="width: 50px; height: 50px; object-fit: cover; border-radius: 5px;">
                                    <?php else: ?>
                                        <div style="width: 50px; height: 50px; background-color: #f8f9fa; display: flex; align-items: center; justify-content: center; border-radius: 5px;">
                                            <i class="fas fa-image" style="color: #6c757d;"></i>
                                        </div>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <strong><?php echo htmlspecialchars($oferta['denominacion']); ?></strong>
                                </td>
                                <td>
                                    <?php if ($oferta['fechainicio']): ?>
                                        <i class="fas fa-calendar text-info"></i>
                                        <?php echo date('d/m/Y', strtotime($oferta['fechainicio'])); ?>
                                    <?php else: ?>
                                        <span class="text-muted">-</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php if ($oferta['fechafin']): ?>
                                        <i class="fas fa-calendar text-warning"></i>
                                        <?php echo date('d/m/Y', strtotime($oferta['fechafin'])); ?>
                                    <?php else: ?>
                                        <span class="text-muted">-</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php if ($oferta['estado']): ?>
                                        <span class="estado-badge <?php echo strtolower($oferta['estado']) == 'activo' ? 'estado-activo' : 'estado-inactivo'; ?>">
                                            <?php echo htmlspecialchars($oferta['estado']); ?>
                                        </span>
                                    <?php else: ?>
                                        <span class="text-muted">-</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php if ($oferta['empleado_nombre']): ?>
                                        <i class="fas fa-user text-warning"></i>
                                        <?php echo htmlspecialchars($oferta['empleado_nombre'] . ' ' . $oferta['empleado_apellido']); ?>
                                    <?php else: ?>
                                        <span class="text-muted">-</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <div class="btn-group" role="group">
                                        <a href="?edit=<?php echo $oferta['codofertas']; ?>" 
                                           class="btn btn-sm btn-warning" 
                                           title="Editar">
                                            <i class="fas fa-edit"></i>
                                        </a>
                                        <a href="?delete=<?php echo $oferta['codofertas']; ?>" 
                                           class="btn btn-sm btn-danger"
                                           onclick="return confirm('¿Está seguro de eliminar la campaña \'<?php echo htmlspecialchars($oferta['denominacion']); ?>\'?')"
                                           title="Eliminar">
                                            <i class="fas fa-trash"></i>
                                        </a>
                                    </div>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Form validation
    const form = document.querySelector('form[method="POST"]');
    if (form) {
        form.addEventListener('submit', function(e) {
            const denominacion = form.querySelector('input[name="denominacion"]').value.trim();
            const fechainicio = form.querySelector('input[name="fechainicio"]').value;
            const fechafin = form.querySelector('input[name="fechafin"]').value;
            const estado = form.querySelector('select[name="estado"]').value;
            
            if (!denominacion) {
                e.preventDefault();
                alert('La denominación de la campaña es obligatoria');
                return false;
            }
            
            if (!fechainicio) {
                e.preventDefault();
                alert('La fecha de inicio es obligatoria');
                return false;
            }
            
            if (!fechafin) {
                e.preventDefault();
                alert('La fecha de fin es obligatoria');
                return false;
            }
            
            if (!estado) {
                e.preventDefault();
                alert('El estado es obligatorio');
                return false;
            }
            
            // Validar que la fecha de fin sea posterior a la fecha de inicio
            if (new Date(fechafin) <= new Date(fechainicio)) {
                e.preventDefault();
                alert('La fecha de fin debe ser posterior a la fecha de inicio');
                return false;
            }
        });
    }
});

// Función para previsualizar la foto
function previewFoto(input) {
    const preview = document.getElementById('foto-preview');
    const previewImg = document.getElementById('preview-img');
    
    if (input.files && input.files[0]) {
        const reader = new FileReader();
        
        reader.onload = function(e) {
            previewImg.src = e.target.result;
            preview.style.display = 'block';
        };
        
        reader.readAsDataURL(input.files[0]);
    } else {
        preview.style.display = 'none';
    }
}
</script>

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