<?php

namespace App\Models;

use CodeIgniter\Model;

/**
 * Días de la semana en que aplica una promoción (ej. MARTES para "2x1 Martes").
 * Si una promoción no tiene filas aquí, se interpreta como "todos los días".
 */
class PromocionDiaModel extends Model
{
    protected $table            = 'promocion_dia';
    protected $primaryKey       = 'id';
    protected $useAutoIncrement = true;
    protected $returnType       = 'array';
    protected $useSoftDeletes   = false;
    protected $protectFields    = true;
    protected $allowedFields    = [
        'id_promocion',
        'dia',
    ];

    public const DIAS_VALIDOS = ['LUNES', 'MARTES', 'MIERCOLES', 'JUEVES', 'VIERNES', 'SABADO', 'DOMINGO'];

    /**
     * Devuelve los días (strings) configurados para una promoción.
     * Array vacío = sin restricción de día (aplica todos los días).
     */
    public function getDiasDePromocion(int $idPromocion): array
    {
        $rows = $this->where('id_promocion', $idPromocion)->findAll();
        return array_column($rows, 'dia');
    }

    /**
     * Nombre del día de hoy en el mismo formato que la columna `dia` (enum en mayúsculas sin tildes).
     */
    public static function diaDeHoy(): string
    {
        $map = [
            1 => 'LUNES',
            2 => 'MARTES',
            3 => 'MIERCOLES',
            4 => 'JUEVES',
            5 => 'VIERNES',
            6 => 'SABADO',
            7 => 'DOMINGO',
        ];

        return $map[(int) date('N')];
    }
}
