/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.service.impl;

import com.rjconsultores.ventaboletos.dao.CortesiaDAO;
import com.rjconsultores.ventaboletos.dao.EmpleadoDAO;
import com.rjconsultores.ventaboletos.entidad.Cortesia;
import com.rjconsultores.ventaboletos.entidad.CortesiaBeneficiario;
import com.rjconsultores.ventaboletos.entidad.Empleado;
import com.rjconsultores.ventaboletos.service.CortesiaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import java.util.Calendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author Shiro
 */
@Service("cortesiaService")
public class CortesiaServiceImpl implements CortesiaService {

    public static final String PENDIENTE = "P";
    @Autowired
    private CortesiaDAO cortesiaDAO;
    @Autowired
    private EmpleadoDAO empleadoDAO;

    public List<Cortesia> obtenerTodos() {
        return cortesiaDAO.obtenerTodos();
    }

    public Cortesia obtenerID(Integer id) {
        return cortesiaDAO.obtenerID(id);
    }

    @Transactional
    public Cortesia suscribir(Cortesia entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        return cortesiaDAO.suscribir(entidad);
    }

    @Transactional
    public Cortesia actualizacion(Cortesia entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        return cortesiaDAO.actualizacion(entidad);
    }

    @Transactional
    public void borrar(Cortesia entidad) {

        entidad = this.obtenerID(entidad.getCortesiaId());

        for (CortesiaBeneficiario cb : entidad.getCortesiaBeneficiarioList()) {
            cb.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            cb.setFecmodif(Calendar.getInstance().getTime());
            cb.setActivo(Boolean.FALSE);
        }

        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.FALSE);

        cortesiaDAO.actualizacion(entidad);
    }

    public List<Cortesia> pesquisar(String empleadoClave) {
        List<Empleado> empleados = empleadoDAO.obtenerTodos();
        Empleado eSlec = null;
        for (Empleado emp : empleados) {
            if (emp.getCveEmpleado().equals(empleadoClave)) {
                eSlec = emp;
            }
        }

        return cortesiaDAO.pesquisar(eSlec);
    }

    public Cortesia buscar(Integer cortesiaId) {
        List<Cortesia> cortesias = cortesiaDAO.obtenerTodos();
        Cortesia corSelec = null;
        for (Cortesia c : cortesias) {
            if (c.getCortesiaId().equals(cortesiaId)) {
                corSelec = c;
            }
        }

        return cortesiaDAO.buscar(corSelec);
    }

    public List<Cortesia> buscarDplicidad(Cortesia cortesia) {
        return cortesiaDAO.buscarDplicidad(cortesia);
    }

    public boolean cortesiaUtilizada(Cortesia cortesia) {
        if ((cortesia == null) || (cortesia.getNdstatus() == null)) {
            throw new IllegalArgumentException("Deve de infromar los datos de la cortesia");
        }
        if (!cortesia.getNdstatus().equals(PENDIENTE)) {
            return true;
        }
        return false;
    }
}
