From e4e7ea044343d9bef0f23867415b134ed715338d Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Tue, 9 Aug 2016 00:10:54 -0300 Subject: [PATCH 01/12] =?UTF-8?q?Alterado=20README.md=20com=20a=20especifi?= =?UTF-8?q?ca=C3=A7=C3=A3o=20do=20projeto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 131 +++++++++++++----------------------------------------- 1 file changed, 32 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 338e4406..9f8fbeec 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,45 @@ -# Por que trabalhar na Contabilizei +# Minha solução para o Projeto de Pedidos -**Eleita a melhor startup B2B da América Latina em 2016, a Contabilizei** é um escritório de contabilidade online, líder de mercado, com sede em Curitiba (PR). Nosso propósito é resolver a dor e burocracia de micro e pequenas empresas ao se manterem regulares com o governo. Somos contadores, só que online, simples assim. Acreditamos no poder da tecnologia para melhorar continuamente a vida das pessoas. +Projeto desenvolvido para o processo seletivo da Contabilizei -Se você tem espírito e comportamento empreendedor, muita disposição e proatividade para trabalhar em uma empresa em franca expansão, você é um forte candidato :) +## Tecnologias utilizadas -Como Desenvolvedor Full-stack você irá atuar no desenvolvimento de soluções em arquitetura Java Web MVC com RestFul APis (JAX-RS), integrações com outros sistemas (SOAP, XML, JSON), banco de dados NoSQL e soluções escaláveis, participando de todo o processo de desenvolvimento, desde tomadas de decisões à codificação e testes. +- Back-End + * Java EE + * Jersey Framework + * Tomcat 8 + * MySQL -### O que fazem os Ninjas da Contabilizei? O que comem (e bebem)? Onde vivem? +-Front-End + * HTML5 + * Bootstrap ~3.3.7 + * JavaScript + * AngularJS ~1.5.8 -Somos um time de desenvolvimento ágil, focado em fazer as coisas acontecerem. Trabalhamos com Kanban, entregas contínuas, Git, Cloud, aplicações distribuídas e mais uma porrada de tecnologias novas... Queremos que nosso cliente tenha o produto e a experiência mais fodásticos do planeta. Gostamos de compartilhar ideias, testar tecnologias e de cerveja :) +## Estruturas de Pastas +- O projeto Back-End está localizado na pasta servico_rest +- A Single Page Application está localizada na pasta app_pedidoscontabilizei -# O trabalho por aqui +## Como executar o projeto -Que tal fazer parte de um time com atitude “get Fˆ%#ing things done”? Participar de uma das maiores disrupções no mercado? Ter a oportunidade de trabalhar com tecnologias e conceitos inovadores, como: -* Práticas ágeis como Kanban / Scrum -* Google Cloud Platform -* Escalabilidade -* Micro services e aplicações distribuídas -* Kubernetes -* Git -* AngularJs -* Material Design -* BDD +Foi desenvolvido um Maven Project no Eclipse utilizando Java 8 e como Server Runtime o Tomcat 8, +assim que você importar o projeto para a IDE, o adicione ao Tomcat e execute o comando Maven Update Project +para atualização das dependêcias. -Mais informações sobre a vaga você encontra aqui: [Desenvolvedor Full Stack Java na Contabilizei](https://jobs.lever.co/contabilizei/826c32bd-d800-475a-9f05-531e86dc4ea3) +Crie uma banco de dados no MySQL com o nome "pedidoscontabilizei" e altere os dados de acesso ao MySQL no arquivo +META-INF/persistence.xml dentro da pasta resources do projeto. -# O que preciso fazer? +Certifique que o Tomcat esteja sendo executado na porta padrão 8080, pois todos as requisições da Single Page +estão sendo executadas nessa porta. -Vamos ser práticos e diretos, se você quer trabalhar conosco siga os passos abaixo: +No desenvolvimento da Single Page Application, foi utilizado o NPM como gerenciador de pacotes após clonar o +projeto execute ```npm install [opcional --save]``` para baixar suas dependências. -* Faça um "fork" desse projeto para sua conta GitHub. -* Implemente o desafio descrito no tópico abaixo. -* Faça um push para seu repositório com o desafio implementado. -* Envie um email para (souninja@contabilizei.com.br) avisando que finalizou o desafio com a url do seu fork. -* Cruze os dedos e aguarde nosso contato. +Para evitar problemas com Access-Control-Allow-Origin dos Browsers, deve ser executado o projeto em cima de um +servidor HTTP local, pode ser o do node http-server que é instalado através ```npm install http-server -g``` ou o +do Python caso tenha instalado na máquina. -# O desafio (CRUD de pedidos) - -Você deverá criar 2 aplicações para cadastramento de pedidos de venda: - -**Back-end:** aplicação JavaEE baseada em Web Services no padrão RESTful JAX-RS. - -**Front-end:** Single Page Application que se comunique com estes serviços. - -A aplicação Back-end dever ter, ao menos, serviços para: inclusão, alteração, exclusão e listagem dos pedidos. - -Pedidos deverão conter: -* número -* data de emissão -* cliente -* lista de produtos -* valor total - -Cada produto do pedido deve ter: -* código -* descrição -* quantidade -* valor unitário - -No pedido, deve constar as seguintes informações do cliente: -* cpf ou cnpj -* nome ou razão social -* telefone -* e-mail - -### Tecnologias - -Escolha umas das opções abaixo para implementar sua solução. A modelagem dos dados fica a seu critério. Não se preocupe com autenticação ou multitenancy. - -#### Back-end - -**Opção 1** - -* Aplicação JavaEE utilizando framework [**Google App Engine para Java**](https://cloud.google.com/appengine/) -* Banco de dados NOSQL [Datastore](https://cloud.google.com/datastore/) -* RESTFul API com [Google Endpoints](https://cloud.google.com/appengine/docs/java/endpoints/) ou Jersey JAX-RS - -**Opção 2** - -* Aplicação pura Java EE (não utilize Spring, Struts, EJB, etc) -* RESTful API JAX-RS utilizando Servlets ou framework Jersey -* Banco de dados SQL (MySQL, PostgreSQL, HSQLDB) com JPA ou NOSQL(MongoDB, Cassandra) - -#### Front-end - -* Single Page Application utilizando apenas HTML5 e CSS3 -* Javascript puro / JQuery (e plugins) -* AngularJS 1.x (será diferencial) -* Bootstrap (http://getbootstrap.com/) ou Angular Material Design (será diferencial) - -### Arquitetura e documentação - -No arquivo README do projeto explique o funcionamento e a arquitetura da solução adotada na sua implementação. Descreva também os passos para executar corretamente seu projeto. - -### Avaliação - -Entre os critérios de avaliação estão: - -* Facilidade de configuração do projeto -* Performance -* Código limpo e organização -* Documentação de código -* Documentação do projeto (readme) -* Arquitetura -* Boas práticas de desenvolvimento -* Design Patterns - -# Sobre você - -Queremos saber um pouco mais sobre você também :) Por favor, responda o questionário do arquivo [questions.md](questions.md) e envie junto com seu projeto. +Exemplos de como executar a SPA, dentro da pasta app_pedidoscontabilizei execute: +- Utilizando Python: ```python -m http.server 8888``` +- Utilizando node: ```http-server -p 8888``` \ No newline at end of file From 2489aa243f9f08cfe8068d26ab730581b63d8b94 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Tue, 9 Aug 2016 00:14:06 -0300 Subject: [PATCH 02/12] Corrigido lista com tecnologias front-end --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9f8fbeec..6598460d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Projeto desenvolvido para o processo seletivo da Contabilizei * Tomcat 8 * MySQL --Front-End +- Front-End * HTML5 * Bootstrap ~3.3.7 * JavaScript @@ -35,11 +35,12 @@ estão sendo executadas nessa porta. No desenvolvimento da Single Page Application, foi utilizado o NPM como gerenciador de pacotes após clonar o projeto execute ```npm install [opcional --save]``` para baixar suas dependências. -Para evitar problemas com Access-Control-Allow-Origin dos Browsers, deve ser executado o projeto em cima de um -servidor HTTP local, pode ser o do node http-server que é instalado através ```npm install http-server -g``` ou o -do Python caso tenha instalado na máquina. +Para evitar problemas com Access-Control-Allow-Origin dos Browsers, o projeto deve ser executado em cima de um +simples servidor HTTP local, pode ser o do ```node http-server``` que é instalado através +```npm install http-server -g``` ou o do Python caso tenha instalado na máquina. Exemplos de como executar a SPA, dentro da pasta app_pedidoscontabilizei execute: - Utilizando Python: ```python -m http.server 8888``` -- Utilizando node: ```http-server -p 8888``` \ No newline at end of file +- Utilizando node: ```http-server -p 8888``` + From eb0a672ad25bdfaed3890c0578e24ea54f711d78 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Tue, 9 Aug 2016 00:15:09 -0300 Subject: [PATCH 03/12] Removido o arquivo de Questions --- questions.md | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 questions.md diff --git a/questions.md b/questions.md deleted file mode 100644 index 59818eb0..00000000 --- a/questions.md +++ /dev/null @@ -1,12 +0,0 @@ - -## Fale um pouco sobre você :) - -### 1) Por que se interessou pela oportunidade? - -### 2) O que espera da Contabilizei? - -### 3) O que você considera como seu principal diferencial? - -### 4) Cite 2 dos principais desafios e projetos da sua carreira. Descreva a importância da sua participação, como você fez a diferença, os resultados que alcançou com a equipe/empresa. - -### 5) Adicione aqui links para seu perfil profissional (Linkedin, por exemplo): From 487f7168b151227aa9365d8d6c625771f033c522 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Tue, 9 Aug 2016 00:17:51 -0300 Subject: [PATCH 04/12] =?UTF-8?q?Adicionado=20as=20aplica=C3=A7=C3=B5es=20?= =?UTF-8?q?SPA=20e=20Rest=20a=20pasta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_pedidoscontabilizei/app/app.js | 5 + .../app/controllers/clientes_controller.js | 81 +++++++++ .../app/controllers/pedidos_controller.js | 162 ++++++++++++++++++ .../app/controllers/produtos_controller.js | 83 +++++++++ .../app/services/clientes_service.js | 39 +++++ .../app/services/pedidos_service.js | 37 ++++ .../app/services/produtos_service.js | 37 ++++ app_pedidoscontabilizei/assets/css/index.css | 3 + app_pedidoscontabilizei/assets/js/index.js | 31 ++++ app_pedidoscontabilizei/index.html | 54 ++++++ app_pedidoscontabilizei/package.json | 18 ++ .../views/clientes/listar.html | 69 ++++++++ .../views/pedidos/listar.html | 99 +++++++++++ .../views/produtos/listar.html | 66 +++++++ servico_rest/.classpath | 33 ++++ servico_rest/.project | 37 ++++ servico_rest/.settings/.jsdtscope | 13 ++ .../org.eclipse.core.resources.prefs | 5 + .../.settings/org.eclipse.jdt.core.prefs | 8 + .../.settings/org.eclipse.jpt.core.prefs | 3 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../org.eclipse.wst.common.component | 11 ++ ...se.wst.common.project.facet.core.prefs.xml | 12 ++ ....eclipse.wst.common.project.facet.core.xml | 9 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + .../org.eclipse.wst.validation.prefs | 2 + servico_rest/pom.xml | 107 ++++++++++++ .../pedidoscontabilizei/dao/ClienteDao.java | 13 ++ .../pedidoscontabilizei/dao/DaoGenerico.java | 48 ++++++ .../br/com/pedidoscontabilizei/dao/EMF.java | 27 +++ .../pedidoscontabilizei/dao/PedidoDao.java | 13 ++ .../pedidoscontabilizei/dao/ProdutoDao.java | 12 ++ .../pedidoscontabilizei/dto/ClienteDTO.java | 47 +++++ .../pedidoscontabilizei/dto/PedidoDTO.java | 127 ++++++++++++++ .../pedidoscontabilizei/dto/ProdutoDTO.java | 49 ++++++ .../pedidoscontabilizei/modelos/Cliente.java | 87 ++++++++++ .../pedidoscontabilizei/modelos/Pedido.java | 97 +++++++++++ .../pedidoscontabilizei/modelos/Produto.java | 89 ++++++++++ .../resources/ClientesResource.java | 97 +++++++++++ .../resources/CorsFilter.java | 23 +++ .../resources/PedidosResource.java | 98 +++++++++++ .../resources/ProdutosResource.java | 97 +++++++++++ .../servicos/ClienteServico.java | 82 +++++++++ .../servicos/PedidoServico.java | 116 +++++++++++++ .../servicos/ProdutoServico.java | 83 +++++++++ .../main/resources/META-INF/persistence.xml | 21 +++ servico_rest/src/main/webapp/WEB-INF/web.xml | 28 +++ servico_rest/src/main/webapp/index.jsp | 5 + .../target/classes/META-INF/persistence.xml | 21 +++ .../pedidoscontabilizei/dao/ClienteDao.class | Bin 0 -> 574 bytes .../pedidoscontabilizei/dao/DaoGenerico.class | Bin 0 -> 2734 bytes .../br/com/pedidoscontabilizei/dao/EMF.class | Bin 0 -> 983 bytes .../pedidoscontabilizei/dao/PedidoDao.class | Bin 0 -> 568 bytes .../pedidoscontabilizei/dao/ProdutoDao.class | Bin 0 -> 572 bytes .../pedidoscontabilizei/dto/ClienteDTO.class | Bin 0 -> 1256 bytes .../pedidoscontabilizei/dto/PedidoDTO.class | Bin 0 -> 3996 bytes .../pedidoscontabilizei/dto/ProdutoDTO.class | Bin 0 -> 1410 bytes .../pedidoscontabilizei/modelos/Cliente.class | Bin 0 -> 2581 bytes .../pedidoscontabilizei/modelos/Pedido.class | Bin 0 -> 3046 bytes .../pedidoscontabilizei/modelos/Produto.class | Bin 0 -> 2835 bytes .../resources/ClientesResource.class | Bin 0 -> 2824 bytes .../resources/CorsFilter.class | Bin 0 -> 1414 bytes .../resources/PedidosResource.class | Bin 0 -> 2805 bytes .../resources/ProdutosResource.class | Bin 0 -> 2817 bytes .../servicos/ClienteServico.class | Bin 0 -> 3372 bytes .../servicos/PedidoServico.class | Bin 0 -> 5068 bytes .../servicos/ProdutoServico.class | Bin 0 -> 3472 bytes .../web-resources/META-INF/MANIFEST.MF | 5 + .../br.com/pedidoscontabilizei/pom.properties | 7 + .../maven/br.com/pedidoscontabilizei/pom.xml | 107 ++++++++++++ 71 files changed, 2429 insertions(+) create mode 100644 app_pedidoscontabilizei/app/app.js create mode 100644 app_pedidoscontabilizei/app/controllers/clientes_controller.js create mode 100644 app_pedidoscontabilizei/app/controllers/pedidos_controller.js create mode 100644 app_pedidoscontabilizei/app/controllers/produtos_controller.js create mode 100644 app_pedidoscontabilizei/app/services/clientes_service.js create mode 100644 app_pedidoscontabilizei/app/services/pedidos_service.js create mode 100644 app_pedidoscontabilizei/app/services/produtos_service.js create mode 100644 app_pedidoscontabilizei/assets/css/index.css create mode 100644 app_pedidoscontabilizei/assets/js/index.js create mode 100644 app_pedidoscontabilizei/index.html create mode 100644 app_pedidoscontabilizei/package.json create mode 100644 app_pedidoscontabilizei/views/clientes/listar.html create mode 100644 app_pedidoscontabilizei/views/pedidos/listar.html create mode 100644 app_pedidoscontabilizei/views/produtos/listar.html create mode 100644 servico_rest/.classpath create mode 100644 servico_rest/.project create mode 100644 servico_rest/.settings/.jsdtscope create mode 100644 servico_rest/.settings/org.eclipse.core.resources.prefs create mode 100644 servico_rest/.settings/org.eclipse.jdt.core.prefs create mode 100644 servico_rest/.settings/org.eclipse.jpt.core.prefs create mode 100644 servico_rest/.settings/org.eclipse.m2e.core.prefs create mode 100644 servico_rest/.settings/org.eclipse.wst.common.component create mode 100644 servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml create mode 100644 servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 servico_rest/.settings/org.eclipse.wst.validation.prefs create mode 100644 servico_rest/pom.xml create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java create mode 100644 servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java create mode 100644 servico_rest/src/main/resources/META-INF/persistence.xml create mode 100644 servico_rest/src/main/webapp/WEB-INF/web.xml create mode 100644 servico_rest/src/main/webapp/index.jsp create mode 100644 servico_rest/target/classes/META-INF/persistence.xml create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ClienteDao.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dao/DaoGenerico.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dao/EMF.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dao/PedidoDao.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ProdutoDao.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ClienteDTO.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dto/PedidoDTO.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/dto/ProdutoDTO.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Cliente.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Pedido.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Produto.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ClientesResource.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/resources/CorsFilter.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/resources/PedidosResource.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ProdutosResource.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ClienteServico.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/PedidoServico.class create mode 100644 servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ProdutoServico.class create mode 100644 servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF create mode 100644 servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties create mode 100644 servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml diff --git a/app_pedidoscontabilizei/app/app.js b/app_pedidoscontabilizei/app/app.js new file mode 100644 index 00000000..9c885084 --- /dev/null +++ b/app_pedidoscontabilizei/app/app.js @@ -0,0 +1,5 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app', []); +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/controllers/clientes_controller.js b/app_pedidoscontabilizei/app/controllers/clientes_controller.js new file mode 100644 index 00000000..25d80724 --- /dev/null +++ b/app_pedidoscontabilizei/app/controllers/clientes_controller.js @@ -0,0 +1,81 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').controller('clientesController', clientesController); + + clientesController.$inject = ['clienteAPI', '$scope']; + + function clientesController(clienteAPI, $scope, $uibModal) { + $scope.clientes = []; + $scope.cliente; + $scope.escondeAdicionar = false; + + $scope.buscaTodos = function () { + buscarTodos(); + } + + $scope.carregarFormulario = function (cpf) { + clienteAPI.buscaPorCPF(cpf).success(function (data) { + $scope.cliente = data; + $scope.escondeAdicionar = true; + }); + } + + $scope.inserir = function (cliente) { + clienteAPI.inserir(cliente).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.alterar = function (cliente) { + clienteAPI.alterar(cliente).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.excluir = function (cpf) { + clienteAPI.excluir(cpf).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.cancelar = function () { + limparDados(); + } + + function buscarTodos() { + clienteAPI.buscaTodos().success(function (result) { + $scope.clientes = result; + }); + } + + function limparDados() { + $scope.cliente = null; + $scope.escondeAdicionar = false; + + resetCliente(); + buscarTodos(); + } + + function resetCliente() { + $('#nomRazaoSocial').val(''); + $('#cpfCnpj').val(''); + $('#telefone').val(''); + $('#telefone').val(''); + } + + function mostraErro(data) { + alert("Infelizmente ocorreu um erro. Verifique seus dados e tente novamente mais tarde"); + } + } + +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/controllers/pedidos_controller.js b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js new file mode 100644 index 00000000..252e0fa1 --- /dev/null +++ b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js @@ -0,0 +1,162 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').controller('pedidosController', pedidosController); + + pedidosController.$inject = ['pedidoAPI', 'clienteAPI', 'produtoAPI', '$scope']; + + function pedidosController(pedidoAPI, clienteAPI, produtoAPI, $scope) { + $scope.pedido; + $scope.pedidos = []; + $scope.clientes = []; + $scope.produto = []; + $scope.produtosPedido = []; + $scope.codigoProdutos = []; + $scope.escondeAdicionar = false; + + $scope.buscaTodos = function () { + buscaDadosIniciais(); + } + + $scope.carregarFormulario = function (codigo) { + resetPedidos(); + + pedidoAPI.buscaPorCodigo(codigo).success(function (data) { + $scope.pedido = data; + $scope.escondeAdicionar = true; + let tamanho = data.codigoProdutos.length; + + for (var i = 0; i < tamanho; i++) { + var obj = new Object(); + obj.codigo = data.codigoProdutos[i]; + obj.descricao = data.descricaoProdutos[i]; + obj.valorUnitario = data.valorUnitarioProdutos[i]; + + $scope.codigoProdutos.push(obj.codigo); + $scope.produtosPedido.push(obj); + } + }) + } + + $scope.inserir = function (pedido) { + if (pedido === undefined) { + alert("Ops! Os dados do seu pedido são inválidos!"); + } + + pedido.codigoProdutos = $scope.codigoProdutos; + + pedidoAPI.inserir(pedido).success(function (data) { + limpaDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.alterar = function (pedido) { + pedido.codigoProdutos = $scope.codigoProdutos; + + pedidoAPI.alterar(pedido).success(function (data) { + limpaDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.excluir = function (numero) { + pedidoAPI.excluir(numero).success(function (data) { + limpaDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.adicionarProduto = function (codigo) { + if (codigo === '' || codigo === undefined) { + return; + } + + let existente = $scope.produtosPedido.some(function (arg) { + return arg.codigo == codigo; + }) + + if (existente) { + alert("Produto já adicionado!") + return false; + } + + produtoAPI.buscaPorCodigo(codigo).success(function (data) { + $scope.codigoProdutos.push(data.codigo); + + $scope.produtosPedido.push(data); + + calculaTotal(); + }) + } + + $scope.removerProduto = function (codigo) { + var novosCodigos = $scope.codigoProdutos.filter(function (param) { + return param != codigo; + }); + $scope.codigoProdutos = []; + + var novosProdutos = $scope.produtosPedido.filter(function (param) { + return param.codigo != codigo; + }); + $scope.produtosPedido = []; + + $scope.codigoProdutos = novosCodigos; + $scope.produtosPedido = novosProdutos; + + calculaTotal(); + } + + $scope.cancelar = function () { + resetPedidos(); + } + + function calculaTotal() { + var total = $scope.produtosPedido.reduce(function (result, prod) { + return result + prod.valorUnitario; + }, 0); + + $scope.pedido.valorTotal = parseFloat(total.toFixed(2)); + } + + function buscaDadosIniciais() { + pedidoAPI.buscaTodos().success(function (data) { + $scope.pedidos = data; + }); + + clienteAPI.buscaTodos().success(function (data) { + $scope.clientes = data; + }); + + produtoAPI.buscaTodos().success(function (data) { + $scope.produtos = data; + }); + } + + function limpaDados() { + $scope.pedido = null; + $scope.escondeAdicionar = false; + + resetPedidos(); + buscaDadosIniciais(); + } + + function resetPedidos(argument) { + $('select').val(''); + $('#valorUnitario').val(''); + + $scope.produtosPedido = []; + $scope.codigoProdutos = []; + } + + function mostraErro(data) { + alert("Infelizmente ocorreu um erro. Verifique seus dados e tente novamente mais tarde"); + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/controllers/produtos_controller.js b/app_pedidoscontabilizei/app/controllers/produtos_controller.js new file mode 100644 index 00000000..48d7bdca --- /dev/null +++ b/app_pedidoscontabilizei/app/controllers/produtos_controller.js @@ -0,0 +1,83 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').controller('produtosController', produtosController); + + produtosController.$inject = ['produtoAPI', '$scope']; + + function produtosController(produtoAPI, $scope) { + $scope.produtos = []; + $scope.produto; + $scope.escondeAdicionar = false; + + $scope.buscaTodos = function () { + buscarTodos(); + } + + $scope.carregarFormulario = function (codigo) { + produtoAPI.buscaPorCodigo(codigo).success(function (data) { + $scope.produto = data; + $scope.escondeAdicionar = true; + }); + } + + $scope.inserir = function (produto) { + produto.valorUnitario = produto.valorUnitario.replace(',', '.'); + + produtoAPI.inserir(produto).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.alterar = function (produto) { + produto.valorUnitario = produto.valorUnitario.replace(',', '.'); + + produtoAPI.alterar(produto).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.excluir = function (codigo) { + produtoAPI.excluir(codigo).success(function (data) { + limparDados(); + }) + .error(function (data) { + mostraErro(data); + }); + } + + $scope.cancelar = function (argument) { + limparDados(); + } + + function buscarTodos() { + produtoAPI.buscaTodos().success(function (data) { + $scope.produtos = data; + }); + } + + function limparDados(argument) { + $scope.produto = null; + $scope.escondeAdicionar = false; + + resetProdutos(); + buscarTodos(); + } + + function resetProdutos() { + $('#descricao').val(''); + $('#quantidade').val(''); + $('#valorUnitario').val(''); + } + + function mostraErro(data) { + alert("Infelizmente ocorreu um erro. Verifique seus dados e tente novamente mais tarde"); + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/services/clientes_service.js b/app_pedidoscontabilizei/app/services/clientes_service.js new file mode 100644 index 00000000..33885706 --- /dev/null +++ b/app_pedidoscontabilizei/app/services/clientes_service.js @@ -0,0 +1,39 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').factory('clienteAPI', clienteAPI); + + clienteAPI.$inject = ['$http']; + + function clienteAPI($http) { + var _buscaTodos = function () { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/clientes'); + } + + var _inserir = function (cliente) { + return $http.post('http://localhost:8080/pedidoscontabilizei/rest/clientes', cliente); + } + + + var _alterar = function (cliente) { + return $http.put('http://localhost:8080/pedidoscontabilizei/rest/clientes', cliente); + } + + var _excluir = function (cpf) { + return $http.delete('http://localhost:8080/pedidoscontabilizei/rest/clientes/' + cpf); + } + + var _buscaPorCPF = function (cpf) { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/clientes/' + cpf); + } + + return { + buscaTodos : _buscaTodos, + buscaPorCPF : _buscaPorCPF, + inserir : _inserir, + alterar : _alterar, + excluir : _excluir + } + } + +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/services/pedidos_service.js b/app_pedidoscontabilizei/app/services/pedidos_service.js new file mode 100644 index 00000000..aefd2af9 --- /dev/null +++ b/app_pedidoscontabilizei/app/services/pedidos_service.js @@ -0,0 +1,37 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').factory('pedidoAPI', pedidoAPI); + + pedidoAPI.$inject = ['$http']; + + function pedidoAPI($http) { + var _buscaTodos = function () { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/pedidos'); + } + + var _buscaPorCodigo = function (codigo) { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/pedidos/' + codigo); + } + + var _inserir = function (pedido) { + return $http.post('http://localhost:8080/pedidoscontabilizei/rest/pedidos', pedido); + } + + var _alterar = function (pedido) { + return $http.put('http://localhost:8080/pedidoscontabilizei/rest/pedidos', pedido); + } + + var _excluir = function (codigo) { + return $http.delete('http://localhost:8080/pedidoscontabilizei/rest/pedidos/' + codigo); + } + + return { + buscaTodos : _buscaTodos, + buscaPorCodigo : _buscaPorCodigo, + inserir : _inserir, + alterar : _alterar, + excluir : _excluir + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/app/services/produtos_service.js b/app_pedidoscontabilizei/app/services/produtos_service.js new file mode 100644 index 00000000..c57770bf --- /dev/null +++ b/app_pedidoscontabilizei/app/services/produtos_service.js @@ -0,0 +1,37 @@ +(function () { + 'use strict'; + + angular.module('pedidos_app').factory('produtoAPI', produtoAPI); + + produtoAPI.$inject = ["$http"]; + + function produtoAPI($http) { + var _buscaTodos = function () { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/produtos'); + } + + var _buscaPorCodigo = function (codigo) { + return $http.get('http://localhost:8080/pedidoscontabilizei/rest/produtos/' + codigo); + } + + var _inserir = function (produto) { + return $http.post('http://localhost:8080/pedidoscontabilizei/rest/produtos', produto); + } + + var _alterar = function (produto) { + return $http.put('http://localhost:8080/pedidoscontabilizei/rest/produtos', produto); + } + + var _excluir = function (codigo) { + return $http.delete('http://localhost:8080/pedidoscontabilizei/rest/produtos/' + codigo); + } + + return { + buscaTodos : _buscaTodos, + buscaPorCodigo : _buscaPorCodigo, + inserir : _inserir, + alterar : _alterar, + excluir : _excluir + } + } +})(); \ No newline at end of file diff --git a/app_pedidoscontabilizei/assets/css/index.css b/app_pedidoscontabilizei/assets/css/index.css new file mode 100644 index 00000000..be19f0cb --- /dev/null +++ b/app_pedidoscontabilizei/assets/css/index.css @@ -0,0 +1,3 @@ +table.table { + margin-top: 3%; +} \ No newline at end of file diff --git a/app_pedidoscontabilizei/assets/js/index.js b/app_pedidoscontabilizei/assets/js/index.js new file mode 100644 index 00000000..11c5c8cd --- /dev/null +++ b/app_pedidoscontabilizei/assets/js/index.js @@ -0,0 +1,31 @@ +function escondeElementos(texto) { + if (texto === 'Pedidos') { + $('#pedidos').show(); + $('#clientes').hide(); + $('#produtos').hide(); + } + + if (texto === 'Clientes') { + $('#clientes').show(); + $('#pedidos').hide(); + $('#produtos').hide(); + } + + if (texto === 'Produtos') { + $('#produtos').show(); + $('#clientes').hide(); + $('#pedidos').hide(); + } +} + +$(function() { + $('.tab-section').on('click', function () { + var texto = $(this).text(); + escondeElementos(texto); + }); + + $('.selectpicker').selectpicker({ + style: 'btn-info', + size: 5 + }); +}); \ No newline at end of file diff --git a/app_pedidoscontabilizei/index.html b/app_pedidoscontabilizei/index.html new file mode 100644 index 00000000..0ba4af3e --- /dev/null +++ b/app_pedidoscontabilizei/index.html @@ -0,0 +1,54 @@ + + + + + Pedidos Contabilizei + + + + + + +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/app_pedidoscontabilizei/package.json b/app_pedidoscontabilizei/package.json new file mode 100644 index 00000000..76473fb1 --- /dev/null +++ b/app_pedidoscontabilizei/package.json @@ -0,0 +1,18 @@ +{ + "name": "app_pedidoscontabilizei", + "version": "1.0.0", + "description": "App de pedidos para o processo de seleção da Contabilizei", + "main": "index.html", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Luiz Gustavo Caciatori", + "license": "MIT", + "dependencies": { + "angular": "^1.5.8", + "angular-ui-bootstrap": "^2.0.1", + "bootstrap": "^3.3.7", + "bootstrap-select": "^1.10.0", + "jquery": "^3.1.0" + } +} diff --git a/app_pedidoscontabilizei/views/clientes/listar.html b/app_pedidoscontabilizei/views/clientes/listar.html new file mode 100644 index 00000000..4bc26492 --- /dev/null +++ b/app_pedidoscontabilizei/views/clientes/listar.html @@ -0,0 +1,69 @@ + \ No newline at end of file diff --git a/app_pedidoscontabilizei/views/pedidos/listar.html b/app_pedidoscontabilizei/views/pedidos/listar.html new file mode 100644 index 00000000..14dc04f5 --- /dev/null +++ b/app_pedidoscontabilizei/views/pedidos/listar.html @@ -0,0 +1,99 @@ +
+

