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

$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();
}

// Verificar si existe el campo codempresa en tmensaje, si no, intentar agregarlo
$columnExists = false;
try {
    $stmt = $conn->query("SHOW COLUMNS FROM tmensaje LIKE 'codempresa'");
    $columnExists = $stmt->rowCount() > 0;
    
    if (!$columnExists) {
        // Agregar el campo codempresa a la tabla tmensaje
        try {
            $conn->exec("ALTER TABLE tmensaje ADD COLUMN codempresa INT(11) DEFAULT NULL AFTER mensaje");
            $conn->exec("ALTER TABLE tmensaje ADD INDEX idx_codempresa (codempresa)");
            // Verificar que se agregó correctamente
            $stmt = $conn->query("SHOW COLUMNS FROM tmensaje LIKE 'codempresa'");
            $columnExists = $stmt->rowCount() > 0;
        } catch(PDOException $e) {
            // Si hay error, probablemente el campo ya existe o no se pudo agregar
            error_log("Error al agregar campo codempresa: " . $e->getMessage());
            // Intentamos verificar de nuevo
            try {
                $stmt = $conn->query("SHOW COLUMNS FROM tmensaje LIKE 'codempresa'");
                $columnExists = $stmt->rowCount() > 0;
            } catch(PDOException $e2) {
                error_log("Error al verificar campo codempresa: " . $e2->getMessage());
            }
        }
    }
} catch(PDOException $e) {
    error_log("Error general al verificar campo codempresa: " . $e->getMessage());
}

// Delete logic
if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    try {
        // Verificar que el mensaje pertenece a la empresa del usuario
        $stmt = $conn->prepare("SELECT codmensaje, mensaje FROM tmensaje WHERE codmensaje = ? AND codempresa = ?");
        $stmt->execute([$id, $codempresaUsuario]);
        $mensaje = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$mensaje) {
            $_SESSION['error'] = "❌ No se puede eliminar el mensaje porque no existe o no pertenece a su empresa";
        } else {
            // Verificar si el mensaje tiene relaciones en tmensajeempresa
            $stmt = $conn->prepare("SELECT COUNT(*) as total FROM tmensajeempresa WHERE codmensaje = ?");
            $stmt->execute([$id]);
            $result = $stmt->fetch(PDO::FETCH_ASSOC);
            
            if ($result['total'] > 0) {
                $_SESSION['error'] = "❌ No se puede eliminar el mensaje porque está asociado a una o más empresas";
            } else {
                $stmt = $conn->prepare("DELETE FROM tmensaje WHERE codmensaje = ? AND codempresa = ?");
                $stmt->execute([$id, $codempresaUsuario]);
                $_SESSION['success'] = "✅ Mensaje eliminado correctamente";
            }
        }
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al eliminar el mensaje: " . $e->getMessage();
    }
    header("Location: crud_mensajes.php");
    exit();
}

// Insert/Update logic
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $mensaje = trim($_POST['mensaje']);
    
    if (!$codempresaUsuario) {
        $_SESSION['error'] = "❌ Error: No se pudo determinar la empresa del usuario";
        header("Location: crud_mensajes.php");
        exit();
    }
    
    if (isset($_POST['id'])) {
        // Update
        try {
            if (empty($mensaje)) {
                throw new Exception("El mensaje es obligatorio");
            }

            if (strlen($mensaje) > 200) {
                throw new Exception("El mensaje no puede exceder 200 caracteres");
            }

            $stmt = $conn->prepare("UPDATE tmensaje SET mensaje = ? WHERE codmensaje = ? AND codempresa = ?");
            $stmt->execute([$mensaje, $_POST['id'], $codempresaUsuario]);
            
            if ($stmt->rowCount() > 0) {
                $_SESSION['success'] = "✅ Mensaje actualizado correctamente";
            } else {
                $_SESSION['error'] = "❌ No se pudo actualizar el mensaje. Verifique que pertenezca a su empresa.";
            }
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al actualizar el mensaje: " . $e->getMessage();
        }
    } else {
        // Insert
        try {
            if (empty($mensaje)) {
                throw new Exception("El mensaje es obligatorio");
            }

            if (strlen($mensaje) > 200) {
                throw new Exception("El mensaje no puede exceder 200 caracteres");
            }

            $stmt = $conn->prepare("INSERT INTO tmensaje (mensaje, codempresa) VALUES (?, ?)");
            $stmt->execute([$mensaje, $codempresaUsuario]);
            $_SESSION['success'] = "🎉 Mensaje creado correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al crear el mensaje: " . $e->getMessage();
        }
    }
    header("Location: crud_mensajes.php");
    exit();
}

// Edit logic - fetch single record
$editData = null;
if (isset($_GET['edit'])) {
    try {
        $stmt = $conn->prepare("SELECT * FROM tmensaje WHERE codmensaje = ? AND codempresa = ?");
        $stmt->execute([$_GET['edit'], $codempresaUsuario]);
        $editData = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$editData) {
            $_SESSION['error'] = "❌ El mensaje no existe o no pertenece a su empresa";
        }
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al obtener el mensaje: " . $e->getMessage();
    }
}

// Fetch all records with search (solo de la empresa del usuario)
try {
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    
    $query = "SELECT m.*, 
                     (SELECT COUNT(*) FROM tmensajeempresa WHERE codmensaje = m.codmensaje) as total_empresas
              FROM tmensaje m
              WHERE m.codempresa = ?";
    
    $params = [$codempresaUsuario];
    
    if ($search) {
        $query .= " AND m.mensaje LIKE ?";
        $searchTerm = "%{$search}%";
        $params[] = $searchTerm;
    }
    
    $query .= " ORDER BY m.mensaje";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $mensajes = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los datos: " . $e->getMessage();
    $mensajes = [];
}
?>

