Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions src/one/digitalinovation/laboojava/console/Start.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

/**
* Classe responsável por controlar a execução da aplicação.
*
* @author thiago leite
*/
public class Start {
Expand All @@ -25,6 +26,7 @@ public class Start {

/**
* Método utilitário para inicializar a aplicação.
*
* @param args Parâmetros que podem ser passados para auxiliar na execução.
*/
public static void main(String[] args) {
Expand All @@ -33,7 +35,7 @@ public static void main(String[] args) {

String opcao = "";

while(true) {
while (true) {

if (clienteLogado == null) {

Expand All @@ -48,13 +50,13 @@ public static void main(String[] args) {
System.out.println("Selecione uma opção:");
System.out.println("1 - Cadastrar Livro");
System.out.println("2 - Excluir Livro");
//TODO Desafio: Consultar Livro(nome)
// TODO Desafio: Consultar Livro(nome)
System.out.println("3 - Cadastrar Caderno");
System.out.println("4 - Excluir Caderno");
//TODO Desafio: Consultar Caderno(matéria)
// TODO Desafio: Consultar Caderno(matéria)
System.out.println("5 - Fazer pedido");
System.out.println("6 - Excluir pedido");
//TODO Desafio: Consultar Pedido(código)
// TODO Desafio: Consultar Pedido(código)
System.out.println("7 - Listar produtos");
System.out.println("8 - Listar pedidos");
System.out.println("9 - Deslogar");
Expand All @@ -73,10 +75,13 @@ public static void main(String[] args) {
produtoNegocio.excluir(codigoLivro);
break;
case "3":
//TODO Cadastrar Caderno
Caderno caderno = LeitoraDados.lerCaderno();
produtoNegocio.salvar(caderno);
break;
case "4":
//TODO Excluir Caderno
System.out.println("Digite o código do caderno");
String codigoCaderno = LeitoraDados.lerDado();
produtoNegocio.excluir(codigoCaderno);
break;
case "5":
Pedido pedido = LeitoraDados.lerPedido(banco);
Expand All @@ -97,7 +102,7 @@ public static void main(String[] args) {
produtoNegocio.listarTodos();
break;
case "8":
//TODO Listar todos os Pedidos
pedidoNegocio.listarTodosPedidos();
break;
case "9":
System.out.println(String.format("Volte sempre %s!", clienteLogado.getNome()));
Expand All @@ -116,6 +121,7 @@ public static void main(String[] args) {

/**
* Procura o usuário na base de dados.
*
* @param cpf CPF do usuário que deseja logar na aplicação
*/
private static void identificarUsuario(String cpf) {
Expand Down
55 changes: 55 additions & 0 deletions src/one/digitalinovation/laboojava/entidade/Caderno.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package one.digitalinovation.laboojava.entidade;

import one.digitalinovation.laboojava.entidade.constantes.Materias;

public class Caderno extends Produto {

private Materias tipo;

public Materias getTipo() {
return tipo;
}

public void setTipo(String a) {

Materias tipo = getTipo();

switch (a) {
case "M2":
tipo = Materias.M2;
break;
case "M5":
tipo = Materias.M5;
break;
case "M10":
tipo = Materias.M10;
break;
default:

System.out.println("Quantidade inválida!");
return;


}

this.tipo = tipo;
}

/**
* {@inheritDoc}.
*/
@Override
public double calcularFrete() {
return (getPreco() * getQuantidade()) * (1 + tipo.getFator());
}

@Override
public String toString() {
return "Caderno{" +
"Tipo='" + tipo.name() + '\'' +
", codigo='" + getCodigo() + '\'' +
", preço='" + getPreco() + '\'' +
'}';
}

}
79 changes: 73 additions & 6 deletions src/one/digitalinovation/laboojava/entidade/Pedido.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,82 @@
import java.util.List;

/**
* Classe que representa a entidade pedido, qual é a compra dos produtos por um cliente.
* Classe que representa a entidade pedido, qual é a compra dos produtos por um
* cliente.
*
* @author thiago leite
*/
public class Pedido {

//TODO Preencher esta classe
private String codigo;
private Cliente cliente;
private List<Produto> produtos;
private Double total;

public Pedido() { // cosntrutor

this.produtos = new ArrayList<>();
}

public void setCodigo(String codigo) {
this.codigo = codigo;
}

public void setCliente(Cliente cliente) {
this.cliente = cliente;
}

public void setProdutos(List<Produto> list) {
produtos = list;
}

public void setTotal(Double total) {
this.total = total;
}

public String getCodigo() {
return codigo;
}

public Cliente getCliente() {
return cliente;
}

public List<Produto> getProdutos() {
return produtos;
}

public Double getTotal() {
return total;
}

public String getProdutosComprados() {

StringBuilder produtos = new StringBuilder();
produtos.append("[");
for (Produto produto : getProdutos()) {
produtos.append(produto.toString());
produtos.append("Qtd:");
produtos.append(produto.getQuantidade());
produtos.append(" ");

}
produtos.append("] ");
return produtos.toString();

}

@Override
public String toString() {
return "Pedido{" +
"codigo='" + codigo + '\'' +
", cliente=" + cliente +
", produtos=" + getProdutosComprados() +
", total=" + total +
'}';

}



//codigo
//cliente
//produtos
//total
}
18 changes: 9 additions & 9 deletions src/one/digitalinovation/laboojava/entidade/Produto.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package one.digitalinovation.laboojava.entidade;

/**
* Classe que representa a abstração dos produtos que podem ser vendidos pela loja.
* Classe que representa a abstração dos produtos que podem ser vendidos pela
* loja.
*
* @author thiago leite
*/
public abstract class Produto {
Expand All @@ -21,7 +23,8 @@ public abstract class Produto {
*/
private int quantidade;

public Produto() {}
public Produto() {
}

public String getCodigo() {
return codigo;
Expand All @@ -47,10 +50,7 @@ public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}

/**
* Calcula o preço do frete para os produtos comprados. Este cálculo pode
* variar de acordo com o produto
* @return valor do frete para o determinado produto
*/
//TODO Método de cálculo de frete
}
public abstract double calcularFrete();


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

package one.digitalinovation.laboojava.entidade.constantes;

public enum Materias {

M2(2),

M5(3),

M10(5);

private double mult;


Materias(double mult) {
this.mult = mult / 100;
}

public double getFator() {
return mult;
}

}
53 changes: 36 additions & 17 deletions src/one/digitalinovation/laboojava/negocio/PedidoNegocio.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

/**
* Classe para manipular a entidade {@link Pedido}.
*
* @author thiago leite
*/
public class PedidoNegocio {
Expand All @@ -21,6 +22,7 @@ public class PedidoNegocio {

/**
* Construtor.
*
* @param banco Banco de dados para ter armazenar e ter acesso os pedidos
*/
public PedidoNegocio(Banco banco) {
Expand All @@ -30,20 +32,21 @@ public PedidoNegocio(Banco banco) {
private double calcularTotal(List<Produto> produtos, Cupom cupom) {

double total = 0.0;
for (Produto produto: produtos) {
for (Produto produto : produtos) {
total += produto.calcularFrete();
}

if (cupom != null) {
return total * (1 - cupom.getDesconto());
return total * (1 - cupom.getDesconto());
} else {
return total;
return total;
}

}

/**
* Salva um novo pedido sem cupom de desconto.
*
* @param novoPedido Pedido a ser armazenado
*/
public void salvar(Pedido novoPedido) {
Expand All @@ -52,24 +55,31 @@ public void salvar(Pedido novoPedido) {

/**
* Salva um novo pedido com cupom de desconto.
*
* @param novoPedido Pedido a ser armazenado
* @param cupom Cupom de desconto a ser utilizado
* @param cupom Cupom de desconto a ser utilizado
*/
public void salvar(Pedido novoPedido, Cupom cupom) {

//Definir padrão código
//Pegar data do dia corrente
//Formatar código

//Setar código no pedido
//Setar cliente no pedido
//Calcular e set total
//Adicionar no banco
//Mensagem
String codigo = "PE%4D%2D%04d";
LocalDate hoje = LocalDate.now();
codigo = String.format(codigo, hoje.getYear(), hoje.getMonthValue(), bancoDados.getPedidos().length);

// Setar código no pedido
novoPedido.setCodigo(codigo);
// Setar cliente no pedido
novoPedido.setCliente(bancoDados.getCliente());
// Calcular e set total
novoPedido.setTotal(calcularTotal(novoPedido.getProdutos(), cupom));
// Adicionar no banco
bancoDados.adicionarPedido(novoPedido);
// Mensagem
System.out.println("Pedido salvo com sucesso");
}

/**
* Exclui um pedido a partir de seu código de rastreio.
*
* @param codigo Código do pedido
*/
public void excluir(String codigo) {
Expand All @@ -92,9 +102,18 @@ public void excluir(String codigo) {
}
}

/**
* Lista todos os pedidos realizados.
*/
//TODO Método de listar todos os pedidos
public void listarTodosPedidos() {

if (bancoDados.getPedidos().length == 0) {
System.out.println("Não existem pedidos cadastrados");
} else {

for (Pedido pedido : bancoDados.getPedidos()) {
System.out.println(pedido.toString());
}
}
}



}
Loading