+ +

+ +
+
Cadatro de Pedidos
+
+
+ + + +
+ + +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + +
CódigoDescriçãoValor UnitárioExcluir Produto
{{ produtoPedido.codigo }}{{ produtoPedido.descricao }}{{ produtoPedido.valorUnitario}} + +
+
+ +
+ + +
+ + + + +
+
+
+ + + + + + + + + + + + + + + + +
Nº PedidoClienteValor TotalAções
{{ pedido.numero }}{{ pedido.nomeCliente }}{{ pedido.valorTotal }} + + +
+
\ No newline at end of file diff --git a/app_pedidoscontabilizei/views/produtos/listar.html b/app_pedidoscontabilizei/views/produtos/listar.html new file mode 100644 index 00000000..a227d6d2 --- /dev/null +++ b/app_pedidoscontabilizei/views/produtos/listar.html @@ -0,0 +1,66 @@ + \ No newline at end of file diff --git a/servico_rest/.classpath b/servico_rest/.classpath new file mode 100644 index 00000000..64e1c21c --- /dev/null +++ b/servico_rest/.classpath @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/servico_rest/.project b/servico_rest/.project new file mode 100644 index 00000000..fe8392d4 --- /dev/null +++ b/servico_rest/.project @@ -0,0 +1,37 @@ + + + pedidoscontabilizei + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/servico_rest/.settings/.jsdtscope b/servico_rest/.settings/.jsdtscope new file mode 100644 index 00000000..24181231 --- /dev/null +++ b/servico_rest/.settings/.jsdtscope @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.core.resources.prefs b/servico_rest/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..839d647e --- /dev/null +++ b/servico_rest/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/servico_rest/.settings/org.eclipse.jdt.core.prefs b/servico_rest/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..6e80039d --- /dev/null +++ b/servico_rest/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/servico_rest/.settings/org.eclipse.jpt.core.prefs b/servico_rest/.settings/org.eclipse.jpt.core.prefs new file mode 100644 index 00000000..7f6edff2 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.jpt.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.jpt.core.platform=generic2_0 +org.eclipse.jpt.jpa.core.discoverAnnotatedClasses=true diff --git a/servico_rest/.settings/org.eclipse.m2e.core.prefs b/servico_rest/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 00000000..f897a7f1 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/servico_rest/.settings/org.eclipse.wst.common.component b/servico_rest/.settings/org.eclipse.wst.common.component new file mode 100644 index 00000000..68fdbae6 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.common.component @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 00000000..1f540442 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..fb0121d6 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 00000000..3bd5d0a4 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 00000000..05bd71b6 --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/servico_rest/.settings/org.eclipse.wst.validation.prefs b/servico_rest/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 00000000..04cad8cb --- /dev/null +++ b/servico_rest/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/servico_rest/pom.xml b/servico_rest/pom.xml new file mode 100644 index 00000000..db1050db --- /dev/null +++ b/servico_rest/pom.xml @@ -0,0 +1,107 @@ + + 4.0.0 + br.com + pedidoscontabilizei + war + 0.0.1-SNAPSHOT + pedidoscontabilizei Maven Webapp + http://maven.apache.org + + + + + snapshot-repository.java.net + Java.net Snapshot Repository for Maven + https://maven.java.net/content/repositories/snapshots/ + default + + + + + 2.22.1 + UTF-8 + + + + + + org.glassfish.jersey + jersey-bom + ${jersey.version} + pom + import + + + + + + + javax.servlet + servlet-api + 2.4 + + + + org.glassfish.jersey.ext + jersey-mvc-jsp + + + + javax.servlet + jstl + 1.2 + + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + + + javax.ws.rs + javax.ws.rs-api + 2.0.1 + + + + org.glassfish.jersey.media + jersey-media-moxy + 2.22.2 + + + + org.hibernate + hibernate-core + 5.1.0.Final + + + + org.hibernate + hibernate-entitymanager + 5.1.0.Final + + + + + mysql + mysql-connector-java + 5.1.38 + + + + + + + pedidoscontabilizei + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + + diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java new file mode 100644 index 00000000..8ab285ad --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ClienteDao.java @@ -0,0 +1,13 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; + +import br.com.pedidoscontabilizei.modelos.Cliente; + +public class ClienteDao extends DaoGenerico { + + public ClienteDao(EntityManager entityManager) { + super(entityManager); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java new file mode 100644 index 00000000..5ca84017 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/DaoGenerico.java @@ -0,0 +1,48 @@ +package br.com.pedidoscontabilizei.dao; + +import java.lang.reflect.ParameterizedType; +import java.util.List; + +import javax.persistence.EntityManager; + +public class DaoGenerico { + + protected EntityManager entityManager = null; + + public DaoGenerico(EntityManager entityManager) { + this.entityManager = entityManager; + } + + public T buscaPeloId(PK id) { + return (T) entityManager.find(getTypeClass(), id); + } + + public List buscaTodos() { + return entityManager.createQuery(("SELECT e FROM " + getTypeClass().getSimpleName() + " e")).getResultList(); + } + + public void inserir(T entidade) { + entityManager.getTransaction().begin(); + entityManager.persist(entidade); + entityManager.getTransaction().commit(); + } + + public void alterar(T entidade) { + entityManager.getTransaction().begin(); + entityManager.merge(entidade); + entityManager.getTransaction().commit(); + } + + public void deletar(T entidade) { + entityManager.getTransaction().begin(); + entityManager.remove(entidade); + entityManager.getTransaction().commit(); + } + + private Class getTypeClass() { + Class clazz = (Class) ((ParameterizedType) this.getClass() + .getGenericSuperclass()).getActualTypeArguments()[1]; + return clazz; + } +} + diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java new file mode 100644 index 00000000..6afa88e2 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/EMF.java @@ -0,0 +1,27 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +public class EMF { + + private static EntityManagerFactory emf; + + public EMF() { + emf = Persistence.createEntityManagerFactory("PedidosContabilizeiPU"); + } + + public EntityManager createEntityManager() { + if (emf == null) { + throw new IllegalStateException("Contexto não foi incializado."); + } + + return emf.createEntityManager(); + } + + public void closeConnection() { + emf.close(); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java new file mode 100644 index 00000000..1681c047 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/PedidoDao.java @@ -0,0 +1,13 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; + +import br.com.pedidoscontabilizei.modelos.Pedido; + +public class PedidoDao extends DaoGenerico { + + public PedidoDao(EntityManager entityManager) { + super(entityManager); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java new file mode 100644 index 00000000..df560d7d --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dao/ProdutoDao.java @@ -0,0 +1,12 @@ +package br.com.pedidoscontabilizei.dao; + +import javax.persistence.EntityManager; + +import br.com.pedidoscontabilizei.modelos.Produto; + +public class ProdutoDao extends DaoGenerico { + + public ProdutoDao(EntityManager entityManager) { + super(entityManager); + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java new file mode 100644 index 00000000..c96dcc99 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java @@ -0,0 +1,47 @@ +package br.com.pedidoscontabilizei.dto; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ClienteDTO { + + private String cpfCnpj; + private String nomRazaoSocial; + private String telefone; + private String email; + + public ClienteDTO() { + } + + public String getCpfCnpj() { + return cpfCnpj; + } + + public void setCpfCnpj(String cpfCnpj) { + this.cpfCnpj = cpfCnpj; + } + + public String getNomRazaoSocial() { + return nomRazaoSocial; + } + + public void setNomRazaoSocial(String nomRazaoSocial) { + this.nomRazaoSocial = nomRazaoSocial; + } + + public String getTelefone() { + return telefone; + } + + public void setTelefone(String telefone) { + this.telefone = telefone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java new file mode 100644 index 00000000..06b51b68 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/PedidoDTO.java @@ -0,0 +1,127 @@ +package br.com.pedidoscontabilizei.dto; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class PedidoDTO { + + private Long numero; + private String documentoCliente; + private String nomeCliente; + private List descricaoProdutos; + private List codigoProdutos; + private List valorUnitarioProdutos; + private BigDecimal valorTotal; + private Calendar emissao; + + private List produtos; + + public PedidoDTO() { } + + public Long getNumero() { + return numero; + } + + public void setNumero(Long numero) { + this.numero = numero; + } + + public String getDocumentoCliente() { + return documentoCliente; + } + + public void setDocumentoCliente(String documentoCliente) { + this.documentoCliente = documentoCliente; + } + + public String getNomeCliente() { + return nomeCliente; + } + + public void setNomeCliente(String nomeCliente) { + this.nomeCliente = nomeCliente; + } + + public List getDescricaoProdutos() { + return descricaoProdutos; + } + + public void setDescricaoProdutos(List descricaoProdutos) { + this.descricaoProdutos = descricaoProdutos; + } + + public List getCodigoProdutos() { + return codigoProdutos; + } + + public void setCodigoProdutos(List codigoProdutos) { + this.codigoProdutos = codigoProdutos; + } + + public List getValorUnitarioProdutos() { + return valorUnitarioProdutos; + } + + public void setValorUnitarioProdutos(List valorUnitarioProdutos) { + this.valorUnitarioProdutos = valorUnitarioProdutos; + } + + public BigDecimal getValorTotal() { + return valorTotal; + } + + public void setValorTotal(BigDecimal valorTotal) { + this.valorTotal = valorTotal; + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } + + public Calendar getEmissao() { + return emissao; + } + + public void setEmissao(Calendar emissao) { + this.emissao = emissao; + } + + public void addDescricaoProduto(String descricao) { + if (this.descricaoProdutos == null) { + this.descricaoProdutos = new ArrayList(); + } + + if (descricao != null || descricao.trim().length() > 0) { + this.descricaoProdutos.add(descricao); + } + } + + public void addCodigoProduto(Long codigoProduto) { + if (this.codigoProdutos == null) { + this.codigoProdutos = new ArrayList(); + } + + if (codigoProduto > 0) { + this.codigoProdutos.add(codigoProduto); + } + } + + public void addValorUnitarioProduto(BigDecimal valor) { + if (this.valorUnitarioProdutos == null) { + this.valorUnitarioProdutos = new ArrayList(); + } + + if (valor.compareTo(BigDecimal.ZERO) > 0) { + this.valorUnitarioProdutos.add(valor); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java new file mode 100644 index 00000000..7c823b34 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ProdutoDTO.java @@ -0,0 +1,49 @@ +package br.com.pedidoscontabilizei.dto; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ProdutoDTO { + + private Long codigo; + private String descricao; + private BigDecimal quantidade; + private BigDecimal valorUnitario; + + public ProdutoDTO() { + } + + public Long getCodigo() { + return codigo; + } + + public void setCodigo(Long codigo) { + this.codigo = codigo; + } + + public String getDescricao() { + return descricao; + } + + public void setDescricao(String descricao) { + this.descricao = descricao; + } + + public BigDecimal getQuantidade() { + return quantidade; + } + + public void setQuantidade(BigDecimal quantidade) { + this.quantidade = quantidade; + } + + public BigDecimal getValorUnitario() { + return valorUnitario; + } + + public void setValorUnitario(BigDecimal valorUnitario) { + this.valorUnitario = valorUnitario; + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java new file mode 100644 index 00000000..97c91fd3 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Cliente.java @@ -0,0 +1,87 @@ +package br.com.pedidoscontabilizei.modelos; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlRootElement; + +@Entity +@Table(name = "clientes") +@XmlRootElement +public class Cliente { + + @Id + @Column(length = 18) + private String cpfCnpj; + + @Column(nullable = false, length = 80) + private String nomRazaoSocial; + + @Column(nullable = false, length = 14) + private String telefone; + + @Column(nullable = false, length = 80) + private String email; + + @OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, fetch=FetchType.LAZY) + private List pedidos; + + public Cliente() { } + + public String getCpfCnpj() { + return cpfCnpj; + } + + public void setCpfCnpj(String cpfCnpj) { + this.cpfCnpj = cpfCnpj; + } + + public String getNomRazaoSocial() { + return nomRazaoSocial; + } + + public void setNomRazaoSocial(String nomRazaoSocial) { + this.nomRazaoSocial = nomRazaoSocial; + } + + public String getTelefone() { + return telefone; + } + + public void setTelefone(String telefone) { + this.telefone = telefone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public List getPedidos() { + return pedidos; + } + + public void setPedidos(List pedidos) { + this.pedidos = pedidos; + } + + public void addPedido(Pedido pedido) { + if (pedidos == null) { + this.pedidos = new ArrayList(); + } + + if (pedido != null) { + this.pedidos.add(pedido); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java new file mode 100644 index 00000000..e914520b --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Pedido.java @@ -0,0 +1,97 @@ +package br.com.pedidoscontabilizei.modelos; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.xml.bind.annotation.XmlRootElement; + + +@Entity +@Table(name="pedidos") +@XmlRootElement +public class Pedido { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private Long numero; + + @Column(nullable=false) + @Temporal(TemporalType.DATE) + private Calendar emissao; + + @Column(nullable=false, precision=18, scale=2, columnDefinition="DECIMAL(10,2)") + private BigDecimal valorTotal; + + @ManyToOne(fetch=FetchType.EAGER) + //@JsonBackReference + private Cliente cliente; + + @ManyToMany(fetch=FetchType.EAGER) + //@JsonManagedReference + private List produtos; + + public Pedido() { } + + public Long getNumero() { + return numero; + } + + public void setNumero(Long numero) { + this.numero = numero; + } + + public Calendar getEmissao() { + return emissao; + } + + public void setEmissao(Calendar emissao) { + this.emissao = emissao; + } + + public BigDecimal getValorTotal() { + return valorTotal; + } + + public void setValorTotal(BigDecimal valorTotal) { + this.valorTotal = valorTotal; + } + + public Cliente getCliente() { + return cliente; + } + + public void setCliente(Cliente cliente) { + this.cliente = cliente; + } + + public List getProdutos() { + return produtos; + } + + public void setProdutos(List produtos) { + this.produtos = produtos; + } + + public void addProduto(Produto produto) { + if (this.produtos == null) { + this.produtos = new ArrayList(); + } + + if (produto != null) { + this.produtos.add(produto); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java new file mode 100644 index 00000000..c72a3322 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/modelos/Produto.java @@ -0,0 +1,89 @@ +package br.com.pedidoscontabilizei.modelos; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlRootElement; + +@Entity +@Table(name="produtos") +@XmlRootElement +public class Produto { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private Long codigo; + + @Column(nullable=false, length=100) + private String descricao; + + @Column(nullable=false, precision=18, scale=2, columnDefinition="DECIMAL(10,2)") + private BigDecimal quantidade; + + @Column(nullable=false, precision=18, scale=2, columnDefinition="DECIMAL(10,2)") + private BigDecimal valorUnitario; + + @ManyToMany(mappedBy="produtos", fetch=FetchType.LAZY) + private List pedidos; + + public Produto() {} + + public Long getCodigo() { + return codigo; + } + + public void setCodigo(Long codigo) { + this.codigo = codigo; + } + + public String getDescricao() { + return descricao; + } + + public void setDescricao(String descricao) { + this.descricao = descricao; + } + + public BigDecimal getQuantidade() { + return quantidade; + } + + public void setQuantidade(BigDecimal quantidade) { + this.quantidade = quantidade; + } + + public BigDecimal getValorUnitario() { + return valorUnitario; + } + + public void setValorUnitario(BigDecimal valorUnitario) { + this.valorUnitario = valorUnitario; + } + + public List getPedidos() { + return pedidos; + } + + public void setPedidos(List pedidos) { + this.pedidos = pedidos; + } + + public void addPedido(Pedido pedido){ + if (this.pedidos == null) { + this.pedidos = new ArrayList(); + } + + if (pedido != null) { + this.pedidos.add(pedido); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java new file mode 100644 index 00000000..7b51daa2 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ClientesResource.java @@ -0,0 +1,97 @@ +package br.com.pedidoscontabilizei.resources; + +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import br.com.pedidoscontabilizei.dto.ClienteDTO; +import br.com.pedidoscontabilizei.servicos.ClienteServico; + +@Path("/clientes") +public class ClientesResource { + private ClienteServico clienteServico; + + public ClientesResource() { + clienteServico = new ClienteServico(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response inserir(ClienteDTO cliente) { + try { + + clienteServico.inserir(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response alterar(ClienteDTO cliente) { + try { + clienteServico.alterar(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @DELETE + @Path("{cpf}") + @Produces(MediaType.APPLICATION_JSON) + public Response excluir(@PathParam("cpf") String cpf) { + try { + boolean sucesso = clienteServico.remover(cpf); + + if (!sucesso) { + throw new WebApplicationException(404); + } + + return Response.ok().build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public List buscarTodos() { + try { + return clienteServico.buscaTodosClientes(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Path("{cpf}") + @Produces(MediaType.APPLICATION_JSON) + public ClienteDTO buscarPorCodigo(@PathParam("cpf") String cpf) { + try { + return clienteServico.buscaClientePorDocumento(cpf); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java new file mode 100644 index 00000000..265c8a0c --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/CorsFilter.java @@ -0,0 +1,23 @@ +package br.com.pedidoscontabilizei.resources; + +import java.io.IOException; + +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerResponseContext; +import javax.ws.rs.container.ContainerResponseFilter; +import javax.ws.rs.ext.Provider; + +@Provider +public class CorsFilter implements ContainerResponseFilter { + + @Override + public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) + throws IOException { + responseContext.getHeaders().add("Access-Control-Allow-Origin", "*"); + responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization"); + responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true"); + responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); + responseContext.getHeaders().add("Access-Control-Max-Age", "1209600"); + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java new file mode 100644 index 00000000..ced5c834 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/PedidosResource.java @@ -0,0 +1,98 @@ +package br.com.pedidoscontabilizei.resources; + +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import br.com.pedidoscontabilizei.dto.PedidoDTO; +import br.com.pedidoscontabilizei.servicos.PedidoServico; + +@Path("/pedidos") +public class PedidosResource { + + private PedidoServico pedidoServico; + + public PedidosResource() { + pedidoServico = new PedidoServico(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response inserir(PedidoDTO pedido) { + try { + + pedidoServico.inserir(pedido); + + return Response.ok(pedido).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response alterar(PedidoDTO pedido) { + try { + pedidoServico.alterar(pedido); + + return Response.ok(pedido).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @DELETE + @Path("{numero}") + @Produces(MediaType.APPLICATION_JSON) + public Response excluir(@PathParam("numero") Long numero) { + try { + boolean sucesso = pedidoServico.remover(numero); + + if (!sucesso) { + throw new WebApplicationException(404); + } + + return Response.ok().build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public List buscarTodos() { + try { + return pedidoServico.buscaTodosPedidos(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Path("{numero}") + @Produces(MediaType.APPLICATION_JSON) + public PedidoDTO buscarPorCodigo(@PathParam("numero") Long numero) { + try { + return pedidoServico.buscaPedidoPorDocumento(numero); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java new file mode 100644 index 00000000..7fcdd469 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/resources/ProdutosResource.java @@ -0,0 +1,97 @@ +package br.com.pedidoscontabilizei.resources; + +import java.util.List; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import br.com.pedidoscontabilizei.dto.ProdutoDTO; +import br.com.pedidoscontabilizei.servicos.ProdutoServico; + +@Path("/produtos") +public class ProdutosResource { + private ProdutoServico produtoServico; + + public ProdutosResource() { + produtoServico = new ProdutoServico(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response inserir(ProdutoDTO cliente) { + try { + + produtoServico.inserir(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response alterar(ProdutoDTO cliente) { + try { + produtoServico.alterar(cliente); + + return Response.ok(cliente).build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @DELETE + @Path("{codigo}") + @Produces(MediaType.APPLICATION_JSON) + public Response excluir(@PathParam("codigo") Long codigo) { + try { + boolean sucesso = produtoServico.remover(codigo); + + if (!sucesso) { + throw new WebApplicationException(404); + } + + return Response.ok().build(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public List buscarTodos() { + try { + return produtoServico.buscaTodosProdutos(); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } + + @GET + @Path("{codigo}") + @Produces(MediaType.APPLICATION_JSON) + public ProdutoDTO buscarPorCodigo(@PathParam("codigo") Long codigo) { + try { + return produtoServico.buscaProdutoPorCodigo(codigo); + + } catch (Exception e) { + throw new WebApplicationException(500); + } + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java new file mode 100644 index 00000000..34578f55 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java @@ -0,0 +1,82 @@ +package br.com.pedidoscontabilizei.servicos; + +import java.util.ArrayList; +import java.util.List; + +import br.com.pedidoscontabilizei.dao.ClienteDao; +import br.com.pedidoscontabilizei.dao.EMF; +import br.com.pedidoscontabilizei.dto.ClienteDTO; +import br.com.pedidoscontabilizei.modelos.Cliente; + +public class ClienteServico { + private ClienteDao clienteDao; + + public ClienteServico() { + EMF emf = new EMF(); + clienteDao = new ClienteDao(emf.createEntityManager()); + } + + public void inserir(ClienteDTO clienteDTO) { + Cliente cliente = converteParaModelo(clienteDTO); + + clienteDao.inserir(cliente); + } + + public void alterar(ClienteDTO clienteDTO) { + Cliente cliente = converteParaModelo(clienteDTO); + + clienteDao.alterar(cliente); + } + + public List buscaTodosClientes() { + List clientes = clienteDao.buscaTodos(); + List clientesDTO = new ArrayList(); + + for (Cliente cliente : clientes) { + clientesDTO.add(converteParaDTO(cliente)); + } + + return clientesDTO; + } + + public ClienteDTO buscaClientePorDocumento(String cpf) { + Cliente cliente = clienteDao.buscaPeloId(cpf); + if (cliente != null) { + return converteParaDTO(cliente); + } + + return null; + } + + public boolean remover(String cpf) { + Cliente cliente = clienteDao.buscaPeloId(cpf); + + if (cliente == null) { + return false; + } + + clienteDao.deletar(cliente); + + return true; + } + + private ClienteDTO converteParaDTO(Cliente cliente) { + ClienteDTO dto = new ClienteDTO(); + dto.setCpfCnpj(cliente.getCpfCnpj()); + dto.setNomRazaoSocial(cliente.getNomRazaoSocial()); + dto.setEmail(cliente.getEmail()); + dto.setTelefone(cliente.getTelefone()); + + return dto; + } + + private Cliente converteParaModelo(ClienteDTO clienteDTO) { + Cliente cliente = new Cliente(); + cliente.setCpfCnpj(clienteDTO.getCpfCnpj()); + cliente.setNomRazaoSocial(clienteDTO.getNomRazaoSocial()); + cliente.setEmail(clienteDTO.getEmail()); + cliente.setTelefone(clienteDTO.getTelefone()); + + return cliente; + } +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java new file mode 100644 index 00000000..611e46d2 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/PedidoServico.java @@ -0,0 +1,116 @@ +package br.com.pedidoscontabilizei.servicos; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.List; + +import br.com.pedidoscontabilizei.dao.PedidoDao; +import br.com.pedidoscontabilizei.dao.ProdutoDao; +import br.com.pedidoscontabilizei.dao.ClienteDao; +import br.com.pedidoscontabilizei.dao.EMF; +import br.com.pedidoscontabilizei.dto.PedidoDTO; +import br.com.pedidoscontabilizei.modelos.Cliente; +import br.com.pedidoscontabilizei.modelos.Pedido; +import br.com.pedidoscontabilizei.modelos.Produto; + +public class PedidoServico { + private PedidoDao pedidoDao; + private ClienteDao clienteDao; + private ProdutoDao produtoDao; + + public PedidoServico() { + EMF emf = new EMF(); + pedidoDao = new PedidoDao(emf.createEntityManager()); + clienteDao = new ClienteDao(emf.createEntityManager()); + produtoDao = new ProdutoDao(emf.createEntityManager()); + } + + public void inserir(PedidoDTO pedidoDTO) { + Pedido pedido = converteParaModelo(pedidoDTO); + Cliente cliente = pedido.getCliente(); + cliente.addPedido(pedido); + + for (Produto produto : pedido.getProdutos()) { + produto.addPedido(pedido); + } + + pedidoDao.inserir(pedido); + } + + public void alterar(PedidoDTO pedidoDTO) { + Pedido pedido = converteParaModelo(pedidoDTO); + + pedidoDao.alterar(pedido); + } + + public List buscaTodosPedidos() { + List pedidos = pedidoDao.buscaTodos(); + List pedidosDTO = new ArrayList(); + + for (Pedido pedido : pedidos) { + pedidosDTO.add(converteParaDTO(pedido)); + } + + return pedidosDTO; + } + + public PedidoDTO buscaPedidoPorDocumento(Long numero) { + Pedido pedido = pedidoDao.buscaPeloId(numero); + if (pedido != null) { + return converteParaDTO(pedido); + } + + return null; + } + + public boolean remover(Long numero) { + Pedido pedido = pedidoDao.buscaPeloId(numero); + + if (pedido == null) { + return false; + } + + pedidoDao.deletar(pedido); + + return true; + } + + + private PedidoDTO converteParaDTO(Pedido pedido) { + PedidoDTO dto = new PedidoDTO(); + dto.setNumero(pedido.getNumero()); + dto.setNomeCliente(pedido.getCliente().getNomRazaoSocial()); + dto.setDocumentoCliente(pedido.getCliente().getCpfCnpj()); + dto.setValorTotal(pedido.getValorTotal()); + dto.setEmissao(pedido.getEmissao()); + + for (Produto produto : pedido.getProdutos()) { + if (produto != null) { + dto.addDescricaoProduto(produto.getDescricao()); + dto.addCodigoProduto(produto.getCodigo()); + dto.addValorUnitarioProduto(produto.getValorUnitario()); + } + } + + return dto; + } + + private Pedido converteParaModelo(PedidoDTO pedidoDTO) { + + Pedido pedido = new Pedido(); + pedido.setEmissao(Calendar.getInstance()); + pedido.setNumero(pedidoDTO.getNumero()); + pedido.setValorTotal(pedidoDTO.getValorTotal()); + pedido.setCliente(clienteDao.buscaPeloId(pedidoDTO.getDocumentoCliente())); + + for (Long codigo : pedidoDTO.getCodigoProdutos()) { + if (codigo != null) { + pedido.addProduto(produtoDao.buscaPeloId(codigo)); + } + } + + return pedido; + } + +} diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java new file mode 100644 index 00000000..15ab1916 --- /dev/null +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ProdutoServico.java @@ -0,0 +1,83 @@ +package br.com.pedidoscontabilizei.servicos; + +import java.util.ArrayList; +import java.util.List; + +import br.com.pedidoscontabilizei.dao.EMF; +import br.com.pedidoscontabilizei.dao.ProdutoDao; +import br.com.pedidoscontabilizei.dto.ProdutoDTO; +import br.com.pedidoscontabilizei.modelos.Produto; + +public class ProdutoServico { + + private ProdutoDao produtoDao; + + public ProdutoServico() { + EMF emf = new EMF(); + produtoDao = new ProdutoDao(emf.createEntityManager()); + } + + public void inserir(ProdutoDTO produtoDTO) { + Produto produto = converteParaModelo(produtoDTO); + + produtoDao.inserir(produto); + } + + public void alterar(ProdutoDTO produtoDTO) { + Produto produto = converteParaModelo(produtoDTO); + + produtoDao.alterar(produto); + } + + public List buscaTodosProdutos() { + List produtos = produtoDao.buscaTodos(); + List produtosDTO = new ArrayList(); + + for (Produto produto : produtos) { + produtosDTO.add(converteParaDTO(produto)); + } + + return produtosDTO; + } + + public ProdutoDTO buscaProdutoPorCodigo(Long codigo) { + Produto produto = produtoDao.buscaPeloId(codigo); + if (produto != null) { + return converteParaDTO(produto); + } + + return null; + } + + public boolean remover(Long codigo) { + Produto produto = produtoDao.buscaPeloId(codigo); + + if (produto == null) { + return false; + } + + produtoDao.deletar(produto); + + return true; + } + + private ProdutoDTO converteParaDTO(Produto produto) { + ProdutoDTO dto = new ProdutoDTO(); + dto.setCodigo(produto.getCodigo()); + dto.setDescricao(produto.getDescricao()); + dto.setQuantidade(produto.getQuantidade()); + dto.setValorUnitario(produto.getValorUnitario()); + + return dto; + } + + private Produto converteParaModelo(ProdutoDTO produtoDTO) { + Produto produto = new Produto(); + produto.setCodigo(produtoDTO.getCodigo()); + produto.setDescricao(produtoDTO.getDescricao()); + produto.setQuantidade(produtoDTO.getQuantidade()); + produto.setValorUnitario(produtoDTO.getValorUnitario()); + + return produto; + } +} diff --git a/servico_rest/src/main/resources/META-INF/persistence.xml b/servico_rest/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..10ebc39e --- /dev/null +++ b/servico_rest/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,21 @@ + + + + + org.hibernate.ejb.HibernatePersistence + + + + + + + + + + + + \ No newline at end of file diff --git a/servico_rest/src/main/webapp/WEB-INF/web.xml b/servico_rest/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..e79e4152 --- /dev/null +++ b/servico_rest/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,28 @@ + + + + + Jersey REST Service + org.glassfish.jersey.servlet.ServletContainer + + com.sun.jersey.spi.container.ContainerResponseFilters + br.com.pedidoscontabilizei.resources.CorsFilter + + + + jersey.config.server.provider.packages + br.com.pedidoscontabilizei.resources + + 1 + + + + Jersey REST Service + /rest/* + + + \ No newline at end of file diff --git a/servico_rest/src/main/webapp/index.jsp b/servico_rest/src/main/webapp/index.jsp new file mode 100644 index 00000000..4a51d2f8 --- /dev/null +++ b/servico_rest/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Acesse nosso app PedidosContabilizei ;)