<style>
.mensaje-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.mensaje-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 30px rgba(0,0,0,0.15);
}

.badge-empresas {
    font-size: 0.85rem;
    padding: 5px 10px;
}

.mensaje-text {
    max-width: 400px;
    word-wrap: break-word;
}
</style>

<div class="col-md-10 p-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2>
            <i class="fas fa-comment-dots"></i> Gestión de Mensajes
        </h2>
        <?php if (!isset($_GET['edit']) && !isset($_GET['create'])): ?>
            <a href="?create" class="btn btn-primary">
                <i class="fas fa-plus"></i> Nuevo Mensaje
            </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">
            <div class="card-body">
                <h5 class="card-title">
                    <i class="fas fa-<?php echo isset($_GET['edit']) ? 'edit' : 'plus'; ?>"></i>
                    <?php echo isset($_GET['edit']) ? 'Editar' : 'Crear'; ?> Mensaje
                </h5>
                <form method="POST" action="crud_mensajes.php">
                    <?php if (isset($_GET['edit'])): ?>
                        <input type="hidden" name="id" value="<?php echo $editData['codmensaje']; ?>">
                    <?php endif; ?>
                    
                    <div class="mb-3">
                        <label class="form-label">
                            <i class="fas fa-comment-dots"></i> Mensaje *
                        </label>
                        <textarea class="form-control" name="mensaje" maxlength="200" rows="4"
                                  placeholder="Ingrese el mensaje"
                                  required><?php echo $editData ? htmlspecialchars($editData['mensaje']) : ''; ?></textarea>
                        <div class="form-text">Máximo 200 caracteres</div>
                    </div>

                    <div class="d-flex gap-2">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-save"></i> Guardar
                        </button>
                        <a href="crud_mensajes.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">
            <div class="card-body">
                <form method="GET" action="crud_mensajes.php" class="row g-3">
                    <div class="col-md-8">
                        <input type="text" class="form-control" name="search" 
                               placeholder="Buscar por contenido del mensaje..."
                               value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>">
                    </div>
                    <div class="col-md-4">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-search"></i> Buscar
                        </button>
                        <?php if (isset($_GET['search'])): ?>
                            <a href="crud_mensajes.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">
            <div class="card-body">
                <?php if (empty($mensajes)): ?>
                    <div class="text-center py-5">
                        <i class="fas fa-comment-dots fa-4x text-muted mb-3"></i>
                        <p class="text-muted">No hay mensajes registrados</p>
                        <a href="?create" class="btn btn-primary">
                            <i class="fas fa-plus"></i> Crear Primer Mensaje
                        </a>
                    </div>
                <?php else: ?>
                    <div class="table-responsive">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th><i class="fas fa-hashtag"></i> ID</th>
                                    <th><i class="fas fa-comment-dots"></i> Mensaje</th>
                                    <th><i class="fas fa-building"></i> Empresas</th>
                                    <th><i class="fas fa-cogs"></i> Acciones</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($mensajes as $mensaje): ?>
                                    <tr>
                                        <td>
                                            <span class="badge bg-primary rounded-pill"><?php echo $mensaje['codmensaje']; ?></span>
                                        </td>
                                        <td>
                                            <div class="mensaje-text">
                                                <strong><?php echo htmlspecialchars($mensaje['mensaje']); ?></strong>
                                            </div>
                                        </td>
                                        <td>
                                            <?php if ($mensaje['total_empresas'] > 0): ?>
                                                <span class="badge bg-info badge-empresas">
                                                    <i class="fas fa-building"></i>
                                                    <?php echo $mensaje['total_empresas']; ?> empresa(s)
                                                </span>
                                            <?php else: ?>
                                                <span class="badge bg-secondary badge-empresas">
                                                    <i class="fas fa-exclamation-circle"></i>
                                                    Sin empresas
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <div class="btn-group" role="group">
                                                <a href="?edit=<?php echo $mensaje['codmensaje']; ?>" 
                                                   class="btn btn-sm btn-warning" 
                                                   title="Editar">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                                <a href="?delete=<?php echo $mensaje['codmensaje']; ?>" 
                                                   class="btn btn-sm btn-danger"
                                                   onclick="return confirm('¿Está seguro de eliminar este mensaje?')"
                                                   title="Eliminar">
                                                    <i class="fas fa-trash"></i>
                                                </a>
                                            </div>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Form validation
    const form = document.querySelector('form[method="POST"]');
    if (form) {
        const textarea = form.querySelector('textarea[name="mensaje"]');
        
        // Contador de caracteres
        if (textarea) {
            const maxLength = 200;
            const counter = document.createElement('div');
            counter.className = 'form-text text-end';
            counter.id = 'char-counter';
            textarea.parentElement.appendChild(counter);
            
            function updateCounter() {
                const remaining = maxLength - textarea.value.length;
                counter.textContent = remaining + ' caracteres restantes';
                if (remaining < 50) {
                    counter.classList.add('text-warning');
                } else {
                    counter.classList.remove('text-warning');
                }
            }
            
            textarea.addEventListener('input', updateCounter);
            updateCounter();
        }
        
        form.addEventListener('submit', function(e) {
            const mensaje = form.querySelector('textarea[name="mensaje"]').value.trim();
            if (!mensaje) {
                e.preventDefault();
                alert('El mensaje es obligatorio');
                return false;
            }
            
            if (mensaje.length > 200) {
                e.preventDefault();
                alert('El mensaje no puede exceder 200 caracteres');
                return false;
            }
        });
    }
});
</script>

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

