/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.rjconsultores.ventaboletos.service.impl; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; 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.PricingEspecificoDAO; import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoAgencia; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCategoria; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion; import com.rjconsultores.ventaboletos.service.PricingEspecificoService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; /** * * @author Rafius */ @Service("pricingEspecificoService") public class PricingEspecificoServiceImpl implements PricingEspecificoService { @Autowired private PricingEspecificoDAO pricingEspecificoDAO; public List obtenerTodos() { return pricingEspecificoDAO.obtenerTodos(); } public PricingEspecifico obtenerID(Long id) { return pricingEspecificoDAO.obtenerID(id); } @Transactional public PricingEspecifico suscribir(PricingEspecifico entidad) { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); return pricingEspecificoDAO.suscribir(entidad); } @Transactional public PricingEspecifico actualizacion(PricingEspecifico entidad) { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); return pricingEspecificoDAO.actualizacion(entidad); } @Transactional public void borrar(PricingEspecifico entidad) { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.FALSE); pricingEspecificoDAO.actualizacion(entidad); } public List buscarPorNome(PricingEspecifico pricingEspecifico) { return pricingEspecificoDAO.buscarPorNome(pricingEspecifico); } @Override public List buscarPorNome(String nome) { // TODO Auto-generated method stub return null; } @Override @Transactional public PricingEspecifico clonarPricing(Long id, String nome) { PricingEspecifico pricingToClone = obtenerID(id); PricingEspecifico clonePricing = new PricingEspecifico(); clonePricing.setNombPricing(nome); clonePricing.setClaseServicio(pricingToClone.getClaseServicio()); clonePricing.setCorridaId(pricingToClone.getCorridaId()); clonePricing.setFechorfin(pricingToClone.getFechorfin()); clonePricing.setFechorinicio(pricingToClone.getFechorinicio()); clonePricing.setMarca(pricingToClone.getMarca()); clonePricing.setMoneda(pricingToClone.getMoneda()); clonePricing.setParada(pricingToClone.getParada()); clonePricing.setParada1(pricingToClone.getParada1()); clonePricing.setPricingEspecificoOcupacionsList(getPricingEspecificoOcupacion(pricingToClone, clonePricing)); clonePricing.setTarifa(pricingToClone.getTarifa()); clonePricing.setTarifaredabierto(pricingToClone.getTarifaredabierto()); clonePricing.setPricingEspecificoAgenciasList(getPricingEspecificoAgenciasList(pricingToClone, clonePricing)); clonePricing.setPricingEspecificoCanalVendasList(getPricingEspecificoCanalVendasList(pricingToClone, clonePricing)); clonePricing.setPricingEspecificoCategoriaList(getPricingEspecificoCategoriaList(pricingToClone, clonePricing)); return suscribir(clonePricing); } private List getPricingEspecificoAgenciasList(PricingEspecifico pricingToClone, PricingEspecifico clonePricing) { List toReturn = new ArrayList(); for (PricingEspecificoAgencia a : pricingToClone.getPricingEspecificoAgenciasList()) { if (a.getActivo()) { PricingEspecificoAgencia newPricingAgencia = new PricingEspecificoAgencia(); newPricingAgencia.setActivo(true); newPricingAgencia.setFecmodif(new Date()); newPricingAgencia.setPricingEspecifico(clonePricing); newPricingAgencia.setPuntoVenta(a.getPuntoVenta()); newPricingAgencia.setUsuarioId(clonePricing.getUsuarioId()); toReturn.add(newPricingAgencia); } } return toReturn; } private List getPricingEspecificoCanalVendasList(PricingEspecifico pricingToClone, PricingEspecifico clonePricing) { List toReturn = new ArrayList(); for (PricingEspecificoCanalVendas c : pricingToClone.getPricingEspecificoCanalVendasList()) { if (c.getActivo()) { PricingEspecificoCanalVendas newCanalVendas = new PricingEspecificoCanalVendas(); newCanalVendas.setActivo(true); newCanalVendas.setFecmodif(new Date()); newCanalVendas.setPricingEspecifico(clonePricing); newCanalVendas.setTipoPtovta(c.getTipoPtovta()); newCanalVendas.setUsuarioId(clonePricing.getUsuarioId()); toReturn.add(newCanalVendas); } } return toReturn; } private List getPricingEspecificoCategoriaList(PricingEspecifico pricingToClone, PricingEspecifico clonePricing) { List toReturn = new ArrayList(); for (PricingEspecificoCategoria c : pricingToClone.getPricingEspecificoCategoriaList()) { if (c.getActivo()) { PricingEspecificoCategoria newCategoria = new PricingEspecificoCategoria(); newCategoria.setActivo(true); newCategoria.setFecmodif(new Date()); newCategoria.setPricingEspecifico(clonePricing); newCategoria.setCategoria(c.getCategoria()); newCategoria.setUsuarioId(clonePricing.getUsuarioId()); toReturn.add(newCategoria); } } return toReturn; } private List getPricingEspecificoOcupacion(PricingEspecifico pricingToClone, PricingEspecifico clonePricing){ List list = new ArrayList(); for(PricingEspecificoOcupacion peo : pricingToClone.getPricingEspecificoOcupacionsList()){ PricingEspecificoOcupacion newPeo = new PricingEspecificoOcupacion( peo.getOcupacioninicial(), peo.getOcupacionfinal(), peo.getTarifa(), peo.getActivo(), new Date(), UsuarioLogado.getUsuarioLogado().getUsuarioId(), peo.getDescuento(), clonePricing); list.add(newPeo); } return list; } @Override public List buscar(List empresas, List tipoClasses, List origens, List destinos, Date vigenciaInicial, Date vigenciaFinal) { return pricingEspecificoDAO.buscar(empresas, tipoClasses, origens, destinos, vigenciaInicial, vigenciaFinal); } }