Ejemplo n.º 1
0
 public void inserirAtualizar(Pedido x) {
   if (x.getCodPedido() != null) {
     x = em.merge(x);
   }
   em.persist(x);
 }
Ejemplo n.º 2
0
  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(
        "______________________________________________________________________________________________________");
  }