/*
 * 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.CategoriaPeriodoDAO;
import com.rjconsultores.ventaboletos.entidad.CategoriaDescuento;
import com.rjconsultores.ventaboletos.entidad.CategoriaPeriodo;
import com.rjconsultores.ventaboletos.service.CategoriaPeriodoService;
import com.rjconsultores.ventaboletos.service.LogAuditoriaService;
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 Administrador
 */
@Service("categoriaPeriodoService")
public class CategoriaPeriodoServiceImpl implements CategoriaPeriodoService {

    @Autowired
    private CategoriaPeriodoDAO categoriaPeriodoDAO;
    @Autowired
	private LogAuditoriaService logAuditoriaService;

    public List<CategoriaPeriodo> obtenerTodos() {
        return categoriaPeriodoDAO.obtenerTodos();
    }

    public CategoriaPeriodo obtenerID(Integer id) {
        return categoriaPeriodoDAO.obtenerID(id);
    }

    @Transactional
    public CategoriaPeriodo suscribir(CategoriaPeriodo entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);
        
        entidad = categoriaPeriodoDAO.suscribir(entidad);	
		logAuditoriaService.auditar(null, entidad, entidad.getCategoriaDescuento().getCategoriaCtrl().getEmpresa() != null ? entidad.getCategoriaDescuento().getCategoriaCtrl().getEmpresa().getEmpresaId()  :  null);

        return entidad;
    }

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

        return categoriaPeriodoDAO.actualizacion(entidad);
    }

    @Transactional
    public void borrar(CategoriaPeriodo entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.FALSE);

        categoriaPeriodoDAO.actualizacion(entidad);
		logAuditoriaService.auditarExclusao(entidad,  entidad.getCategoriaDescuento().getCategoriaCtrl().getEmpresa() != null ? entidad.getCategoriaDescuento().getCategoriaCtrl().getEmpresa().getEmpresaId()  :  null);

    }

    public List<CategoriaPeriodo> buscarPeriodoIntervalo(CategoriaPeriodo cPeriodo) {
        return categoriaPeriodoDAO.buscarPeriodoIntervalo(cPeriodo);
    }

    public List<CategoriaPeriodo> obtenerPorCategoriaDescuento(CategoriaDescuento categoriaDescuento) {
        return categoriaPeriodoDAO.obtenerPorCategoriaDescuento(categoriaDescuento);
    }
}
