From 010293e6fad1a84743d073eddbbe6b377a85edd0 Mon Sep 17 00:00:00 2001 From: gleimar Date: Wed, 20 Nov 2013 17:34:55 +0000 Subject: [PATCH] =?UTF-8?q?-=20ajuste:=20valida=C3=A7=C3=A3o=20de=20trasla?= =?UTF-8?q?pa=20no=20pricing=20ocupa=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@32129 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/PricingOcupaAntecipaDAO.java | 4 +- .../PricingOcupaAntecipaHibernateDAO.java | 5 +- .../service/PricingOcupaAntecipaService.java | 12 +-- .../impl/PricingOcupaAntecipaServiceImpl.java | 73 +++++++++++++++---- .../ventaboletos/utilerias/TraslaparUtil.java | 13 +--- 5 files changed, 75 insertions(+), 32 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/PricingOcupaAntecipaDAO.java b/src/com/rjconsultores/ventaboletos/dao/PricingOcupaAntecipaDAO.java index fc3398eff..5da8a37c4 100644 --- a/src/com/rjconsultores/ventaboletos/dao/PricingOcupaAntecipaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/PricingOcupaAntecipaDAO.java @@ -6,7 +6,6 @@ package com.rjconsultores.ventaboletos.dao; import java.util.List; -import com.rjconsultores.ventaboletos.entidad.Pricing; import com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa; /** @@ -15,5 +14,6 @@ import com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa; */ public interface PricingOcupaAntecipaDAO extends GenericDAO { - public List podeSalvar(Pricing pricing); + + public List buscarOcupaAntecipaPricing(Integer pricingId); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingOcupaAntecipaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingOcupaAntecipaHibernateDAO.java index d7143ee0a..56f0c3092 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingOcupaAntecipaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingOcupaAntecipaHibernateDAO.java @@ -38,10 +38,11 @@ public class PricingOcupaAntecipaHibernateDAO extends GenericHibernateDAO podeSalvar(Pricing pricing) { + public List buscarOcupaAntecipaPricing(Integer pricingId) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Pricing.ATIVO)); - c.add(Restrictions.eq("pricing", pricing)); + c.add(Restrictions.eq("pricing.pricingId", pricingId)); + return c.list(); } } diff --git a/src/com/rjconsultores/ventaboletos/service/PricingOcupaAntecipaService.java b/src/com/rjconsultores/ventaboletos/service/PricingOcupaAntecipaService.java index 17d4496a1..1c2b7fb09 100644 --- a/src/com/rjconsultores/ventaboletos/service/PricingOcupaAntecipaService.java +++ b/src/com/rjconsultores/ventaboletos/service/PricingOcupaAntecipaService.java @@ -1,11 +1,13 @@ package com.rjconsultores.ventaboletos.service; -import java.util.List; - -import com.rjconsultores.ventaboletos.entidad.Pricing; import com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa; +import com.rjconsultores.ventaboletos.exception.BusinessException; -public interface PricingOcupaAntecipaService extends GenericService { +public interface PricingOcupaAntecipaService { - public List obtenerPorPricing(Pricing pricing); + public PricingOcupaAntecipa suscribir(PricingOcupaAntecipa entidad) throws BusinessException; + + public PricingOcupaAntecipa actualizacion(PricingOcupaAntecipa entidad) throws BusinessException; + + public void borrar(PricingOcupaAntecipa entidad); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/PricingOcupaAntecipaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/PricingOcupaAntecipaServiceImpl.java index 609a3c25b..4045dbafe 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/PricingOcupaAntecipaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/PricingOcupaAntecipaServiceImpl.java @@ -3,6 +3,9 @@ package com.rjconsultores.ventaboletos.service.impl; import java.util.Calendar; import java.util.List; +import org.jfree.util.Log; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -10,25 +13,24 @@ import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.PricingOcupaAntecipaDAO; import com.rjconsultores.ventaboletos.entidad.Pricing; import com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa; +import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.PricingOcupaAntecipaService; +import com.rjconsultores.ventaboletos.utilerias.TraslaparUtil; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @Service("pricingOcupacionService") public class PricingOcupaAntecipaServiceImpl implements PricingOcupaAntecipaService { + private static final Logger log = LoggerFactory.getLogger(PricingOcupaAntecipaServiceImpl.class); + @Autowired private PricingOcupaAntecipaDAO pricingOcupacionDAO; - public List obtenerTodos() { - return pricingOcupacionDAO.obtenerTodos(); - } - - public PricingOcupaAntecipa obtenerID(Integer id) { - return pricingOcupacionDAO.obtenerID(id); - } - @Transactional - public PricingOcupaAntecipa suscribir(PricingOcupaAntecipa entidad) { + public PricingOcupaAntecipa suscribir(PricingOcupaAntecipa entidad) throws BusinessException { + if (traslapa(entidad)) { + throw new BusinessException("PricingOcupaAntecipaServiceImpl.msg.traslapa"); + } entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Pricing.ATIVO); @@ -36,8 +38,11 @@ public class PricingOcupaAntecipaServiceImpl implements PricingOcupaAntecipaServ return pricingOcupacionDAO.suscribir(entidad); } - @Transactional - public PricingOcupaAntecipa actualizacion(PricingOcupaAntecipa entidad) { + @Transactional(rollbackFor = BusinessException.class) + public PricingOcupaAntecipa actualizacion(PricingOcupaAntecipa entidad) throws BusinessException { + if (traslapa(entidad)) { + throw new BusinessException("PricingOcupaAntecipaServiceImpl.msg.traslapa"); + } entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Pricing.ATIVO); @@ -54,8 +59,48 @@ public class PricingOcupaAntecipaServiceImpl implements PricingOcupaAntecipaServ pricingOcupacionDAO.actualizacion(entidad); } - @Override - public List obtenerPorPricing(Pricing pricing) { - return pricingOcupacionDAO.podeSalvar(pricing); + private boolean traslapa(PricingOcupaAntecipa pricingOcupaAntecipa) { + boolean traslapa = false; + List lsSalvos = pricingOcupacionDAO.buscarOcupaAntecipaPricing(pricingOcupaAntecipa.getPricing().getPricingId()); + + // removo o pricing que eu estou validando + lsSalvos.remove(pricingOcupaAntecipa); + + Integer cantasientosmin = pricingOcupaAntecipa.getCantasientosmin(); + Integer cantasientosmax = pricingOcupaAntecipa.getCantasientosmax(); + + boolean validaCantAsientos = ((cantasientosmin != null) && (cantasientosmax != null)); + + Integer cantdiasmin = pricingOcupaAntecipa.getCantdiasmin(); + Integer cantdiasmax = pricingOcupaAntecipa.getCantdiasmax(); + + boolean validaCantDias = ((cantdiasmin != null) && (cantdiasmax != null)); + + for (PricingOcupaAntecipa poa : lsSalvos) { + + boolean traslapaCantAsiento = false; + if (validaCantAsientos) { + if ((poa.getCantasientosmin() != null) && (poa.getCantasientosmax() != null)) { + traslapaCantAsiento = TraslaparUtil.intersectNum(poa.getCantasientosmin(), poa.getCantasientosmax(), cantasientosmin, cantasientosmax); + } + } + + boolean traslapaCantDias = false; + if (validaCantDias) { + if ((poa.getCantdiasmin() != null) && (poa.getCantdiasmax() != null)) { + traslapaCantDias = TraslaparUtil.intersectNum(poa.getCantdiasmin(), poa.getCantdiasmax(), cantdiasmin, cantdiasmax); + } + } + + if (traslapaCantAsiento || traslapaCantDias) { + log.info("registro que traslapa PricingOcupaAntecipa id =" + poa.getPricingocupaantecipaId()); + + traslapa = true; + + break; + } + } + + return traslapa; } } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/TraslaparUtil.java b/src/com/rjconsultores/ventaboletos/utilerias/TraslaparUtil.java index ac81c5e1b..ef707d28a 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/TraslaparUtil.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/TraslaparUtil.java @@ -54,14 +54,9 @@ public class TraslaparUtil { return false; } public static boolean intersectNum(BigDecimal numStart, BigDecimal numEnd, BigDecimal numStartCompare, BigDecimal numEndCompare) { - if (((numStart.compareTo(numStartCompare) >= 0) && (numEnd.compareTo(numEndCompare) <= 0)) - || ((numEnd.compareTo(numStartCompare) >= 0) && (numEnd.compareTo(numEndCompare) <= 0)) - || ((numStart.compareTo(numStartCompare) >= 0) && (numStart.compareTo(numEndCompare) <= 0)) - || ((numStart.compareTo(numStartCompare) <= 0) && (numEnd.compareTo(numEndCompare) >= 0))) { - - return true; - } - - return false; + return intersectNum(numStart.longValue(), numEnd.longValue(), numStartCompare.longValue(), numEndCompare.longValue()); + } + public static boolean intersectNum(Integer numStart, Integer numEnd, Integer numStartCompare, Integer numEndCompare) { + return intersectNum(numStart.longValue(), numEnd.longValue(), numStartCompare.longValue(), numEndCompare.longValue()); } }