/*
 * 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.contabilidad.FacadeConta;

import com.contabilidad.EntConta.HorasDeTrabajoTemporal;
import com.contabilidad.EntConta.SalariosEventuale;
import com.contabilidad.EntConta.VCalculohorassumas;

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

/**
 *
 * @author obper
 */
@Stateless
public class HorasDeTrabajoTemporalFacade extends AbstractFacade<HorasDeTrabajoTemporal> implements HorasDeTrabajoTemporalFacadeLocal {

    @PersistenceContext(unitName = "contabilidad")
    private EntityManager em;

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

    public HorasDeTrabajoTemporalFacade() {
        super(HorasDeTrabajoTemporal.class);
    }

    @Override
    public List<HorasDeTrabajoTemporal> obtnerHoras(String codigoEmpleado) {
        List<HorasDeTrabajoTemporal> rs = new ArrayList<>();
        rs = (List<HorasDeTrabajoTemporal>) em.createNativeQuery("{CALL obtener_horas(?)}",
                HorasDeTrabajoTemporal.class)
                .setParameter(1, codigoEmpleado).getResultList();

        return rs;
    }

    @Override
    public void ingresarHora(String codigoEmpleado, Date fechaIni, Date fechaFin, boolean corrido) {

        em.createNativeQuery("{call ingresar_hora_eventual(?,?,?,?)}")
                .setParameter(1, codigoEmpleado)
                .setParameter(2, fechaIni)
                .setParameter(3, fechaFin)
                .setParameter(4, corrido).executeUpdate();
    }

    @Override
    public List<VCalculohorassumas> obtnerHorasCal(String codigoEmpleado, Date fecha) {
        List<VCalculohorassumas> rs = new ArrayList<>();
        rs = (List<VCalculohorassumas>) em.createNativeQuery("{CALL calculo_horas_sumas_p(?,?)}",
                VCalculohorassumas.class)
                .setParameter(1, codigoEmpleado)
                .setParameter(2, fecha).getResultList();

        return rs;
    }

    @Override
    public List<VCalculohorassumas> obtnerHorasCalEx(String codigoEmpleado) {
        List<VCalculohorassumas> rs = new ArrayList<>();

        Query q = em.createNativeQuery("CALL calculo_horas_extra_sumas(?,?,?)", VCalculohorassumas.class);
        q.setParameter(1, codigoEmpleado);
        q.setParameter(2, "2023-05-01");
        q.setParameter(3, "2023-05-15");

        rs.addAll(q.getResultList());
        return rs;
    }



    @Override
    public List<HorasDeTrabajoTemporal>  obtnerHorasIdPag(String codiPag) {
        List<HorasDeTrabajoTemporal> rs = new ArrayList<>();
        rs = (List<HorasDeTrabajoTemporal>) em.createNativeQuery("{CALL obtener_horas_id_pago(?)}",
                HorasDeTrabajoTemporal.class)
                .setParameter(1, codiPag).getResultList();

        return rs;
    }

    @Override
    public void borrarHora(String codigoEmpleado) {

        em.createNativeQuery("{call borrar_hora(?)}")
                .setParameter(1, codigoEmpleado).executeUpdate();
    }

    @Override
    public SalariosEventuale busq(){
        SalariosEventuale rs = new SalariosEventuale();

        Query q = em.createNativeQuery("SELECT  * from salarios_eventuales", SalariosEventuale.class);
        rs = (SalariosEventuale) q.getResultList().get(0);

        return rs;
    }


}
