package com.titanic.ventapasajes.controller; import com.titanic.ventapasajes.modelo.*; import com.titanic.ventapasajes.security.Seguridad; import com.titanic.ventapasajes.service.RegistroClienteService; import com.titanic.ventapasajes.service.RegistroProgramacionService; import com.titanic.ventapasajes.service.RegistroVentaService; import com.titanic.ventapasajes.util.jpa.Transaccion; import javax.annotation.PostConstruct; import javax.faces.application.FacesMessage; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * Created by josediaz on 1/3/16. */ @Named @ViewScoped public class InformacionClientesBean implements Serializable { private static final long serialVersionUID = 1L; @Inject private RegistroVentaService ventaService; @Inject private RegistroProgramacionService programacionService; @Inject private RegistroClienteService clienteService; @Inject private HttpServletRequest request; @Inject private Seguridad seguridad; private Programacion programacion; private Venta venta; private List<Boleto> boletosReservados = new ArrayList<>(); private List<Boleto> boletosPagados = new ArrayList<>(); @PostConstruct public void init() { String programacionId = (String) request.getSession().getAttribute("programacionId"); programacion = programacionService.obtenerProgramacion(Long.valueOf(programacionId)); venta = ventaService.obtenerVenta(programacion); obtenerBoletosReservadosYPagados(); } private void obtenerBoletosReservadosYPagados() { for (FilaBoleto filaBoleto : venta.getFilasBoletos()) { for (Boleto boleto : filaBoleto.getBoletos()) { if (boleto.getEstadoBoleto() == EstadoAsiento.RESERVADO) { if (boleto.getUsuario().getIdeUsuario() == seguridad.getUsuarioLogeado().getUsuario().getIdeUsuario()) { Cliente cliente = new Cliente(); cliente.setEdad(0); cliente.setSexo(Sexo.FEMENINO); cliente.setTipoDocumento(TipoDocumento.DNI); cliente.setTipoPersona(TipoPersona.NATURAL); cliente.setDebePresentarCartaNotarial(false); boleto.setCliente(cliente); boletosReservados.add(boleto); } } if (boleto.getEstadoBoleto() == EstadoAsiento.PAGADO) { boletosPagados.add(boleto); } } } } public List<String> completeClientes(String query) { List<Cliente> todosLosClientes = clienteService.buscarTodos(); List<String> dnisFiltrados = new ArrayList<>(); for (Cliente cliente : todosLosClientes) { if (cliente.getNumeroDocumento().toLowerCase().startsWith(query)) { dnisFiltrados.add(cliente.getNumeroDocumento()); } } return dnisFiltrados; } public void setearCliente(Boleto boleto) { Cliente cliente = boleto.getCliente(); if (cliente != null) { Cliente clienteBD = clienteService.obtenerClientePorNumeroDocumento(cliente.getNumeroDocumento()); cliente.setNumeroDocumento(clienteBD.getNumeroDocumento()); cliente.setEdad(clienteBD.getEdad()); cliente.setSexo(clienteBD.getSexo()); cliente.setNombreCliente(clienteBD.getNombreCliente()); cliente.setIdeCliente(clienteBD.getIdeCliente()); cliente.setNumeroTelefono(clienteBD.getNumeroTelefono()); } } @Transaccion public void registrarVentaConCliente() { try { if (boletosReservados.size() > 0) { for (int i = 0; i < boletosReservados.size(); i++) { Cliente cliente = boletosReservados.get(i).getCliente(); cliente = clienteService.adicionarCliente(cliente); boletosReservados.get(i).setCliente(cliente); boletosReservados.get(i).setEstadoBoleto(EstadoAsiento.PAGADO); Calendar fechaVenta = Calendar.getInstance(); boletosReservados.get(i).setFechaVenta(fechaVenta.getTime()); //boletosReservados.get(i).setHoraSalida(programacion.getHoraSalida()); } this.venta = ventaService.registrarVenta(venta); this.boletosReservados = new ArrayList<>(); this.boletosPagados = new ArrayList<>(); obtenerBoletosReservadosYPagados(); //printSilentPDF(); FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Venta Satisfactoria", "Venta Satisfactoria"); FacesContext.getCurrentInstance().addMessage(null, message); } } catch (Exception ex) { ex.printStackTrace(); FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Venta de Boletos", "No se pudo vender los Boletos. Contactar a Sistemas."); FacesContext.getCurrentInstance().addMessage(null, message); } } public Sexo[] getSexo() { return Sexo.values(); } public Venta getVenta() { return venta; } public void setVenta(Venta venta) { this.venta = venta; } public Programacion getProgramacion() { return programacion; } public void setProgramacion(Programacion programacion) { this.programacion = programacion; } public List<Boleto> getBoletosReservados() { return boletosReservados; } public void setBoletosReservados(List<Boleto> boletosReservados) { this.boletosReservados = boletosReservados; } public List<Boleto> getBoletosPagados() { return boletosPagados; } public void setBoletosPagados(List<Boleto> boletosPagados) { this.boletosPagados = boletosPagados; } }