pets/visao/interface_texto.py

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)