<?php
include_once '../../config/Database.php';

class CursoController
{
    private $db;

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

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

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

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

    public function obtenerCursoPorId($id)
    {
        try {
            $query = "SELECT * FROM cursos WHERE id = :id";
            $stmt = $this->db->prepare($query);
            $stmt->bindParam(':id', $id);
            $stmt->execute();
            return $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
        } catch (PDOException $e) {
            error_log("Error al obtener curso: " . $e->getMessage());
            return null;
        }
    }
    
    public function eliminarCurso($id)
    {
        try {
            $query = "DELETE FROM cursos WHERE id = :id";
            $stmt = $this->db->prepare($query);
            $stmt->bindParam(':id', $id);
            return $stmt->execute();
        } catch (PDOException $e) {
            error_log("Error al eliminar curso: " . $e->getMessage());
            return false;
        }
    }
}
?>