public void inserirAtualizar(Pedido x) { if (x.getCodPedido() != null) { x = em.merge(x); } em.persist(x); }
public static void main(String[] args) throws ParseException { Scanner sc = new Scanner(System.in); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // variaveis e chamada da camada de serviço Cliente cliente = null; ClienteServico clienteServico = ServicoFactory.criarClienteServico(); Regiao regiao = null; Produto produto = null; ProdutoServico produtosServico = ServicoFactory.criarProdutoServico(); RegiaoServico regiaoServico = ServicoFactory.criarRegiaoServico(); Promocao promocao = null; PromocaoServico promocaoServico = ServicoFactory.criarPromocaoServico(); Endereco endereco = null; EnderecoServico enderecoServico = ServicoFactory.criarEnderecoServico(); Pedido pedido = null; PedidoServico pedidoServico = ServicoFactory.criarPedidoServico(); Atendente atendente = null; AtendenteServico atendenteServico = ServicoFactory.criarAtendenteServico(); Item item = null; ItemServico itemServico = ServicoFactory.criarItemServico(); int opcao = 0; // Opções do { opcao = Tela.menu(sc); switch (opcao) { case 1: // cadastrar cliente System.out.println("\nDigite o nome do cliente para cadastrar"); String nomec = sc.nextLine(); System.out.println("\nDigite o telefone para cadastrar"); String fonec = sc.nextLine(); if (nomec.equals("") || fonec.equals("")) { System.out.println("Nome ou telefone não inserido"); } else { // criar novo objeto cliente = new Cliente(null, nomec, fonec, null); try { clienteServico.inserirCliente(cliente); // se cliente for nulo é atualização, se não é inclusão. System.out.println( "\nCliente inserido ou atualizado com sucesso! Código: " + cliente.getCodCliente()); } catch (ServicoException e1) { System.out.println("\nErro ao inserir cliente: " + e1.getMessage()); } } break; case 2: // cadastrar região System.out.println("\nDigite o nome da região para cadastrar"); String nomereg = sc.nextLine(); System.out.println("\nDigite o valor de entrega para cadastrar"); String valorreg = sc.nextLine(); if (nomereg.equals("") || valorreg.equals("")) { System.out.println("Região ou valor não inserido"); } else { BigDecimal valorre = new BigDecimal(valorreg); regiao = new Regiao(null, nomereg, valorre); try { regiaoServico.inserirRegiao(regiao); System.out.println("\nRegiao inserida com sucesso! Código: " + regiao.getCodRegiao()); } catch (ServicoException e) { System.out.println("\nErro ao inserir região: " + e.getMessage()); } } break; case 3: // Cadastrar Produto System.out.println("\nDigite o nome do produto para cadastrar"); String nomep = sc.nextLine(); System.out.println("\nDigite o valor do produto para cadastrar"); String valorp = sc.nextLine(); if (nomep.equals("") || valorp.equals("")) { System.out.println("Produto ou valor não inserido"); } else { BigDecimal valorpr = new BigDecimal(valorp); produto = new Produto(null, nomep, valorpr); try { produtosServico.inserirProduto(produto); System.out.println( "\nProduto inserido com sucesso! Código: " + produto.getCodProduto()); } catch (ServicoException e) { System.out.println("\nErro ao inserir produto: " + e.getMessage()); } } break; case 4: // Cadastrar Promoção System.out.println("\nDigite o nome da promocao para cadastrar"); String nomepro = sc.nextLine(); System.out.println("\nDigite a data inicial da promoção no formato 'dd/MM/yyyy' "); String dtInicioPro = sc.nextLine(); System.out.println("\nDigite a data final da promoção no formato 'dd/MM/yyyy' "); String dtFimPro = sc.nextLine(); // REGRA PARA EVITAR TELEFONE OU NOME VAZIO if (nomepro.equals("") || dtInicioPro.equals("") || dtFimPro.equals("")) { System.out.println("Nome da promoção, data inicial ou data final não inserida"); } else { promocao = new Promocao(null, nomepro, sdf.parse(dtInicioPro), sdf.parse(dtFimPro)); try { promocaoServico.inserirPromocao(promocao); System.out.println( "Promoção cadastrada com sucesso! Código: " + promocao.getCodPromocao()); } catch (ServicoException e) { System.out.println("Erro ao inserir promoção: " + e.getMessage()); } } break; case 5: // cadastrar atendente List<Atendente> listAtendente = atendenteServico.buscarTodos(); System.out.println("Atendentes cadastrados"); for (Atendente x : listAtendente) { System.out.println(x); } System.out.println("\nDigite o nome do novo Atendente"); String nomea = sc.nextLine(); if (nomea.equals("")) { System.out.println("Nome do atendente não inserido"); } else { // criar novo objeto atendente = new Atendente(null, nomea); // vou salvar no banco aki try { // Vou tentar inserir aqui atendenteServico.inserirAtendente(atendente); System.out.println( "Atendente inserido com sucesso! Código: " + atendente.getCodAtendente()); } // Se o nome já existir no banco vou exibir a mensagem exception abaixo. catch (ServicoException e) { System.out.println("Erro ao inserir atendente: " + e.getMessage()); } } break; case 6: // Fazer pedido Date dataAtual = new Date(System.currentTimeMillis()); int codCli = 0; // Digita atendente System.out.println("\nDigite o codigo do atendente que irá fazer o pedido"); int coda = Integer.parseInt(sc.nextLine()); // Validar aqui buscar atendente try { atendente = atendenteServico.buscarAtendente(coda); // Dados do cliente System.out.println("\nDigite o telefone para pesquisar o cliente"); String fonecli = sc.nextLine(); // Buscar o cliente por telefone cliente = clienteServico.buscarCliTelefone(fonecli); // Se o telefone não foi encontrado. if (cliente == null) { System.out.println( "Cliente não encontrado, realize o cadastro do cliente para prosseguir"); break; } // verificar se existe pedido para este cliente // pedidoServico.buscarPedido(cliente.getCodCliente()); // Mostrar regiões para escolha System.out.println("\nEscolha a região abaixo pelo código"); List<Regiao> reg = regiaoServico.buscarTodos(); int tamReg = reg.size(); for (Regiao x : reg) { System.out.println(x.getCodRegiao() + ", " + x.getNomeRegiao() + ", " + x.getValor()); } int codreg = Integer.parseInt(sc.nextLine()); System.out.println(tamReg); while (codreg != 1 && codreg != tamReg) { System.out.println( "Opção inválida, escolha a opção pelo código de 1 a " + reg.size()); codreg = Integer.parseInt(sc.nextLine()); } // buscou o objeto regiao regiao = reg.get((codreg - 1)); System.out.println( "Se necessario digite alguma observação para o pedido, senão digite ENTER"); String obs = sc.nextLine(); // montou o objeto pedido pedido = new Pedido(null, dataAtual, obs, cliente, atendente, regiao); // Buscar do banco uma lista de produto List<Produto> listPro = produtosServico.buscarTodos(); int tamPro = listPro.size(); // implementar ma lista nova de produto List<Item> auxItem = new ArrayList<>(); // Buscar o cliente por telefone - até poderia ser um método System.out.println("\nEscolha o produto pelo código:\n"); for (Produto x : listPro) { System.out.println( x.getCodProduto() + ", " + x.getNomeProduto() + ", " + x.getPreco()); } System.out.println(tamPro + 1 + " - Finalizar pedido\n"); int opPro = Integer.parseInt(sc.nextLine()); int qtdPro = 0; BigDecimal precoItem = new BigDecimal("0.00"); while (opPro != tamPro + 1) { if (opPro >= 1 && opPro <= tamPro) { Produto prodItem = produtosServico.buscar(opPro); precoItem = prodItem.precoComDesconto(); System.out.println("Digite a quanditade do produto"); qtdPro = Integer.parseInt(sc.nextLine()); auxItem.add(new Item(null, qtdPro, precoItem, pedido, prodItem)); System.out.println("-----------------------------------------------------------"); for (int i = 0; i < auxItem.size(); i++) { System.out.println( "Item " + (i + 1) + " - " + auxItem.get(i).getProduto().getNomeProduto() + ", Qtd " + auxItem.get(i).getQtd() + ", R$ " + auxItem.get(i).getPreco() + ", Total = " + auxItem .get(i) .getPreco() .multiply(BigDecimal.valueOf(auxItem.get(i).getQtd()))); } System.out.println("-----------------------------------------------------------"); System.out.println( "Item " + listPro.get(opPro - 1).getNomeProduto() + ", R$ " + precoItem + " adicionado ao pedido"); } else { System.out.println( "Codigo de produto inválido, digite novamente ou digite " + (tamPro + 1) + " para sair"); } opPro = Integer.parseInt(sc.nextLine()); } // gravar pedido e itens no banco if (auxItem.size() > 0) { pedidoServico.inserirAtualizar(pedido); for (Item x : auxItem) { itemServico.inserirAtualizar(x); } System.out.println( "\nPedido realizado com sucesso! Código: " + pedido.getCodPedido()); } else { System.out.println( "\nO pedido não foi realizado porque nenhum produto foi escolhido."); } } catch (ServicoException e) { System.out.println("Erro ao buscar atendente: " + e.getMessage()); } // Pesquisa busca cliente break; case 8: break; case 9: break; case 10: break; case 11: break; case 12: break; case 13: break; case 14: break; case 15: break; case 16: break; case 17: break; case 18: break; case 20: System.out.println("Programa finalizado"); break; default: System.out.println("\nOpção inválida"); } } while (opcao != 23); System.out.println( "______________________________________________________________________________________________________"); }