<?php
include_once __DIR__ . '/../config/database.php';

class CarreraController
{
    private $db;

    public function __construct()
    {
        $database = new Database();
        $this->db = $database->getConnection();
    }

    public function listarCarreras()
    {
        try {
            $query = "SELECT * FROM carrera where tipo = 'carrera'";
            $stmt = $this->db->prepare($query);
            $stmt->execute();
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            error_log("Error al listar carreras: " . $e->getMessage());
            return [];
        }
    }

    public function agregarCarrera($carrera, $estado, $detalle, $sucursal, $tipo)
    {
        try {
            $query = "INSERT INTO carrera (carrera, estado, detalle, sucursal_varchar, tipo) VALUES (:carrera, :estado, :detalle, :sucursal_varchar, :tipo)";
            $stmt = $this->db->prepare($query);
            $stmt->bindParam(':carrera', $carrera);
            $stmt->bindParam(':estado', $estado);
            $stmt->bindParam(':detalle', $detalle);
            $stmt->bindParam(':sucursal_varchar', $sucursal);
            $stmt->bindParam(':tipo', $tipo);
            return $stmt->execute();
        } catch (PDOException $e) {
            error_log("Error al agregar carrera: " . $e->getMessage());
            return false;
        }
    }

    public function actualizarCarrera($id, $carrera, $estado, $detalle, $sucursal, $tipo)
    {
        try {
            $query = "UPDATE carrera SET carrera = :carrera, estado = :estado, detalle = :detalle, sucursal_varchar = :sucursal_varchar, tipo = :tipo WHERE id = :id";
            $stmt = $this->db->prepare($query);
            $stmt->bindParam(':id', $id);
            $stmt->bindParam(':carrera', $carrera);
            $stmt->bindParam(':estado', $estado);
            $stmt->bindParam(':detalle', $detalle);
            $stmt->bindParam(':sucursal_varchar', $sucursal);
            $stmt->bindParam(':tipo', $tipo);
            return $stmt->execute();
        } catch (PDOException $e) {
            error_log("Error al actualizar carrera: " . $e->getMessage());
            return false;
        }
    }

    public function obtenerCarreraPorId($id)
    {
        try {
            $query = "SELECT * FROM carrera WHERE id = :id";
            $stmt = $this->db->prepare($query);
            $stmt->bindParam(':id', $id);
            $stmt->execute();
            return $stmt->fetch(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            error_log("Error al obtener carrera por ID: " . $e->getMessage());
            return false;
        }
    }

    public function obtenerCarreras()
    {
        try {
            $query = "SELECT * FROM carrera where tipo = 'carrera'";
            $stmt = $this->db->prepare($query);
            $stmt->execute();
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            error_log("Error al obtener carreras: " . $e->getMessage());
            return [];
        }
    }
}
