<?php
require_once 'Boleto.php';

class Sala {
    private $id;
    private $nombre;
    private $boletos = [];
    
    public function __construct($id, $nombre) {
        $this->id = $id;
        $this->nombre = $nombre;
    }
    
    public function getId() {
        return $this->id;
    }
    
    public function getNombre() {
        return $this->nombre;
    }
    
    public function inicializarBoletos($filas, $asientosPorFila, $precio) {
        $this->boletos = [];
        $contador = 1;
        
        for ($i = 1; $i <= $filas; $i++) {
            for ($j = 1; $j <= $asientosPorFila; $j++) {
                $this->boletos[] = new Boleto($contador, $i, $j, $precio);
                $contador++;
            }
        }
    }
    
    public function obtenerBoletos() {
        return $this->boletos;
    }
    
    public function obtenerBoletosPorEstado($estado) {
        return array_filter($this->boletos, function($boleto) use ($estado) {
            return $boleto->getEstado() === $estado;
        });
    }
    
    public function obtenerBoletosPorId($ids) {
        return array_filter($this->boletos, function($boleto) use ($ids) {
            return in_array($boleto->getId(), $ids);
        });
    }
    
    public function disponibilidadAsientos() {
        $mapa = [];
        foreach ($this->boletos as $boleto) {
            $mapa[$boleto->getFila()][$boleto->getNumero()] = $boleto->getEstado();
        }
        return $mapa;
    }
    
    // Setter para asignar boletos desde la base de datos
    public function setBoletos($boletos) {
        $this->boletos = $boletos;
    }
}