/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.rjconsultores.ventaboletos.service.impl; 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; import com.rjconsultores.ventaboletos.dao.PrecioVentajaDAO; import com.rjconsultores.ventaboletos.entidad.PrecioVentaja; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.PrecioVentajaService; import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; /** * * @author Igor */ @Service("precioVentajaService") public class PrecioVentajaServiceImpl implements PrecioVentajaService { @Autowired private PrecioVentajaDAO precioVentajaDAO; @Autowired private RutaService rutaService; public List obtenerTodos() { return null; } public PrecioVentaja obtenerID(Integer id) { return null; } @Transactional public PrecioVentaja suscribirActualizacion(PrecioVentaja entidad) throws BusinessException { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); if(!verificarPreenhimentoLinhaOriginal(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.linha.original"); } if(!verificarPreenchimentoOrigemDestinoOriginais(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.origem.destino.originais"); } if(!verificarPreenhimentoLinhaASerCopiada(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.linhaASerCopiada"); } if(!verificarPreenchimentoOrigemDestinoASeremCopiados(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.origem.destinoASeremCopiados"); } if(!verificarPreenchimentoDataInicioFim(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.data.InicioFim"); } if(!verificarRutaOrigemDestinoOriginal(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.destinoOuOrigemNaoExistemOriginal"); } if(!verificarRutaOrigemDestinoASerCopiado(entidad)){ throw new BusinessException("editarPrecioVentajaController.MSG.destinoOuOrigemNaoExistemDestino"); } Boolean precioVentajaDuplicado = validarDuplicidade(entidad); if (precioVentajaDuplicado) { throw new BusinessException("editarPrecioVentajaController.MSG.data.existeIgual", new Object[] { entidad.getOrigenOriginalId().getDescparada(), entidad.getDestinoOriginalId().getDescparada(), entidad.getRutaOriginalId().getDescruta() }); } if (entidad.getPrecioVentajaId() == null) { return precioVentajaDAO.suscribir(entidad); } else { return precioVentajaDAO.actualizacion(entidad); } } private Boolean validarDuplicidade(PrecioVentaja entidad) { List lsPrecioVentaja = precioVentajaDAO.buscarPrecioVentaja(entidad.getOrigenOriginalId().getParadaId(), entidad.getDestinoOriginalId().getParadaId(), entidad.getRutaOriginalId().getRutaId(), entidad.getCorridaId() ); Boolean precioVentajaDuplicado = false; if (!lsPrecioVentaja.isEmpty()) { if (entidad.getPrecioVentajaId() == null){ precioVentajaDuplicado = Boolean.TRUE; }else{ for (PrecioVentaja est : lsPrecioVentaja) { if (!est.getPrecioVentajaId().equals(entidad.getPrecioVentajaId())) { precioVentajaDuplicado = Boolean.TRUE; break; } } } } return precioVentajaDuplicado; } private Boolean verificarPreenchimentoDataInicioFim(PrecioVentaja entidad){ if(entidad.getFechaInicio() == null || entidad.getFechaFinal() == null){ return false; } return true; } private Boolean verificarPreenchimentoOrigemDestinoASeremCopiados(PrecioVentaja entidad){ if(entidad.getOrigenPrecioId() == null || entidad.getDestinoPrecioId() == null){ return false; } return true; } private Boolean verificarPreenhimentoLinhaASerCopiada(PrecioVentaja entidad) { if(entidad.getRutaPrecioId() == null){ return false; } return true; } private Boolean verificarPreenchimentoOrigemDestinoOriginais(PrecioVentaja entidad){ if(entidad.getOrigenOriginalId() == null || entidad.getDestinoOriginalId() == null){ return false; } return true; } private Boolean verificarPreenhimentoLinhaOriginal(PrecioVentaja entidad) { if(entidad.getRutaOriginalId() == null){ return false; } return true; } private Boolean verificarRutaOrigemDestinoOriginal(PrecioVentaja entidad) { Boolean existeOrigemOriginal = rutaService.paradaExisteEnLaRuta(entidad.getOrigenOriginalId(), entidad.getRutaOriginalId()); Boolean exiteDestinoOriginal = rutaService.paradaExisteEnLaRuta(entidad.getDestinoOriginalId(), entidad.getRutaOriginalId()); return existeOrigemOriginal && exiteDestinoOriginal; } private Boolean verificarRutaOrigemDestinoASerCopiado(PrecioVentaja entidad) { Boolean exiteOrigemASerCopiado = rutaService.paradaExisteEnLaRuta(entidad.getOrigenPrecioId(), entidad.getRutaPrecioId()); Boolean exiteDestinoASerCopiado = rutaService.paradaExisteEnLaRuta(entidad.getDestinoPrecioId(), entidad.getRutaPrecioId()); return exiteOrigemASerCopiado && exiteDestinoASerCopiado; } @Transactional public void borrar(PrecioVentaja entidad) { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.FALSE); precioVentajaDAO.actualizacion(entidad); } }