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

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

// Delete logic
if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    try {
        // Verificar si hay horarios asociados
        $stmt = $conn->prepare("SELECT COUNT(*) FROM thorario WHERE codtipohorario = ?");
        $stmt->execute([$id]);
        $count = $stmt->fetchColumn();
        
        if ($count > 0) {
            $_SESSION['error'] = "No se puede eliminar este tipo de horario porque tiene horarios asociados. Elimine primero los horarios.";
        } else {
            $stmt = $conn->prepare("DELETE FROM tipohorario WHERE codtipohorario = ?");
            $stmt->execute([$id]);
            $_SESSION['success'] = "Tipo de horario eliminado correctamente";
        }
    } catch(PDOException $e) {
        $_SESSION['error'] = "Error al eliminar el tipo de horario: " . $e->getMessage();
    }
    header("Location: tipohorario.php");
    exit();
}

// Insert/Update logic
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $tipohorario = trim($_POST['tipohorario']);
    
    if (isset($_POST['id'])) {
        // Update
        try {
            // Verificar si el nombre ya existe (excluyendo el registro actual)
            $stmt = $conn->prepare("SELECT COUNT(*) FROM tipohorario WHERE tipohorario = ? AND codtipohorario != ?");
            $stmt->execute([$tipohorario, $_POST['id']]);
            if ($stmt->fetchColumn() > 0) {
                $_SESSION['error'] = "Ya existe un tipo de horario con ese nombre";
            } else {
                $stmt = $conn->prepare("UPDATE tipohorario SET tipohorario = ? WHERE codtipohorario = ?");
                $stmt->execute([$tipohorario, $_POST['id']]);
                $_SESSION['success'] = "Tipo de horario actualizado correctamente";
            }
        } catch(PDOException $e) {
            $_SESSION['error'] = "Error al actualizar el tipo de horario: " . $e->getMessage();
        }
    } else {
        // Insert
        try {
            // Verificar si el nombre ya existe
            $stmt = $conn->prepare("SELECT COUNT(*) FROM tipohorario WHERE tipohorario = ?");
            $stmt->execute([$tipohorario]);
            if ($stmt->fetchColumn() > 0) {
                $_SESSION['error'] = "Ya existe un tipo de horario con ese nombre";
            } else {
                $stmt = $conn->prepare("INSERT INTO tipohorario (tipohorario) VALUES (?)");
                $stmt->execute([$tipohorario]);
                $_SESSION['success'] = "Tipo de horario creado correctamente";
            }
        } catch(PDOException $e) {
            $_SESSION['error'] = "Error al crear el tipo de horario: " . $e->getMessage();
        }
    }
    header("Location: tipohorario.php");
    exit();
}

// Edit logic - fetch single record
$editData = null;
if (isset($_GET['edit'])) {
    try {
        $stmt = $conn->prepare("SELECT * FROM tipohorario WHERE codtipohorario = ?");
        $stmt->execute([$_GET['edit']]);
        $editData = $stmt->fetch(PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
        $_SESSION['error'] = "Error al obtener el tipo de horario: " . $e->getMessage();
    }
}

// Fetch all records with search
try {
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    
    $query = "SELECT t.*, 
                     COUNT(h.codhorario) as total_horarios
              FROM tipohorario t
              LEFT JOIN thorario h ON t.codtipohorario = h.codtipohorario 
              WHERE 1=1";
    
    $params = [];
    if ($search) {
        $query .= " AND t.tipohorario LIKE ?";
        $searchTerm = "%{$search}%";
        $params = [$searchTerm];
    }
    
    $query .= " GROUP BY t.codtipohorario
                ORDER BY t.tipohorario";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $tiposHorario = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $_SESSION['error'] = "Error al obtener los datos: " . $e->getMessage();
    $tiposHorario = [];
}
?>

<div class="col-md-10 p-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2>Gestión de Tipos de Horario</h2>
        <?php if (!isset($_GET['edit']) && !isset($_GET['create'])): ?>
            <a href="?create" class="btn btn-primary">
                <i class="fas fa-plus"></i> Nuevo Tipo de Horario
            </a>
        <?php endif; ?>
    </div>

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

    <?php if (isset($_SESSION['error'])): ?>
        <div class="alert alert-danger">
            <?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"><?php echo isset($_GET['edit']) ? 'Editar' : 'Crear' ?> Tipo de Horario</h5>
                <form method="POST" action="tipohorario.php">
                    <?php if (isset($_GET['edit'])): ?>
                        <input type="hidden" name="id" value="<?php echo $editData['codtipohorario']; ?>">
                    <?php endif; ?>
                    
                    <div class="row">
                        <div class="col-md-6 mb-3">
                            <label class="form-label">Nombre del Tipo de Horario</label>
                            <input type="text" class="form-control" name="tipohorario" maxlength="25"
                                   value="<?php echo $editData ? htmlspecialchars($editData['tipohorario']) : ''; ?>" required>
                            <div class="form-text">Máximo 25 caracteres</div>
                        </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="tipohorario.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="tipohorario.php" class="row g-3">
                    <div class="col-md-8">
                        <input type="text" class="form-control" name="search" 
                               placeholder="Buscar por nombre del tipo de horario..."
                               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="tipohorario.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">
                <div class="table-responsive">
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>Nombre del Tipo de Horario</th>
                                <th>Total Horarios Asociados</th>
                                <th>Acciones</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php if (empty($tiposHorario)): ?>
                                <tr>
                                    <td colspan="4" class="text-center">No se encontraron tipos de horario</td>
                                </tr>
                            <?php else: ?>
                                <?php foreach ($tiposHorario as $tipo): ?>
                                    <tr>
                                        <td><?php echo $tipo['codtipohorario']; ?></td>
                                        <td><?php echo htmlspecialchars($tipo['tipohorario']); ?></td>
                                        <td>
                                            <span class="badge bg-<?php echo $tipo['total_horarios'] > 0 ? 'info' : 'secondary'; ?>">
                                                <?php echo $tipo['total_horarios']; ?> horario<?php echo $tipo['total_horarios'] != 1 ? 's' : ''; ?>
                                            </span>
                                        </td>
                                        <td>
                                            <a href="?edit=<?php echo $tipo['codtipohorario']; ?>" class="btn btn-sm btn-warning">
                                                <i class="fas fa-edit"></i>
                                            </a>
                                            <a href="?delete=<?php echo $tipo['codtipohorario']; ?>" 
                                            class="btn btn-sm btn-danger"
                                               onclick="return confirm('¿Está seguro de eliminar este tipo de horario?')">
                                                <i class="fas fa-trash"></i>
                                            </a>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            <?php endif; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Validar longitud del campo
    var tipohorarioInput = document.querySelector('input[name="tipohorario"]');
    if (tipohorarioInput) {
        tipohorarioInput.addEventListener('input', function() {
            if (this.value.length > 25) {
                this.value = this.value.substring(0, 25);
            }
        });
    }
});
</script>

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