Skip to content

Commit

Permalink
fix: arrumado últimos erros da PR#63
Browse files Browse the repository at this point in the history
  • Loading branch information
tiagospeckart committed Aug 1, 2023
1 parent a392114 commit a233861
Show file tree
Hide file tree
Showing 15 changed files with 95 additions and 69 deletions.
8 changes: 3 additions & 5 deletions src/main/java/org/ravin/App.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package org.ravin;

import org.ravin.utils.constants.Constants;
import org.ravin.utils.exceptions.EntidadeNaoEncontradaException;
import org.ravin.utils.exceptions.MesaNaoDisponivelException;
import org.ravin.views.cardapio.SubmenuCardapio;
import org.ravin.views.cliente.SubmenuCliente;
import org.ravin.views.comanda.SubmenuComanda;
Expand All @@ -15,7 +13,7 @@

public class App {

public static void main(String[] args) throws EntidadeNaoEncontradaException, MesaNaoDisponivelException {
public static void main(String[] args) {
printLogotipo();
System.out.println(Constants.BEM_VINDO);
mainMenu();
Expand All @@ -28,7 +26,7 @@ private static void printLogotipo() {
}
}

private static void mainMenu() throws EntidadeNaoEncontradaException, MesaNaoDisponivelException {
private static void mainMenu() {
boolean exec = true;
while (exec) {
String opcao = solicitaEntradaDeDado(menuInicial());
Expand All @@ -42,7 +40,7 @@ private static void mainMenu() throws EntidadeNaoEncontradaException, MesaNaoDis
}

// Função para processar a opção do menu selecionada pelo usuário
private static boolean processaOpcaoMenu(String opcao) throws EntidadeNaoEncontradaException, MesaNaoDisponivelException {
private static boolean processaOpcaoMenu(String opcao) {
switch (opcao) {
case "1" -> {
SubmenuCliente.menuCliente();
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/org/ravin/controllers/ReservaController.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,13 @@ public ReservaController(IReservaService reservaService) {

@Override
public void inserir(Reserva reserva) throws MesaNaoDisponivelException {
reservaService.inserir(reserva);
try {
reservaService.inserir(reserva);
} catch (org.ravin.utils.exceptions.DataIndisponivelException e) {
throw new RuntimeException(e);
} catch (org.ravin.utils.exceptions.ComandaEmMesaException e) {
throw new RuntimeException(e);
}
}

@Override
Expand Down
40 changes: 29 additions & 11 deletions src/main/java/org/ravin/services/reserva/ReservaService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
import org.ravin.models.Reserva;
import org.ravin.services.reserva.interfaces.IReservaService;
import org.ravin.services.reserva.interfaces.IVerificarComandaEmMesaService;
import org.ravin.utils.enums.StatusMesa;
import org.ravin.utils.exceptions.ComandaEmMesaException;
import org.ravin.utils.exceptions.DataIndisponivelException;
import org.ravin.utils.exceptions.MesaNaoDisponivelException;

import java.util.Date;
Expand All @@ -32,18 +35,33 @@ public ReservaService (IVerificarComandaEmMesaService verificarComandaService) {
/**
* Insere uma nova reserva.
*
* <p>Este método tenta inserir uma nova reserva apenas se a data estiver disponível e não houver comanda associada à mesa.
* <p>Este método tenta inserir uma nova reserva apenas se a data e a mesa estiverem disponíveis e não houver comanda associada à mesa.
* Além disso, verifica se os parâmetros da reserva são válidos (não nulos).
*
* @param reserva a reserva a ser inserida.
* @throws MesaNaoDisponivelException se a mesa não estiver disponível para a data selecionada.
* @param reserva a reserva a ser inserida. Não pode ser nula e deve conter uma data e mesa válidas.
* @throws IllegalArgumentException se a reserva, a data ou a mesa forem nulas.
* @throws MesaNaoDisponivelException se a mesa já estiver ocupada.
* @throws DataIndisponivelException se a data selecionada não estiver disponível para a mesa especificada.
* @throws ComandaEmMesaException se existir uma comanda associada à mesa selecionada.
*/
@Override
public void inserir(Reserva reserva) throws MesaNaoDisponivelException {
if (estaDisponivel(reserva.getData()) && !verificarComandaService.verificarComandaEmMesa(reserva.getMesa())) {
inserir(reserva);
} else {
throw new MesaNaoDisponivelException("Mesa não disponível para a data selecionada.");
public void inserir(Reserva reserva) throws MesaNaoDisponivelException, DataIndisponivelException, ComandaEmMesaException {
if (reserva == null || reserva.getData() == null || reserva.getMesa() == null) {
throw new IllegalArgumentException("Reserva, data ou mesa não podem ser nulos.");
}

if (reserva.getMesa().getStatusMesa() != StatusMesa.LIVRE) {
throw new MesaNaoDisponivelException("A mesa já está ocupada.");
}

if (!estaDisponivel(reserva.getData(), reserva.getMesa())) {
throw new DataIndisponivelException("A data selecionada não está disponível.");
}

if (verificarComandaService.verificarComandasAbertasEmMesa(reserva.getMesa())) {
throw new ComandaEmMesaException("Existe uma comanda associada à mesa selecionada.");
}

reservaRepository.inserir(reserva);
}

/**
Expand Down Expand Up @@ -122,9 +140,9 @@ public boolean remover(Reserva reserva) {
* @return {@code true} se a data estiver disponível, {@code false} caso contrário.
*/
@Override
public boolean estaDisponivel(Date data) {
public boolean estaDisponivel(Date data, Mesa mesa) {
for (Reserva reserva : reservaRepository.recuperarTodos()) {
if (reserva.getData().equals(data)) {
if (reserva.getData().equals(data) && reserva.getMesa().equals(mesa)) {
return false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class VerificarComandaEmMesaService implements IVerificarComandaEmMesaSer
* @return true se houver comandas ativas vinculadas à mesa, false caso contrário.
*/
@Override
public boolean verificarComandaEmMesa(Mesa mesa) {
public boolean verificarComandasAbertasEmMesa(Mesa mesa) {
List<Comanda> comandasAtivas = comandaRepository.recuperarListaPorMesaEStatus(mesa, StatusComanda.ABERTA);
return !comandasAtivas.isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.ravin.models.Cliente;
import org.ravin.models.Mesa;
import org.ravin.models.Reserva;
import org.ravin.utils.exceptions.ComandaEmMesaException;
import org.ravin.utils.exceptions.DataIndisponivelException;
import org.ravin.utils.exceptions.MesaNaoDisponivelException;

import java.util.Date;
Expand All @@ -11,7 +13,7 @@

public interface IReservaService {

void inserir(Reserva reserva) throws MesaNaoDisponivelException;
void inserir(Reserva reserva) throws MesaNaoDisponivelException, DataIndisponivelException, ComandaEmMesaException;

Optional<Reserva> recuperarPorId(int id);

Expand All @@ -28,5 +30,5 @@ public interface IReservaService {

List<Reserva> recuperarReservasPorMesa(Mesa mesa);

boolean estaDisponivel(Date data);
public boolean estaDisponivel(Date data, Mesa mesa) ;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
import org.ravin.models.Mesa;

public interface IVerificarComandaEmMesaService {
boolean verificarComandaEmMesa(Mesa mesa);
boolean verificarComandasAbertasEmMesa(Mesa mesa);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.ravin.utils.exceptions;

public class ComandaEmMesaException extends Exception {
public ComandaEmMesaException(String message) {
super(message);
}

public ComandaEmMesaException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.ravin.utils.exceptions;

public class DataIndisponivelException extends Exception {
public DataIndisponivelException(String message) {
super(message);
}

public DataIndisponivelException(String message, Throwable cause) {
super(message, cause);
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/ravin/views/View.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

public class View {

public final static ImageIcon icon = new ImageIcon(Objects.requireNonNull(View.class.getResource("/images/logo.png")));
public final static ImageIcon icon = new ImageIcon(Objects.requireNonNull(View.class.getResource("../../../images/logo.png")));

public static void exibeDialogo(String mensagem){
// JOptionPane.showMessageDialog(null, mensagem);
Expand Down
12 changes: 8 additions & 4 deletions src/main/java/org/ravin/views/estoque/RecuperarEstoqueView.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,19 @@ static void pesquisarEstoque(IEstoqueController estoqueController) {
}

static void listarEstoque(IEstoqueController estoqueController) {
String texto = "";
StringBuilder texto = new StringBuilder();
List<Estoque> listaEstoque = estoqueController.recuperarTodos();
if(listaEstoque.size() > 0){
for (Estoque estoque : listaEstoque) {
texto += "Código: " + estoque.getProduto().getCodigo() + " Quantidade: " + estoque.getQuantidade() + " Nome: " + estoque.getProduto().getNome()+ (estoque.getProduto().isAtivo() ? " " : " (INATIVO) ") + "\n";
texto.append("Código: ").append(estoque.getProduto().getCodigo()).
append(" Quantidade: ").append(estoque.getQuantidade()).
append(" Nome: ").append(estoque.getProduto().getNome()).
append(estoque.getProduto().isAtivo() ? " " : " (INATIVO) ").
append("\n");
}
}else{
texto = "Estoque vazio!";
texto = new StringBuilder("Estoque vazio!");
}
exibeDialogo(texto);
exibeDialogo(texto.toString());
}
}
3 changes: 1 addition & 2 deletions src/main/java/org/ravin/views/mesa/CadastrarMesaView.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ public class CadastrarMesaView {

static void cadastrarMesa(IMesaController mesaController) {
try {
String nome = solicitaEntradaDeDadoValida("Informe o nome da Mesa: ");
String codigo = solicitaEntradaDeDadoValida("Informe o código da Mesa: ");
int numero = Integer.parseInt(solicitaEntradaDeDadoValida("Informe o número da Mesa: "));
int quantidadeMaxima = Integer.parseInt(solicitaEntradaDeDadoValida("Informe a quantidade máxima de lugares da Mesa: "));
Expand All @@ -28,7 +27,7 @@ static void cadastrarMesa(IMesaController mesaController) {

mesaController.inserir(mesa);
exibeDialogo("Mesa cadastrada com sucesso!");
imprimeMesa(mesaController.recuperarPorCodigo(mesa.getCodigo()));
imprimeMesa(mesa);
} catch (InputMismatchException e) {
exibeDialogo("Por favor, insira os dados corretamente!\nCadastro não finalizado...");
e.printStackTrace();
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/ravin/views/mesa/SubmenuMesa.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ static void imprimeMesa(Mesa mesa) {
"ID: " + mesa.getId() +
"\n Código: " + mesa.getCodigo() +
"\n Número: " + mesa.getNumero() +
"\n Funcionário responsável: " + mesa.getFuncionario().getNome() +
"\n Funcionário responsável: " + (mesa.getFuncionario() != null ? mesa.getFuncionario().getNome() : "N/A") +
"\n Quantidade Máxima: " + mesa.getQuantidadeMaxima() +
"\n Status: " + mesa.getStatusMesa().toString() +
"\n Criado Em: " + mesa.getCriadoEm() +
Expand Down
25 changes: 4 additions & 21 deletions src/main/java/org/ravin/views/reserva/CadastrarReservaView.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,22 @@
import org.ravin.models.Reserva;
import org.ravin.utils.DateUtils;
import org.ravin.utils.exceptions.EntidadeNaoEncontradaException;
import org.ravin.utils.exceptions.MesaNaoDisponivelException;

import java.util.Date;
import java.util.InputMismatchException;

import static org.ravin.views.View.exibeDialogo;
import static org.ravin.views.View.solicitaEntradaDeDado;
import static org.ravin.views.cliente.CadastrarClienteView.cadastrarCliente;
import static org.ravin.views.reserva.SubmenuReserva.imprimeReserva;

public class CadastrarReservaView {
static void cadastrarReserva(IReservaController reservaController, IClienteController clienteController, IMesaController mesaController) {
Cliente cliente = new Cliente();
try {
String cpfCliente = solicitaEntradaDeDado("Informe o CPF do cliente:");
cliente = clienteController.recuperarPorCpf(cpfCliente);
if (cliente == null) {
exibeDialogo("Cliente não encontrado! Vamos cadastrá-lo agora.");
cadastrarCliente(clienteController);
cliente = clienteController.recuperarPorCpf(cpfCliente);
if (cliente == null) {
exibeDialogo("Ocorreu um erro ao tentar cadastrar o cliente. Tente novamente.");
return;
}
}
Cliente cliente = clienteController.recuperarPorCpf(cpfCliente);

String codigo = solicitaEntradaDeDado("Informe o Código da mesa:");
Mesa mesa = mesaController.recuperarPorCodigo(codigo);
if (mesa == null) {
exibeDialogo("Mesa não encontrada!");
}

Date data = DateUtils.stringToDate(solicitaEntradaDeDado("Data da reserva: \nFormato: dd/mm/yyyy"));

Expand All @@ -48,11 +34,8 @@ static void cadastrarReserva(IReservaController reservaController, IClienteContr
reservaController.inserir(reserva);
exibeDialogo("Reserva inserida com sucesso!");
imprimeReserva(reserva);
} catch(EntidadeNaoEncontradaException e) {
e.printStackTrace();
} catch(InputMismatchException e){
System.out.println(e.getMessage());
e.printStackTrace();
} catch(EntidadeNaoEncontradaException | MesaNaoDisponivelException e) {
exibeDialogo(e.getMessage());
} catch (Exception e) {
exibeDialogo("Um erro ocorreu!\nCadastro não finalizado...");
e.printStackTrace();
Expand Down
30 changes: 12 additions & 18 deletions src/main/java/org/ravin/views/reserva/RecuperarReservaView.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,36 +22,30 @@ static void listarReservas(IReservaController reservaController) {
}

static void listarReservasPorCliente(IReservaController reservaController, IClienteController clienteController) {
String cpf = solicitaEntradaDeDado("Informe o CPF do cliente para listar suas reservas:");
try {
String cpf = solicitaEntradaDeDado("Informe o CPF do cliente para listar suas reservas:");
Cliente cliente = clienteController.recuperarPorCpf(cpf);

if (cliente != null) {
StringBuilder texto = new StringBuilder();
for (Reserva reserva : reservaController.recuperarReservasPorCliente(cliente)) {
texto.append(reserva.toString()).append("\n");
}
exibeDialogo(texto.toString());
} else {
exibeDialogo("Cliente não encontrado com o CPF informado!");
StringBuilder texto = new StringBuilder();
for (Reserva reserva : reservaController.recuperarReservasPorCliente(cliente)) {
texto.append(reserva.toString()).append("\n");
}
} catch (EntidadeNaoEncontradaException e) {
exibeDialogo("Cliente não encontrado com o CPF informado!");
exibeDialogo(texto.toString());
} catch(EntidadeNaoEncontradaException e){
exibeDialogo(e.getMessage());
}
}

static void listarReservasPorMesa(IReservaController reservaController, IMesaController mesaController) throws EntidadeNaoEncontradaException {
static void listarReservasPorMesa(IReservaController reservaController, IMesaController mesaController) {
String codigoMesa = solicitaEntradaDeDado("Informe o Código da mesa para listar suas reservas:");
Mesa mesa = mesaController.recuperarPorCodigo(codigoMesa);

if (mesa != null) {
try {
Mesa mesa = mesaController.recuperarPorCodigo(codigoMesa);
StringBuilder texto = new StringBuilder();
for (Reserva reserva : reservaController.recuperarReservasPorMesa(mesa)) {
texto.append(reserva.toString()).append("\n");
}
exibeDialogo(texto.toString());
} else {
exibeDialogo("Mesa não encontrada com o Código informado!");
} catch(EntidadeNaoEncontradaException e) {
exibeDialogo(e.getMessage());
}
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/ravin/views/reserva/SubmenuReserva.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import static org.ravin.views.reserva.RecuperarReservaView.*;

public class SubmenuReserva extends View {
public static void menuReserva() throws EntidadeNaoEncontradaException {
public static void menuReserva() {

// Injeção de Dependência
IVerificarComandaEmMesaService verificarComandaEmMesaService = new VerificarComandaEmMesaService();
Expand Down

0 comments on commit a233861

Please sign in to comment.