package com.imprimelibros.erp.presupuesto.marcapaginas;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.imprimelibros.erp.presupuesto.classes.PresupuestoMarcapaginas;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;

@Repository
public interface MarcapaginasRepository extends JpaRepository<Marcapaginas, Long> {

    @Query("""
            SELECT m
                FROM Marcapaginas m
                WHERE m.tamanio = :#{#p.tamanio}
                AND m.carasImpresion = :#{#p.carasImpresion}
                AND m.papel = :#{#p.papel}
                AND m.gramaje = :#{#p.gramaje}
                AND m.acabado = :#{#p.acabado}
                AND m.unidades_min <= :#{#p.unidades}
                ORDER BY
                CASE
                    WHEN :#{#p.unidades} BETWEEN m.unidades_min AND m.unidades_max THEN 0
                    ELSE 1
                END,
                m.unidades_max DESC
            """)
    List<Marcapaginas> findPrecios(@Param("p") PresupuestoMarcapaginas p);
}
