132 lines
4.2 KiB
Python
132 lines
4.2 KiB
Python
from modelo.pessoa import Pessoa
|
|
from modelo.pet import Pet
|
|
from modelo.adocao import Adocao
|
|
from modelo.item_adocao import ItemAdocao
|
|
from persistencia.banco_dados import BancoDeDados
|
|
from persistencia.excecoes import EntidadeNaoEncontradaException
|
|
|
|
class InterfaceTexto:
|
|
def __init__(self):
|
|
self.bd = BancoDeDados()
|
|
self.proximo_id = 1
|
|
|
|
def executar(self):
|
|
while True:
|
|
print("\n=== Menu Principal ===")
|
|
print("1. Pessoas")
|
|
print("2. Pets")
|
|
print("3. Adoções")
|
|
print("0. Sair")
|
|
op = input("Escolha: ")
|
|
|
|
if op == "1":
|
|
self.menu_entidade("Pessoa")
|
|
elif op == "2":
|
|
self.menu_entidade("Pet")
|
|
elif op == "3":
|
|
self.menu_adocao()
|
|
elif op == "0":
|
|
break
|
|
|
|
def menu_entidade(self, tipo):
|
|
while True:
|
|
print(f"\n=== Menu {tipo} ===")
|
|
print("1. Inserir")
|
|
print("2. Alterar")
|
|
print("3. Apagar")
|
|
print("4. Visualizar por ID")
|
|
print("5. Visualizar todos")
|
|
print("0. Voltar")
|
|
op = input("Escolha: ")
|
|
|
|
try:
|
|
if tipo == "Pessoa":
|
|
self.operacoes_pessoa(op)
|
|
elif tipo == "Pet":
|
|
self.operacoes_pet(op)
|
|
except Exception as e:
|
|
print("Erro:", e)
|
|
|
|
if op == "0":
|
|
break
|
|
|
|
def operacoes_pessoa(self, op):
|
|
if op == "1":
|
|
nome = input("Nome: ")
|
|
self.bd.pessoas.inserir(Pessoa(self.proximo_id, nome))
|
|
self.proximo_id += 1
|
|
elif op == "2":
|
|
id_ = int(input("ID: "))
|
|
nome = input("Novo nome: ")
|
|
self.bd.pessoas.alterar(id_, Pessoa(id_, nome))
|
|
elif op == "3":
|
|
id_ = int(input("ID: "))
|
|
self.bd.pessoas.remover(id_)
|
|
elif op == "4":
|
|
id_ = int(input("ID: "))
|
|
print(self.bd.pessoas.buscar_por_id(id_))
|
|
elif op == "5":
|
|
print(self.bd.pessoas)
|
|
|
|
def operacoes_pet(self, op):
|
|
if op == "1":
|
|
nome = input("Nome do pet: ")
|
|
especie = input("Espécie: ")
|
|
self.bd.pets.inserir(Pet(self.proximo_id, nome, especie))
|
|
self.proximo_id += 1
|
|
elif op == "2":
|
|
id_ = int(input("ID: "))
|
|
nome = input("Novo nome: ")
|
|
especie = input("Nova espécie: ")
|
|
self.bd.pets.alterar(id_, Pet(id_, nome, especie))
|
|
elif op == "3":
|
|
id_ = int(input("ID: "))
|
|
self.bd.pets.remover(id_)
|
|
elif op == "4":
|
|
id_ = int(input("ID: "))
|
|
print(self.bd.pets.buscar_por_id(id_))
|
|
elif op == "5":
|
|
print(self.bd.pets)
|
|
|
|
def menu_adocao(self):
|
|
while True:
|
|
print("\n=== Menu Adoções ===")
|
|
print("1. Nova Adoção")
|
|
print("2. Visualizar por ID")
|
|
print("3. Visualizar todas")
|
|
print("0. Voltar")
|
|
op = input("Escolha: ")
|
|
|
|
if op == "1":
|
|
self.nova_adocao()
|
|
elif op == "2":
|
|
id_ = int(input("ID da adoção: "))
|
|
print(self.bd.adocoes.buscar_por_id(id_))
|
|
elif op == "3":
|
|
print(self.bd.adocoes)
|
|
elif op == "0":
|
|
break
|
|
|
|
def nova_adocao(self):
|
|
try:
|
|
id_pessoa = int(input("ID do adotante: "))
|
|
pessoa = self.bd.pessoas.buscar_por_id(id_pessoa)
|
|
adocao = Adocao(self.proximo_id, pessoa)
|
|
self.proximo_id += 1
|
|
|
|
while True:
|
|
print("1. Adicionar pet")
|
|
print("0. Finalizar")
|
|
opc = input("Escolha: ")
|
|
if opc == "1":
|
|
id_pet = int(input("ID do pet: "))
|
|
pet = self.bd.pets.buscar_por_id(id_pet)
|
|
data = input("Data da adoção: ")
|
|
adocao.adicionar_item(ItemAdocao(pet, data))
|
|
elif opc == "0":
|
|
break
|
|
|
|
self.bd.adocoes.inserir(adocao)
|
|
except EntidadeNaoEncontradaException as e:
|
|
print("Erro:", e)
|