Skip to content

Commit

Permalink
Merge pull request #63 from RavinProject/issue-47-gerenciar-mesas
Browse files Browse the repository at this point in the history
Issue 63 - Gerenciamento de Reservas
  • Loading branch information
tiagospeckart authored Aug 2, 2023
2 parents 3601d78 + a233861 commit 376e851
Show file tree
Hide file tree
Showing 66 changed files with 815 additions and 341 deletions.
1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ Antes de começar, certifique-se de ter o seguinte instalado em seu sistema:
```bash
git clone https://github.com/RavinProject/ProjetoRavin.git
```
1. Navegue até o diretório que contém a classe principal `App.java`:
2. Navegue até o diretório que contém a classe principal `App.java`:
```bash
cd ProjetoRavin/src/main/java/org/ravin
```
1. Compile o código:
3. Compile o código:
```bash
javac App.java
```
1. Execute a classe principal:
4. Execute a classe principal:
```bash
java App
```
Expand All @@ -43,7 +43,7 @@ java App
| Estoque | ✔️ | ✔️ | ✔️ | ✔️ |
| Funcionário | ✔️ | ✔️ | ✔️ | ✔️ |
| Mesa | ✔️ | ✔️ | ✔️ | ✔️ |
| Reserva | 🚧 | 🚧 | 🚧 | 🚧 |
| Reserva | ✔️ | ✔️ | ✔️ | ✔️ |
| Pedido | 🚧 | 🚧 | 🚧 | 🚧 |
| Produto | ✔️ | ✔️ | ✔️ | ✔️ |

Expand Down
10 changes: 0 additions & 10 deletions src/dao/interfaces/IFuncionarioRepositorio.java

This file was deleted.

20 changes: 10 additions & 10 deletions src/main/java/org/ravin/controllers/ClienteController.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import java.util.Optional;

