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)