+ + diff --git a/servico_rest/target/classes/META-INF/persistence.xml b/servico_rest/target/classes/META-INF/persistence.xml new file mode 100644 index 00000000..10ebc39e --- /dev/null +++ b/servico_rest/target/classes/META-INF/persistence.xml @@ -0,0 +1,21 @@ + + + + + org.hibernate.ejb.HibernatePersistence + + + + + + + + + + + + \ No newline at end of file diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ClienteDao.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ClienteDao.class new file mode 100644 index 0000000000000000000000000000000000000000..b4fbea954f92e971c8efc5bb7cf2466657e901bf GIT binary patch literal 574 zcmah`Jx{|h5Pc4%rJ*HI5PKyC+Dc?$OVy=(EPnNoT+F^L;#je7?N{IK@E=p1>fnVQLoPy~-#vWoopO2^I9LD9oe@rv)kP)R{Cb zGz5kQYe95Y*JawrKJl01RL&_N`X;a)7*NNNTADOt?LW)Yg-iX zXJ%(FiyKOh5fHX7P-FNTad+xdC-sGQu|NI-k2Y75DBT#GvWyf!qS5;Ft z{f^^%p=@YZKUKQilz#b=^sgvS1={f~3<~UiC?CnPE4^0vX5*o9LV=yi3w8M9y7XjA z1pT4$8{y8p zL7chz(zQyxUYTdW(MGr9$R*|aSDOOIV-C`+Rtga~XvaAk*ezLihMi4H5Hco#Dk4hkH6O`mKW!eMg1qCKKKn?@Oj>c^N) z7wd!7W;9=)=yzslQ-eS@qNDCpfOOoz+zqu`u2MntnCd&6i>S0vq;X4=wJ^|L>ta{C zO%)7dmIA3QRu>oQGiv7Y?VHzUvMAuB(NI}nZ@QxR%}QZ8i&J>t!f9%1D{fS;&8ay< zy_4gbZm+uPhHSGFdp58|Q<20mdCuDS2p?1Ia&=W13Qug8FvUv``pPg2cQcfI0q1SZ zo7}^pA3K>Yern?aE>cZSpk%0Sbye`>RY`hBGIFOHF5$9;#e~IeTx?uHF0T5v>U7=E zv_!ztUWaRe^WH;a(sVPkLwUBSuxyZ4ZCu9kX}bRq4qt2T*6&%-gsN290_v? zw=LWfIPx;lrrd4R%#PU6P%Z75{9o8u##Mq&c9IGArH#ABYl!Qwty$5q*<(%FWJ?E# zoZiw6RUiWs;aeN`G0B*16}0GKHI=Kv*w(P&nCL@+YWt69oa|9Vq@B6qJO_0ED>hnY zP>0DxWH55mHXh=8Dv5{5wykvu)rqHgx+h$qR$T7gvKjM=g?2(oyec+~OERD~iJptR zX*@^a!nd)C9|(_WE;wOVy2f%LXm#5xoujuuU$~c&<3_M36H6zYr%wgOQ!Y^nq-xKL zXQo~bcFpewj=HSPLf)PFE;(tsC~$sm>Dsx}tBHE*+nmk!yKz0SRs1sJA~D|ryt8<3 zVVKtuK1pQw0mh2YkS&Tou(Md=TJi^b99V_BFh>h7Tvs@v?@wb$pV+ zIu=A9p1l#CxV&Og`c}c_BrfGe!>mz>`b zc#;2oWPO_4?PpmBQl#WI`Oo327f3O-m=t5X7m@OHAFy8%VEJueulL zczLLoL?3)G@k1HU0x2XVso7+9&di+u{N{hopTFOJ0CwO2Y)o?^H_v`-TJv(ZL+%8PYZ7%NOU}mJE)0 z%aaV*nikw^@<4_0crj*Pt3Ja{?PjCNqNN$=4BN#U2`d)X7&azVdhU6$!@Y(Hofrt& zGfMk$Y%r{c=E{N51^?H3T{zXMpnRb?6`i+r*~Th1!-{OtTW6WoOkxMS7Va_ZUN6Ti z*BvZlg&{>S;!U0R#@3{Tr~8s~&BEPQ`> mmSsr0c!m3fq7XMRR4g$}P;Ej6<;DqXf|i-3Q{gv7uP;71`Y zp{hC&pLF(}pYPs1fB$@b0XV}!3!cC*wn1X%!IMfUHAP~ylQHG=rYK0I3GS-=g)}WR z1V%Mz#$79|EG0&uIVMeRB5*W}9_6!q;U>1A!YQ4o;8HtsuQyW5Oxf^wCeS!Hsq(Rb zb_bhi3iKk<>UJ@YmA#j7t_1p#Nn}2gmdbdUY`6z1m|IjsZZ%3M&{ga01qQVY1^lU5 z*hF1X$z*3$?X;XtpgpBbOSiCmNp)1#bQ)KkgIww?h>Xs{|K847q1+V9UkN861`w=R zxda=_#=gbT1RfjE9G!e%>zz*?eD;2o^%=R%1|0sO&_S0Y#$yLPuHj*qBM*D%SNr}i D=*6A~ literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ProdutoDao.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dao/ProdutoDao.class new file mode 100644 index 0000000000000000000000000000000000000000..94ebce8e0764b4550c4939c2dc5214c811e34c8b GIT binary patch literal 572 zcmah`yH3L}6g>{5p`oQv5PKyC+Ddp~OVx$f5)e{RcPFuetJFr0gMhzcLSoq>{I*#VzQ9Mx zFg2x38{e9RMRoErYh6Im6mSjbJF?wH0XWJ?L9a6NB}Mv*S)(fF1gz!u$ZQQl_nY! zAN&LSql_~Lwf1@>zU=JIerM)0v-|7!kDmbW2HIIjFlak7+tq;I%tFe&wsRcRG7EpWR$H}4UlqN=!=N4>`B!`mF ziEsnGn7QJEqzRR7U+##Wg+aZ)P(}t~BMXQK9a=;~OPu(CxLSC6jh3NJcfP~smrz#1 zHILx{o0zT$Te!29A}B)zPYfQwHm;PwM!QV#6{?@nkpN1N37zHG;D_*N6?}qfDwOFQ zeuHYXd=)#Xg&Ar~)v7#Yryi+rJr-mq3Q~^+c@ht@69w7Da*Z`0G-LwVjRk2$L7K53 z&*DKEQILHEIamWiuS_7#SdhIaNIMqfMLft}6yz0x9IXMNZ^rP!_QTI`054bHp#|^< D5gNr2 literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/PedidoDTO.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/dto/PedidoDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..cfd6cd254642e1558f9d92c50625bd7cecd342cd GIT binary patch literal 3996 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 literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Pedido.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Pedido.class new file mode 100644 index 0000000000000000000000000000000000000000..11ba49943696eb66519a4220abea7fefa54e62a3 GIT binary patch literal 3046 zcmb7FYg5}s6g_Jm4#qqR2?;bw6Z!}Sf4PhSJ(Vz>r6qHnP1KrFwWIITQM; z+L>fBZD;zio#~J2^sFS?;ED`)yj^g)nvt} zI9}PYeZ6Fu#?R8wETu@gLn#?

+ZN0*v@tBDyn^zp0CE$!}sEusd!jZ_|EKZaZ?~EEyMG4sy!d7t^0Azw=-OY zvS~=$r?lz(DfWLkM6;qRF_jc_`>^P2+G>@%_N8Awh{vs}si@qpTy`zD%>}KwPNnWU zv_s^cU_bKo1KE0ZjH<2sb(caHgUniUdf_y}w?g*$MUq`TQMxLCfbIpgUW)=96PZ04 zW|{6!p#wM5$Y4@nAaB@mqi&U?TT~tp7|J_b_dVS;)HwRs=^q#@XX;e?g2qynR;5qs zppAwmGGVPjmj#W~L$BRQqYK@HdM)ViL_1O`PmwIwu=z-X?YPku<9r%@=qH|xP5i}( z@;F@4_K}v|*Rx_)UeQfSV(|O#krAFz^k7u-_lDm<{C-{{4xJ0ddjV*05&nr#Yqr0NI zq-W4~U3cI-3i>LT5iDv@+ zEr^;;<9j@3t1-2}g`+kOua)@>W0JM7e@}T#HAK;MJHB52si4;y74A57w=7o;)wR9h zbvB~}#h>>%-dVmn5=LXrjDV7Jowja~Eg4;$0+SK=wPk80!>(w0^S0BTSmw6l_&HNr zJa^}Do%^qj>n?#9<`k{S|IgGFf*XMv1(|3;(tPDP z$p0yVG(H8NU6b!H{c8|4!+%u?FvDq3d;q{L%yJ}f8=v$4c<>v{{lduvLmI)evB7uo zMHIY9bV8vgr`}?&l{yuCy~E|a8!)KVQk-FW^%gF)z?ZleBjkR&kbAL07VscW$o+O9 z514N81R>#;@=n87F+!Hwg=AxeJj8OGkfnAZISN@lK}hHuffeLpgsip;S&tR+HP+*V zthNg&P{_s!LPBE-e1mVfZJ`VE|MNEcJL286kZ%rG2V3UIOl$3t{05xL}I9)*>t`qPzoA#nEA^bSBQ}w I_E81?11hhtEdT%j literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Produto.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/modelos/Produto.class new file mode 100644 index 0000000000000000000000000000000000000000..37a0fb50067e073f9c22ff0c070e7d3487f19228 GIT binary patch literal 2835 zcmb7FX>-$76ur-J;>0+?b-*QQp^$D~LPS!a&?E+Dqi!9tn~<*0(!&we;z}|@`m5R* z7>0JHAKRJ!s7}w5U8Y>#`oZMlrHzWYl+JFf0}!cv7&(GWBhVR$4g;c!oAHEy&7 zoQ7Rbo*PI1>kp*eqo(wam-luz7>#JcRUKXB;G5~;yW=^!&v-HdeAzZyrX@kGmSJ#Q zWB?^3T-^{>!#k8GjZyOF7RPNhu8H>T6q9?0%97q#5vp!-135;T4t~2}Cc`p}23?g0 z8PSil>SL{lXS$`!LNOX$SzWHIm#ewiThnuSoL_LmcJ^TAj*e?2!rpZn(DHOcsiLG3 zZAWid+-o_Yv>4pCV_vA9rTM-v=1a(REuu8*+&bE|_f}VetqCpyhtJ`%Q&-Hss z>M0~!>B{ZWv3#N6WXAg`8l^G#BV&*M<=&*ByG%QZv|Bw&yVB0vuQi$bL5eQXWdtF2 zZ_q@Tygx<)qyd02>uO9UT1nCSGEo|djv1kQ_-_XL1I=i&>BtOaeQ@IA`Lrhqe3hcB zbPZ@A&_Qb#z6&NV@G!hw=j-{1E!35=N3EE~f?(ayS zS=n*;k(|>cZBg+8?a`A20eh_LBCRRfC(OkFfEgVVMX-VA^9Pt3%pDduqvAOzK^8k6 zSASaP&G2@~9lPbIVojHGl?oUCjO4>8YBR24-+6NMCnAR1&k0-H;wI7+LYJ4Oq11It zQ+Vg!K-o8qZQJ%%4Pgq)o2MISxLl8e6qD12Qv#=Va2m#2${{J}0;TW)qZ69bcwfYq z^Z`6G6&lBHh(EMW`qp@0%~t4Lx>BJDnsn(s_(9ue@`D87{Q*eC=(M?Pat;ixEUh{Y36Z5_w4FC?chPB8wnWI)zA}Bt}b-M3(!B zlp~3(MiW`?C$b76Yo`ziq{?7_gti4z{PKiWD*c2ik%YdcYA4CMpJWr~j%F&7*nqFN zKr`zg_V^THayA&OZ8;BNVPD4=MjNyl*1w5tGW%5F6;=MGvBDp;_4EzxyrxR=FC6i; z_?C8K^rVZN1twudVt-NwTQW;EOx%7Ci>Z!sr|5vb0oJ#Oh*K;x2DI<+J4WC8(>f0P OA8`H=K3q<0o#;Q<++8F9 literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ClientesResource.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/ClientesResource.class new file mode 100644 index 0000000000000000000000000000000000000000..0007db888f2f128a8dbbb5f00de457e1569e56bc GIT binary patch literal 2824 zcmbVO-*XdH7(KTwEKRpRA<#mB3KiN0Sgaswp-|e=Rs#)9C>9jmY_8=(x|`YER0hZY z!YBU)UvNf&kr{pW@A1)5&)sZdHb7?LOLq6W_xtYo&N=&S{`mXX-vC@d(Lk5L#iDOH z-i}p~B~|hQ$8$rwsLJZ8RF*FTuj)H8uolZox}gj<;)sDBfuTqCu5FcVciUPoK9Wu- zFyPcS=B2-@98cgvwoUz@wyRM-&YBb0ds(?EoEPYxn%)%XS@cRWg>LkjFtE=+zrbwg zg;Oxm*9#&yu?Kqv2D8eQx2iiu=@;x`Sqh9~J;yF@+P>1yaj++Rr~-jY?Rt4TS8T^n zE_+qJ!0J@HBBju)Q@vDJpPSBVhM!p91ePCAC0|+;pyII@i;itn-B9hwO%*6&U2t75 zv_r*J-9~d}ZarUM!ofsvksGT!GT_3VUAtUm^Fwx}QdUk>#CjBXZfj1?_exdzVNNr7 z%tRW;1K z`io^d2qYf|TV?`msQ5m$-TZ6Ih8lnu%1&G}zBz5uXx8FImpwCfT1z=s@oO!l?L%WxEUr z1Gn^#)+LAAgu6k&UC2j0kMOR*=T`rexUY-x1G=&2xbrOA>KpCvx^HU!U1#JrQEf!1 zwF8(Rqwb9n@_!DabjoTC(P!A=NpOqa_rLJW6K^fO&Eb*rJ3YbU(!hB3^bdb@4y+|i^%m;@v& zF6nG{b;zBjZ8^LH#4x-iEaARp2&U3ihS0Wc@Cbs4#t??W5HHgC{nlxX%ZgqzIYXjo z*LAb1OX1nw&5(O69ER26e`b;+1|R&K7;35FK=L13+;P2Rc-zelcJJi++uuttQfSwC z(-l;MFvb{0{VEDu+bjS16U7AXhjEW#Wgwxx2r*1ziefalyUTThODf5HDt(Qoiw$e7$ylL9!YFUbguoOIGU`tUX@hFTrhS`2%e?i7D zkH>VWx?wOZb_(0uE1lZ)?WC&;o-oYZNTZvMf)vBD?Q_Z`>)t(BuIhej@=Q`E`c0SS zmU~Pd7rIwu1xpOc8zHwPH|Vs`O-Dh7TF;d&u3+U~6iS?M4f4%0EW9mLGRcGTkvG1l zVW&_mR0^47`Jl2_-apDDcMJI)1#1iw*MgVywwiBHpmm1u>RNVlBTIlIlJ~Y2N%GpI z-5{ji1JuWHQmQYlZo4sL2V?Y|AdtwBFLqKVDJ_1bc)t-DCJ$Rwu~S|Zjv(>nEz5TO zI#Z)f^+h9nXa~|h6V!z{%z=7=z9D*a0yLAfX}m?2Ml+*%Xz42=U;N)O8i)POC~ng_ z)^WfH;$+dogS!Nhpmm6>Q6J_r!3Sxln7PC_y%E!i2bY))qH8WB7JJQfV!78;6I!pi znt1A)S8S$;4=8S&B0r?aDn;GG7~WyrXPE57?lL46c!mw1brH|;g4hPINeBVFM2==J HyDi`sl}&)) literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/PedidosResource.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/resources/PedidosResource.class new file mode 100644 index 0000000000000000000000000000000000000000..a12d913dedd97b2903904d78799d40f0c5a3d0d2 GIT binary patch literal 2805 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 literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ClienteServico.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/ClienteServico.class new file mode 100644 index 0000000000000000000000000000000000000000..c1fc339eb6b18dd64a44322f0d734c96dcfe84a5 GIT binary patch literal 3372 zcmb7GZBr9h6n<_JTu4^lR78udRf{A*pYZEfxQ zd%yM%^ot+tOdG~J)9I&nreFIH`a3$c&)sYw31cY3kbSx5KIb{-Jm=i~^WR^71#k-A zDewuLoUvoNm5t?%w3)UFx|MUZ88c(98fL6u*h{8v6=Fjf)5tl-c=Zb(1>Q(15rm46f>wd>7RFvcbT0R_tJsCz0=snE&>UkV=a|k)O3P_;hAnWoC!CbQ zE;C1V!7MmNPB&szM)4q8&>^|*6*$tfrFnR=2?G06G+>87OVZ34ql?)Y!=BJ)GKN5V z($cleq-LA)*?Spq=FNh@sd|ZhM8%k4zmc6Kw|bjpRhUH@D`t*JCWG(msk_73sN=-d zcz80%unwy@f~Ob+wX|f|jxna$T8ahDP!?0$!mH;y>msge(=EYK6$jBHu%}dlN_mo8 zg+eE;Zl%!b$e0pO+yc?(Hes>hJSDQQ?ViqJi;kIz zB`GvkqG{Zm%W2M{O;w!VWYAxaO1e6P0XIX>s5p%i%)|x*1}x7;CX>aorbPag4Ez86_;^^tyQVPVOjP10<3|GhqsYnnW>bDQP7KDOQ#

Bc~ueyxkzOqxt9ox*!Z7b=rt6o>} z2Hq41xo*ZdXD%`M-Id6tBZ|nb0xQ+UTIqRC#`cOOj|aM<|E{GAgpju`}lkXDB~Al*=#FHiYL_Zpo{73*;3nR9IJy zy)sG8#U-^G3iY4_Dqb@}A!i{B7dX zs|auf=!&c%_yFqE8k&=l2WXkPME3@Gv%9>TBs=J0uM2#zw8aDF zW`q$T;0{9eB1%ZX6QsV2zFHUixxI@n4*YKy$8mzLPLjP3PrK3lMPdzn9*}Vq`4RE} zXPCR^QoZ+aR^V*l2khS$xQ`10zacRijT~FU3-^)q;ktZ1Ch+~kzoYkv5O6aqIf2<~ zWH7BbjBb82oaD71M_rZ?H}eBtA{u#UO)#UJis-|no7-;YU8cm3>qL?jDOtU|ZZ*Ys z(_GsN-$Q~nC=d#GoW!YzLAgcX6$+wMt~`xpxjJQl)WT~FBNhD}O_3-gxhEube}yP| z={`z2$B1*hBC(z8wd;h28KSEm(GnR7@gH<3)U$w&wC8=<^WIhE{SP$w?|Q;90(aLL zbhxEBMcmV5aE3BHOJ@BQEV|ZNbgi>!^%Nvi;<9L$EPV2y^jO^TSg;@FS=@zGl!>@e zge9+qB9`QJrHEVd`d$$qxCJe>N~xe1h&)J67tx6!mUkFE^dVcOr0mE#uZYWr0|bZg z5jF1PA3qy6Gf9xi$1amkiuhD|{;Y`4<@JjqzLeLmiuigHlgmWDLMBNvNzwZ#nT$Px RNvX#qlX8!JL&iRQ`yYa7FYW*U literal 0 HcmV?d00001 diff --git a/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/PedidoServico.class b/servico_rest/target/classes/br/com/pedidoscontabilizei/servicos/PedidoServico.class new file mode 100644 index 0000000000000000000000000000000000000000..941e2ac2e6077125ea00a4edf7bccdbfa89ea210 GIT binary patch literal 5068 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 F&A-PQQ-S~h literal 0 HcmV?d00001 diff --git a/servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF b/servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..fc4b1fe6 --- /dev/null +++ b/servico_rest/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: Luiz Gustavo Caciato +Build-Jdk: 1.8.0_101 +Created-By: Maven Integration for Eclipse + diff --git a/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties new file mode 100644 index 00000000..cb069cb3 --- /dev/null +++ b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Sun Aug 07 23:44:32 BRT 2016 +version=0.0.1-SNAPSHOT +groupId=br.com +m2e.projectName=pedidoscontabilizei +m2e.projectLocation=C\:\\Users\\Luiz Gustavo Caciato\\workspace\\pedidoscontabilizei\\servico_rest +artifactId=pedidoscontabilizei diff --git a/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml new file mode 100644 index 00000000..db1050db --- /dev/null +++ b/servico_rest/target/m2e-wtp/web-resources/META-INF/maven/br.com/pedidoscontabilizei/pom.xml @@ -0,0 +1,107 @@ + + 4.0.0 + br.com + pedidoscontabilizei + war + 0.0.1-SNAPSHOT + pedidoscontabilizei Maven Webapp + http://maven.apache.org + + + + + snapshot-repository.java.net + Java.net Snapshot Repository for Maven + https://maven.java.net/content/repositories/snapshots/ + default + + + + + 2.22.1 + UTF-8 + + + + + + org.glassfish.jersey + jersey-bom + ${jersey.version} + pom + import + + + + + + + javax.servlet + servlet-api + 2.4 + + + + org.glassfish.jersey.ext + jersey-mvc-jsp + + + + javax.servlet + jstl + 1.2 + + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + + + javax.ws.rs + javax.ws.rs-api + 2.0.1 + + + + org.glassfish.jersey.media + jersey-media-moxy + 2.22.2 + + + + org.hibernate + hibernate-core + 5.1.0.Final + + + + org.hibernate + hibernate-entitymanager + 5.1.0.Final + + + + + mysql + mysql-connector-java + 5.1.38 + + + + + + + pedidoscontabilizei + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + + From c19a8b7b85e7e256d97a7d41271c94e75a8b1f79 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Thu, 11 Aug 2016 20:11:37 -0300 Subject: [PATCH 05/12] Aplicado console.log caso falha no request da api --- .../app/controllers/pedidos_controller.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app_pedidoscontabilizei/app/controllers/pedidos_controller.js b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js index 252e0fa1..2096ae3f 100644 --- a/app_pedidoscontabilizei/app/controllers/pedidos_controller.js +++ b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js @@ -128,14 +128,23 @@ function buscaDadosIniciais() { pedidoAPI.buscaTodos().success(function (data) { $scope.pedidos = data; + }) + .error(function (data) { + console.log(data); }); clienteAPI.buscaTodos().success(function (data) { $scope.clientes = data; + }) + .error(function (data) { + console.log(data); }); produtoAPI.buscaTodos().success(function (data) { $scope.produtos = data; + }) + .error(function (data) { + console.log(data); }); } From e805c43e9afcc354ee4e96271f348c7a30b6bda4 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Thu, 11 Aug 2016 23:13:17 -0300 Subject: [PATCH 06/12] Ajuste no nome do campo que representa CpfCnpj na DTO --- .../br/com/pedidoscontabilizei/dto/ClienteDTO.java | 10 +++++----- .../pedidoscontabilizei/servicos/ClienteServico.java | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java index c96dcc99..0285e5df 100644 --- a/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/dto/ClienteDTO.java @@ -5,7 +5,7 @@ @XmlRootElement public class ClienteDTO { - private String cpfCnpj; + private String documentoCliente; private String nomRazaoSocial; private String telefone; private String email; @@ -13,12 +13,12 @@ public class ClienteDTO { public ClienteDTO() { } - public String getCpfCnpj() { - return cpfCnpj; + public String getDocumentoCliente() { + return documentoCliente; } - public void setCpfCnpj(String cpfCnpj) { - this.cpfCnpj = cpfCnpj; + public void setDocumentoCliente(String cpfCnpj) { + this.documentoCliente = cpfCnpj; } public String getNomRazaoSocial() { diff --git a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java index 34578f55..3a1f39ab 100644 --- a/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java +++ b/servico_rest/src/main/java/br/com/pedidoscontabilizei/servicos/ClienteServico.java @@ -62,7 +62,7 @@ public boolean remover(String cpf) { private ClienteDTO converteParaDTO(Cliente cliente) { ClienteDTO dto = new ClienteDTO(); - dto.setCpfCnpj(cliente.getCpfCnpj()); + dto.setDocumentoCliente(cliente.getCpfCnpj()); dto.setNomRazaoSocial(cliente.getNomRazaoSocial()); dto.setEmail(cliente.getEmail()); dto.setTelefone(cliente.getTelefone()); @@ -72,7 +72,7 @@ private ClienteDTO converteParaDTO(Cliente cliente) { private Cliente converteParaModelo(ClienteDTO clienteDTO) { Cliente cliente = new Cliente(); - cliente.setCpfCnpj(clienteDTO.getCpfCnpj()); + cliente.setCpfCnpj(clienteDTO.getDocumentoCliente()); cliente.setNomRazaoSocial(clienteDTO.getNomRazaoSocial()); cliente.setEmail(clienteDTO.getEmail()); cliente.setTelefone(clienteDTO.getTelefone()); From 5f35699517eb5b1b263793aebddb2fad8aced122 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Thu, 11 Aug 2016 23:14:21 -0300 Subject: [PATCH 07/12] Ajustado mapeamento da combo produto --- .../app/controllers/pedidos_controller.js | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/app_pedidoscontabilizei/app/controllers/pedidos_controller.js b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js index 2096ae3f..92360266 100644 --- a/app_pedidoscontabilizei/app/controllers/pedidos_controller.js +++ b/app_pedidoscontabilizei/app/controllers/pedidos_controller.js @@ -22,19 +22,19 @@ resetPedidos(); pedidoAPI.buscaPorCodigo(codigo).success(function (data) { - $scope.pedido = data; - $scope.escondeAdicionar = true; + $scope.pedido = data; + $scope.escondeAdicionar = true; let tamanho = data.codigoProdutos.length; for (var i = 0; i < tamanho; i++) { - var obj = new Object(); + var obj = new Object(); obj.codigo = data.codigoProdutos[i]; obj.descricao = data.descricaoProdutos[i]; obj.valorUnitario = data.valorUnitarioProdutos[i]; $scope.codigoProdutos.push(obj.codigo); $scope.produtosPedido.push(obj); - } + } }) } @@ -43,7 +43,7 @@ alert("Ops! Os dados do seu pedido são inválidos!"); } - pedido.codigoProdutos = $scope.codigoProdutos; + pedido.codigoProdutos = $scope.codigoProdutos; pedidoAPI.inserir(pedido).success(function (data) { limpaDados(); @@ -73,13 +73,13 @@ }); } - $scope.adicionarProduto = function (codigo) { - if (codigo === '' || codigo === undefined) { + $scope.adicionarProduto = function (produto) { + if (produto === undefined) { return; } let existente = $scope.produtosPedido.some(function (arg) { - return arg.codigo == codigo; + return arg.codigo == produto.codigo; }) if (existente) { @@ -87,13 +87,10 @@ return false; } - produtoAPI.buscaPorCodigo(codigo).success(function (data) { - $scope.codigoProdutos.push(data.codigo); - - $scope.produtosPedido.push(data); + $scope.codigoProdutos.push(produto.codigo); + $scope.produtosPedido.push(produto); - calculaTotal(); - }) + calculaTotal(); } $scope.removerProduto = function (codigo) { @@ -126,6 +123,10 @@ } function buscaDadosIniciais() { + $scope.pedidos = []; + $scope.produtos = []; + $scope.clientes = []; + pedidoAPI.buscaTodos().success(function (data) { $scope.pedidos = data; }) From 234003754dbc4fa591581f1142037574c9b08825 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Thu, 11 Aug 2016 23:15:08 -0300 Subject: [PATCH 08/12] Corrigido nome do campo para Cpf e Cnpj --- .../app/controllers/clientes_controller.js | 9 ++++++--- app_pedidoscontabilizei/views/clientes/listar.html | 13 +++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app_pedidoscontabilizei/app/controllers/clientes_controller.js b/app_pedidoscontabilizei/app/controllers/clientes_controller.js index 25d80724..60c3bc47 100644 --- a/app_pedidoscontabilizei/app/controllers/clientes_controller.js +++ b/app_pedidoscontabilizei/app/controllers/clientes_controller.js @@ -14,10 +14,12 @@ buscarTodos(); } - $scope.carregarFormulario = function (cpf) { - clienteAPI.buscaPorCPF(cpf).success(function (data) { + $scope.carregarFormulario = function (documento) { + clienteAPI.buscaPorCPF(documento).success(function (data) { $scope.cliente = data; $scope.escondeAdicionar = true; + + $('#documentoCliente').attr('readonly', 'documentoCliente'); }); } @@ -67,10 +69,11 @@ } function resetCliente() { - $('#nomRazaoSocial').val(''); + $('#nomRazaoSocial').val(''); $('#cpfCnpj').val(''); $('#telefone').val(''); $('#telefone').val(''); + $('#documentoCliente').removeAttr('readonly', 'documentoCliente'); } function mostraErro(data) { diff --git a/app_pedidoscontabilizei/views/clientes/listar.html b/app_pedidoscontabilizei/views/clientes/listar.html index 4bc26492..dc40781d 100644 --- a/app_pedidoscontabilizei/views/clientes/listar.html +++ b/app_pedidoscontabilizei/views/clientes/listar.html @@ -10,9 +10,10 @@

@@ -52,14 +53,14 @@ {{ cliente.nomRazaoSocial }} - {{ cliente.cpfCnpj }} + {{ cliente.documentoCliente }} {{ cliente.email }} {{ cliente.telefone }} - - From 2c1fe52c7560c676028ad757bd908b1a32a542eb Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Thu, 11 Aug 2016 23:16:28 -0300 Subject: [PATCH 09/12] Alterado o formato dos campos na grid de produto --- app_pedidoscontabilizei/views/pedidos/listar.html | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/app_pedidoscontabilizei/views/pedidos/listar.html b/app_pedidoscontabilizei/views/pedidos/listar.html index 14dc04f5..26eef34d 100644 --- a/app_pedidoscontabilizei/views/pedidos/listar.html +++ b/app_pedidoscontabilizei/views/pedidos/listar.html @@ -15,17 +15,16 @@
-
-
+
@@ -35,7 +34,7 @@ Adicionar Produto - +
@@ -88,7 +87,7 @@ - + - +
Código Descrição
{{ pedido.numero }} {{ pedido.nomeCliente }}{{ pedido.valorTotal }}{{ pedido.valorTotal | currency:"R$ " }} From 21f4d6bfb28daa0154b6cad916914270e41649d2 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Caciatori Date: Thu, 11 Aug 2016 23:17:50 -0300 Subject: [PATCH 10/12] Alteado o mapeamento da Combo de Produto e Cliente --- app_pedidoscontabilizei/views/produtos/listar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pedidoscontabilizei/views/produtos/listar.html b/app_pedidoscontabilizei/views/produtos/listar.html index a227d6d2..2ca30c80 100644 --- a/app_pedidoscontabilizei/views/produtos/listar.html +++ b/app_pedidoscontabilizei/views/produtos/listar.html @@ -50,7 +50,7 @@ {{ produto.codigo }} {{ produto.descricao }} {{ produto.quantidade }}{{ produto.valorUnitario }}{{ produto.valorUnitario | currency:"R$ " }}