public class ClienteController implements IClienteController {

// Injeção de dependência

private final IClienteService clienteService;

public ClienteController(IClienteService clienteService) {
this.clienteService = clienteService;
}
Expand All @@ -22,7 +22,12 @@ public void inserir(Cliente objeto) {
}

@Override
public Cliente recuperarPorId(int id) throws EntidadeNaoEncontradaException {
public void atualizar(Cliente objeto) {
clienteService.atualizar(objeto);
}

@Override
public Cliente recuperarPorId(int id) throws EntidadeNaoEncontradaException{
Optional<Cliente> cliente = clienteService.recuperarPorId(id);
if (cliente.isPresent()) {
return cliente.get();
Expand All @@ -47,13 +52,8 @@ public List<Cliente> recuperarTodos() {
}

@Override
public void atualizar(Cliente objeto) {
clienteService.atualizar(objeto);
}

@Override
public boolean remover(Cliente objeto) {
clienteService.remover(objeto);
public boolean remover(Cliente cliente) {
clienteService.remover(cliente);
return true;
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/ravin/controllers/EstoqueController.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

public class EstoqueController implements IEstoqueController {

// Injeção de dependência
private final IEstoqueService estoqueService;

public EstoqueController(IEstoqueService estoqueService){
this.estoqueService = estoqueService;
}
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/org/ravin/controllers/MesaController.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,19 @@ public void inserir(Mesa mesa) {

@Override
public Mesa recuperarPorId(int id) throws EntidadeNaoEncontradaException {
Optional<Mesa> mesa = mesaService.recuperarPorId(id);
if (mesa.isPresent()) {
return mesa.get();
Optional<Mesa> oMesa = mesaService.recuperarPorId(id);
if (oMesa.isPresent()) {
return oMesa.get();
} else {
throw new EntidadeNaoEncontradaException("Mesa não encontrada para o ID: " + id);
}
}

@Override
public Mesa recuperarPorCodigo(String codigo) throws EntidadeNaoEncontradaException {
Optional<Mesa> mesa = mesaService.recuperarPorCodigo(codigo);
if (mesa.isPresent()) {
return mesa.get();
Optional<Mesa> oMesa = mesaService.recuperarPorCodigo(codigo);
if (oMesa.isPresent()) {
return oMesa.get();
} else {
throw new EntidadeNaoEncontradaException("Mesa não encontrada para o Codigo: " + codigo);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/ravin/controllers/ProdutoController.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

public class ProdutoController implements IProdutoController {

// Injeção de dependência
private final IProdutoService produtoService;

public ProdutoController(IProdutoService produtoService){
this.produtoService = produtoService;
}
Expand Down
58 changes: 34 additions & 24 deletions src/main/java/org/ravin/controllers/ReservaController.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import org.ravin.models.Cliente;
import org.ravin.models.Mesa;
import org.ravin.models.Reserva;
import org.ravin.services.interfaces.IReservaService;
import org.ravin.services.reserva.interfaces.IReservaService;
import org.ravin.utils.exceptions.EntidadeNaoEncontradaException;
import org.ravin.utils.exceptions.MesaNaoDisponivelException;

import java.util.Date;
import java.util.List;
import java.util.Optional;

public class ReservaController implements IReservaController {

Expand All @@ -16,48 +18,56 @@ public class ReservaController implements IReservaController {
public ReservaController(IReservaService reservaService) {
this.reservaService = reservaService;
}
@Override
public void inserir(Reserva reserva) {
reservaService.inserir(reserva);
}

@Override
public Reserva recuperarPorId(int id) {
return null;
}

@Override
public List<Reserva> recuperarTodos() {
return reservaService.recuperarTodos();
public void inserir(Reserva reserva) throws MesaNaoDisponivelException {
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
public void atualizar(Reserva objeto) {

public Reserva recuperarPorId(int id) throws EntidadeNaoEncontradaException {
Optional<Reserva> oReserva = reservaService.recuperarPorId(id);
if (oReserva.isPresent()) {
return oReserva.get();
} else {
throw new EntidadeNaoEncontradaException("Reserva não encontrada para o ID: " + id);
}
}

@Override
public boolean remover(Reserva objeto) {
return false;
public List<Reserva> recuperarTodos() {
return reservaService.recuperarTodos();
}

@Override
public void reservarMesa(Cliente cliente, Mesa mesa, Date data) {

public void atualizar(Reserva reserva) {
reservaService.atualizar(reserva);
}

@Override
public List<Reserva> recuperarPorCliente(Cliente cliente) {
return null;
public boolean remover(Reserva reserva) {
try {
reservaService.remover(reserva);
return true;
} catch (Exception e) {
return false;
}
}

@Override
public Reserva recuperarPorMesa(Mesa mesa) {
return null;
public List<Reserva> recuperarReservasPorCliente(Cliente cliente) {
return reservaService.recuperarReservasPorCliente(cliente);
}

@Override
public List<Reserva> recuperarReservasPorCodigo(String codigoMesa) {
return null;
public List<Reserva> recuperarReservasPorMesa(Mesa mesa) {
return reservaService.recuperarReservasPorMesa(mesa);
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
/**
* Interface para definir a funcionalidade básica de um controlador.
*
* <p>Esta interface define as operações básicas de CRUD (criar, ler, atualizar e deletar) para um objeto genérico.
* Ela pode ser implementada por qualquer controlador que necessite dessas operações.
*
* @param <T> o tipo do objeto a ser gerenciado pelo controlador.
*/
package org.ravin.controllers.interfaces;

import org.ravin.utils.exceptions.EntidadeNaoEncontradaException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,30 @@
/**
* Interface para definir a funcionalidade de um controlador de estoque.
*
* <p>Essa interface estende {@code IController<Estoque>} para fornecer funcionalidades específicas para gerenciar um estoque.
* As operações adicionais incluem a recuperação de um estoque por código e a verificação se um estoque já foi cadastrado.
*
* @see IController
*/
package org.ravin.controllers.interfaces;

import org.ravin.models.Estoque;
import org.ravin.utils.exceptions.EntidadeNaoEncontradaException;

public interface IEstoqueController extends IController<Estoque>{
/**
* Recupera um estoque por seu código.
*
* @param codigo O código do estoque a ser recuperado.
* @return O objeto Estoque correspondente ao código fornecido.
* @throws EntidadeNaoEncontradaException Se o estoque com o código fornecido não for encontrado.
*/
Estoque recuperarPorCodigo(String codigo) throws EntidadeNaoEncontradaException;
/**
* Verifica se um estoque já foi cadastrado.
*
* @param codigo O código do estoque a ser verificado.
* @return {@code true} se o estoque com o código fornecido já foi cadastrado, {@code false} caso contrário.
*/
boolean estoqueJaCadastrado(String codigo);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,22 @@
import org.ravin.models.Cliente;
import org.ravin.models.Mesa;
import org.ravin.models.Reserva;
import org.ravin.utils.exceptions.EntidadeNaoEncontradaException;
import org.ravin.utils.exceptions.MesaNaoDisponivelException;

import java.util.Date;
import java.util.List;

public interface IReservaController extends IController<Reserva> {
void reservarMesa(Cliente cliente, Mesa mesa, Date data);
List<Reserva> recuperarPorCliente(Cliente cliente);
public interface IReservaController {

Reserva recuperarPorMesa(Mesa mesa);
// Separei IReservaController de IServices para não misturar o exception com a assinatura da interface IService

List<Reserva> recuperarReservasPorCodigo(String codigoMesa);
void inserir(Reserva reserva) throws MesaNaoDisponivelException;
Reserva recuperarPorId(int id) throws EntidadeNaoEncontradaException;
List<Reserva> recuperarTodos();
void atualizar(Reserva reserva) throws EntidadeNaoEncontradaException;
boolean remover(Reserva reserva) throws EntidadeNaoEncontradaException;

List<Reserva> recuperarReservasPorCliente(Cliente cliente);

List<Reserva> recuperarReservasPorMesa(Mesa mesa);
}
2 changes: 1 addition & 1 deletion src/main/java/org/ravin/dao/CardapioRepositorioLista.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public void inserir(Cardapio object) {
}

@Override
public List<Cardapio> pegarLista() {
public List<Cardapio> recuperarTodos() {
return null;
}

Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/ravin/dao/ClienteRepositorioLista.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public Optional<Cliente> recuperarPorId(int id) {
}

@Override
public Optional<Cliente> recuperarPorCpf(String cpf) {
public Optional<Cliente> recuperarClientePorCpf(String cpf) {
// Itera pela lista e tenta encontrar um cliente com o CPF fornecido
for (Cliente cliente : listaClientes) {
if (cliente.getCpf().equals(cpf)) {
Expand All @@ -43,8 +43,9 @@ public Optional<Cliente> recuperarPorCpf(String cpf) {
return Optional.empty();
}


@Override
public List<Cliente> pegarLista() {
public List<Cliente> recuperarTodos() {
return listaClientes;
}

Expand Down
28 changes: 22 additions & 6 deletions src/main/java/org/ravin/dao/ComandaRepositorioLista.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

import org.ravin.dao.interfaces.IComandaRepositorioLista;
import org.ravin.models.Comanda;
import org.ravin.models.Mesa;
import org.ravin.utils.enums.StatusComanda;

import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

public class ComandaRepositorioLista implements IComandaRepositorioLista {
private final List<Comanda> listaComanda;
Expand All @@ -18,11 +21,11 @@ public ComandaRepositorioLista(List<Comanda> listaComanda) {
@Override
public void inserir(Comanda comanda) {

pegarLista().add(comanda); // Adiciona a cliente na lista
listaComanda.add(comanda);
}

@Override
public List<Comanda> pegarLista() {
public List<Comanda> recuperarTodos() {
return listaComanda;
}

Expand All @@ -33,16 +36,16 @@ public Optional<Comanda> recuperarPorId(int id) {

@Override
public void atualizar(Comanda comandaAtualizada) {
for (int i = 0; i < pegarLista().size(); i++) {
if (pegarLista().get(i).getId() == comandaAtualizada.getId()) {
pegarLista().set(i, comandaAtualizada);
for (int i = 0; i < listaComanda.size(); i++) {
if (listaComanda.get(i).getId() == comandaAtualizada.getId()) {
listaComanda.set(i, comandaAtualizada);
break;
}
}
}

@Override
public void remover(Comanda object) {
public void remover(Comanda comanda) {

}

Expand All @@ -60,4 +63,17 @@ public Optional<Comanda> recuperarComandaPorCodigo(String codigo) {
}
return Optional.empty();
}

@Override
public List<Comanda> recuperarListaPorMesaEStatus(Mesa mesa, StatusComanda statusComanda) {
return listaComanda.stream().
filter(c -> c.getMesa().equals(mesa) && c.getStatusComanda().equals(statusComanda)).
collect(Collectors.toList());
}

@Override
public int getId(Comanda comanda) {
return IComandaRepositorioLista.super.getId(comanda);
}

}
Loading

0 comments on commit 376e851

Please sign in to comment.