/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cosmodas.FacadeCosmos;

import com.cosmodas.EntCosmos.Productos;
import com.cosmodas.EntCosmos.VProductos;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 * @author obper
 */
@Stateless
public class ProductosFacade extends AbstractFacade<Productos> implements ProductosFacadeLocal {
    @PersistenceContext(unitName = "wcosmodasPersistent")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public ProductosFacade() {
        super(Productos.class);
    }

    @Override
    public Productos findProducto(String productoCodigo) {
        return em.find(Productos.class, productoCodigo);
    }

    @Override
    public Productos finfByCodigoBarra(String codigoBarra) {
        Query q = em.createNamedQuery("Productos.findByCodigoBarra");
        q.setParameter("codigoBarra", codigoBarra);
        Productos rs = new Productos();
        try {
            rs = (Productos) q.getResultList().get(0);
        } catch (Exception e) {
        }

        return rs;
    }

    @Override
    public List<Productos> porNombre(String ProductoNombre) {
        Query q = em.createNamedQuery("Productos.findByProductoNombreLike");
        q.setParameter("productoNombre", "%" + ProductoNombre + "%");
        List<Productos> rs = q.getResultList();
        try {
            System.err.println("primer parametro" + rs);
        } catch (Exception e) {
            rs = new ArrayList<>();
        }

        return rs;
    }

    @Override
    public Productos porCodigo(String productoCodigo) {
        Query q = em.createNamedQuery("Productos.findByProductoCodigo");
        q.setParameter("productoCodigo", productoCodigo);

        Productos rs = new Productos();
        try {
            rs = (Productos) q.getResultList().get(0);
        } catch (Exception e) {
        }

        return rs;
    }

    @Override
    public Productos busquedaPorNombre(String productoNombre) {
        Productos rs;
        Query q = em.createNamedQuery("Productos.findByProductoNombre");
        q.setParameter("productoNombre", productoNombre);
        if (q.getResultList().isEmpty()) {
            rs = null;
        } else {
            rs = (Productos) q.getResultList().get(0);
        }
        return rs;
    }


    @Override
    public List<VProductos> obtenerProductosv(){
        Query q =em.createNativeQuery("select * from vProductos", VProductos.class);

        return q.getResultList();
    }

}
