/*
 * 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.Consultores;
import com.cosmodas.EntCosmos.proPremios;

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

/**
 * @author obper
 */
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class ConsultoresFacade extends AbstractFacade<Consultores> implements ConsultoresFacadeLocal {
    @PersistenceContext(unitName = "wcosmodasPersistent")
    private EntityManager em;

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

    public ConsultoresFacade() {
        super(Consultores.class);
    }

    @Override
    public int NumeroCatalogos(String consultorCodigo, String territorioCodigo) {
        StringBuilder sql = new StringBuilder("SELECT valida_catalogo(?,?)");
        Query query = em.createNativeQuery(sql.toString());
        query.setParameter(1, consultorCodigo);
        query.setParameter(2, territorioCodigo);
        List<Integer> result = query.getResultList();
        return result.get(0);
    }

    @Override
    public int ObtenerDiasPago(String consultorCodigo, String fechaIni, String fechaFin) {
        StringBuilder sql = new StringBuilder("SELECT obtener_dias_pago(?,?,?)");
        Query query = em.createNativeQuery(sql.toString());
        query.setParameter(1, consultorCodigo);
        query.setParameter(2, fechaIni);
        query.setParameter(3, fechaFin);
        List<Integer> result = query.getResultList();
        return result.get(0);
    }

    @Override
    public String ObtenerNombreCompleto(String consultorCodigo) {
        StringBuilder sql = new StringBuilder("SELECT obtener_nombrecompleto_consultor(?)");
        Query query = em.createNativeQuery(sql.toString());
        query.setParameter(1, consultorCodigo);
        List<String> result = query.getResultList();
        return result.get(0);
    }

    @Override
    public Double obtenerCargosConsultor(String consultorCodigo){
        StringBuilder sql = new StringBuilder("SELECT cargos_consultor(?)");
        Query q = em.createNativeQuery(sql.toString());
        q.setParameter(1, consultorCodigo);
        List<Double> rs = q.getResultList();
        return rs.get(0);


    }


    @Override
    public List<proPremios> findCallProPremios(String consultorCodigo, String programaCodigo, String fechaInicial, String fechaFinal) {

        List<proPremios> lsR = em.createNativeQuery("{CALL PRO_PREMIOS(?,?,?,?)}",
                proPremios.class)
                .setParameter(1, consultorCodigo)
                .setParameter(2, programaCodigo)
                .setParameter(3, fechaInicial)
                .setParameter(4, fechaFinal).getResultList();
        return lsR;
    }

    @Override
    public void guardarConsultorNiko(String nombre, String apellido){

        Query q = em.createNativeQuery("update consultores set consultor_nombre1 = ? , consultor_apellido1 = ? where consultor_codigo = 'M21085'");
        q.setParameter(1, nombre);
        q.setParameter(2, apellido);

        q.executeUpdate();


    }


}
