<?php

namespace App\Models;

use CodeIgniter\Model;

/**
 * Relación N:M entre promocion y producto: define qué productos
 * (y en qué cantidad) componen una promoción de tipo COMBO/PRODUCTO/GENERAL.
 */
class PromocionProductoModel extends Model
{
    protected $table            = 'promocion_producto';
    protected $primaryKey       = 'id_pp';
    protected $useAutoIncrement = true;
    protected $returnType       = 'array';
    protected $useSoftDeletes   = false;
    protected $protectFields    = true;
    protected $allowedFields    = [
        'id_promocion',
        'id_producto',
        'cantidad',
        'obligatorio',
    ];

    /**
     * Devuelve los productos de una promoción ya unidos con su info (nombre, precio, imagen, etc).
     */
    public function getProductosDePromocion(int $idPromocion): array
    {
        return $this->db->table('promocion_producto pp')
            ->select('pp.id_pp, pp.id_promocion, pp.id_producto, pp.cantidad, pp.obligatorio, p.nombre, p.descripcion, p.precio, p.categoria, p.imagen_url, p.disponible')
            ->join('producto p', 'p.id_producto = pp.id_producto')
            ->where('pp.id_promocion', $idPromocion)
            ->get()
            ->getResultArray();
    }
}
