diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ConfRestricaoCanalVentaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ConfRestricaoCanalVentaServiceImpl.java index 07f12a2f9..e69b0bac2 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ConfRestricaoCanalVentaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ConfRestricaoCanalVentaServiceImpl.java @@ -1,5 +1,6 @@ package com.rjconsultores.ventaboletos.service.impl; +import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -18,6 +19,8 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; public class ConfRestricaoCanalVentaServiceImpl implements ConfRestricaoCanalVentaService { @Autowired private ConfRestricaoCanalVentaDAO confRestricaoCanalVentaDAO; + + private List lsConfRestricaoCanalVenta; public List obtenerTodos() { return confRestricaoCanalVentaDAO.obtenerTodos(); @@ -48,6 +51,12 @@ public class ConfRestricaoCanalVentaServiceImpl implements ConfRestricaoCanalVen throw new BusinessException("confRestricaoCanalVentaService.MSG.oriDestObliga"); } + lsConfRestricaoCanalVenta = obtenerTodos(); + + if(isBloqueoExistente(entidad, lsConfRestricaoCanalVenta)){ + throw new BusinessException("editarConfRestricaoCanalVentaController.MSG.bloqueoExistente"); + } + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); @@ -66,5 +75,165 @@ public class ConfRestricaoCanalVentaServiceImpl implements ConfRestricaoCanalVen confRestricaoCanalVentaDAO.actualizacion(entidad); } + + private boolean isBloqueoExistente(ConfRestricaoCanalVenta c , List confRestricaoCanalVentaList){ + + List ls = new ArrayList() ; + + for (int i = 0; i < confRestricaoCanalVentaList.size(); i++){ + ConfRestricaoCanalVenta elementList = (ConfRestricaoCanalVenta)confRestricaoCanalVentaList.get(i); + if(c.getConfRestricaoCanalVentaId() == null){ + if(isConfRestricaoCanalVentasEquivalentes(c , elementList)){ + return true; + } + }else{ + if(!c.getConfRestricaoCanalVentaId().equals(elementList.getConfRestricaoCanalVentaId())){ + isConfRestricaoCanalVentasEquivalentes(c , elementList); + }else{ + continue; + } + } + } + return false; + } + + private boolean isConfRestricaoCanalVentasEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(isRutasTipoPvCorridaIdOrigemDestinoEquivalentes(a,b) + && (((a.getFecCorrida() != null) != (b.getFecCorrida() != null)) ? false : true) + && ((a.getFecCorrida() != null ) && (b.getFecCorrida() != null) ? true : false ) + && ((((a.getFecCorrida().compareTo(b.getFecCorrida())) == 0)) ? true : false ) + && isIntercessaoDiasSemana(a,b) + ){ + return true; + }else if(isRutasTipoPvCorridaIdOrigemDestinoEquivalentes(a,b) + && (a.getFecCorrida() == null) == (b.getFecCorrida() == null) == (true) + && isIntercessaoDiasSemana(a,b) + ){ + return true; + } + return false; + } + + private boolean isRutasTipoPvCorridaIdOrigemDestinoEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(isRutasEquivalentes(a,b) + && isTipoPVEquivalentes(a,b) + && isCorridaIdEquivalentes(a,b) + && isOrigemEquivalentes(a,b) + && isDestinoEquivalentes(a,b)){ + return true; + }else{ + return false; + } + } + + private boolean isRutasEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(a.getRuta() == null && b.getRuta() == null ){ + return true; + } + if(a.getRuta() == null && b.getRuta() != null ){ + return false; + } + if(a.getRuta() != null && b.getRuta() == null ){ + return false; + } + if(a.getRuta() != null && b.getRuta() != null ){ + return a.getRuta().equals(b.getRuta()); + } + return false; + } + + private boolean isTipoPVEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(a.getTipoPuntoVenta() == null && b.getTipoPuntoVenta() == null ){ + return true; + } + if(a.getTipoPuntoVenta() == null && b.getTipoPuntoVenta() != null ){ + return false; + } + if(a.getTipoPuntoVenta() != null && b.getTipoPuntoVenta() == null ){ + return false; + } + if(a.getTipoPuntoVenta() != null && b.getTipoPuntoVenta() != null ){ + return a.getTipoPuntoVenta().equals(b.getTipoPuntoVenta()); + } + return false; + } + + private boolean isCorridaIdEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(a.getCorridaId() == null && b.getCorridaId() == null ){ + return true; + } + if(a.getCorridaId() == null && b.getCorridaId() != null ){ + return false; + } + if(a.getCorridaId() != null && b.getCorridaId() == null ){ + return false; + } + if(a.getCorridaId() != null && b.getCorridaId() != null ){ + return a.getCorridaId().equals(b.getCorridaId()); + } + return false; + } + + private boolean isOrigemEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(a.getOrigem() == null && b.getOrigem() == null ){ + return true; + } + if(a.getOrigem() == null && b.getOrigem() != null ){ + return false; + } + if(a.getOrigem() != null && b.getOrigem() == null ){ + return false; + } + if(a.getOrigem() != null && b.getOrigem() != null ){ + return a.getOrigem().equals(b.getOrigem()); + } + return false; + } + + private boolean isDestinoEquivalentes(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if(a.getDestino() == null && b.getDestino() == null ){ + return true; + } + if(a.getDestino() == null && b.getDestino() != null ){ + return false; + } + if(a.getDestino() != null && b.getDestino() == null ){ + return false; + } + if(a.getDestino() != null && b.getDestino() != null ){ + return a.getDestino().equals(b.getDestino()); + } + return false; + } + + private boolean isIntercessaoDiasSemana(ConfRestricaoCanalVenta a , ConfRestricaoCanalVenta b){ + if( ((a.getDomingo() != null ? a.getDomingo() : false) && (b.getDomingo() != null ? b.getDomingo() : false )) + || (a.getSegunda()!= null ? a.getSegunda() : false) && (b.getSegunda() != null ? b.getSegunda() : false) + || (a.getTerca() != null ? a.getTerca() : false ) && (b.getTerca() != null ? b.getTerca() : false) + || (a.getQuarta()!= null ? a.getQuarta() : false ) && (b.getQuarta() != null ? b.getQuarta() : false) + || (a.getQuinta() != null ? a.getQuinta() : false) && (b.getQuinta() != null ? b.getQuinta() : false) + || (a.getSexta() != null ? a.getSexta() : false) && (b.getSexta() != null ? b.getSexta() : false ) + || (a.getSabado() != null ? a.getSabado() : false ) && (b.getSabado() != null ? b.getSabado() : false) ){ + return true; + } + if(null == a.getSegunda() + && null == b.getSegunda() + && null == a.getTerca() + && null == b.getTerca() + && null == a.getQuarta() + && null == b.getQuarta() + && null == a.getQuinta() + && null == b.getQuinta() + && null == a.getSexta() + && null == b.getSexta() + && null == a.getSabado() + && null == b.getSabado() + && null == a.getDomingo() + && null == b.getDomingo()){ + return true; + } + + return false; + } }