/*
 * 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.MotivoCancelacionDAO;
import com.rjconsultores.ventaboletos.entidad.MotivoCancelacion;
import com.rjconsultores.ventaboletos.service.MotivoCancelacionService;
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 Rafius
 */
@Service("motivoCancelacionService")
public class MotivoCancelacionServiceImpl implements MotivoCancelacionService {

	@Autowired
	private MotivoCancelacionDAO motivoCancelacionDAO;
	public static final Integer MAX_CONS_MOV_CANCEL = Integer.valueOf(35);

	public List<MotivoCancelacion> obtenerTodos() {
		return motivoCancelacionDAO.obtenerTodos();
	}

	public MotivoCancelacion obtenerID(Integer id) {
		return motivoCancelacionDAO.obtenerID(id);
	}

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

		return motivoCancelacionDAO.suscribir(entidad);
	}

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

		return motivoCancelacionDAO.actualizacion(entidad);
	}

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

		motivoCancelacionDAO.actualizacion(entidad);
	}

	public List<MotivoCancelacion> buscar(String descmotivo, String tipomotivo) {
		return motivoCancelacionDAO.buscar(descmotivo, tipomotivo);
	}

	public List<MotivoCancelacion> obtenerTodosTipoMotivoB() {
		return motivoCancelacionDAO.obtenerTodosTipoMotivoB();
	}

	public List<MotivoCancelacion> obtenerTodosEspecificos(Integer[] motivos) {
		return motivoCancelacionDAO.obtenerTodosEspecificos(motivos);
	}

	public boolean validaMotivoCancelacionConstante(MotivoCancelacion motivoCancelacion) {
		if (motivoCancelacion.getMotivocancelacionId() <= MAX_CONS_MOV_CANCEL)
			return false;
		else
			return true;
	}
	
	public MotivoCancelacion findByCveSistema(String cveSistema) {
		return motivoCancelacionDAO.findByCveSistema(cveSistema);
	}

}
