[MVPTN-18] feat(CRUD): Cria o CRUD do T_IMOVEL e T_IMOVEL_UNIDADE
This commit is contained in:
parent
aa9d1f57f3
commit
a7978d385e
37 changed files with 2065 additions and 0 deletions
|
|
@ -0,0 +1,24 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel.t_imovel_delete_repository import TImovelDeleteRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIdSchema
|
||||||
|
class TImovelDeleteAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de exclusão de um registro na tabela t_t_imovel_id.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_id_schema: TImovelIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de exclusão no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_id_schema (TImovelSchema): O esquema com o ID a ser excluído.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exclusão.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
t_imovel_delete_repository = TImovelDeleteRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
return t_imovel_delete_repository.execute(t_imovel_id_schema)
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel.t_imovel_index_repository import TImovelIndexRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIndexSchema
|
||||||
|
|
||||||
|
class TImovelIndexAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de listagem de todos os registros na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_index_schema: TImovelIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de listagem no banco de dados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A lista de todos os registros.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
t_imovel_index_repositoy = TImovelIndexRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = t_imovel_index_repositoy.execute(t_imovel_index_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel.t_imovel_save_repository import TImovelSaveRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelSchema
|
||||||
|
|
||||||
|
class TImovelSaveAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de salvar um novo registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_schema: TImovelSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de salvamento.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_schema (TCensecQualidadeSaveSchema): O esquema com os dados a serem salvos.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de salvamento.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
t_imovel_save_repository = TImovelSaveRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = t_imovel_save_repository.execute(t_imovel_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel.t_imovel_show_repository import TImovelShowRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIdSchema
|
||||||
|
|
||||||
|
class TImovelShowAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a exibição
|
||||||
|
de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_id_schema: TImovelIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de exibição.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_schema (TCensecQualidadeIdSchema): O esquema com o ID do registro a ser exibido.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exibição.
|
||||||
|
"""
|
||||||
|
# Instânciamento do repositório
|
||||||
|
t_imovel_show_repository = TImovelShowRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = t_imovel_show_repository.execute(t_imovel_id_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel.t_imovel_update_repository import TImovelUpdateRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelUpdateSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUpdateAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a atualização
|
||||||
|
de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_update_schema: TImovelUpdateSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de atualização.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_id (int): O ID do registro a ser atualizado.
|
||||||
|
t_imovel_update_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de atualização.
|
||||||
|
"""
|
||||||
|
# Instância o repositório de atualização
|
||||||
|
t_imovel_update_repository = TImovelUpdateRepository()
|
||||||
|
|
||||||
|
# Chama o método de execução do repositório para realizar a atualização
|
||||||
|
return t_imovel_update_repository.execute(t_imovel_update_schema)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_delete_repository import TImovelUnidadeDeleteRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUnidadeDeleteAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de exclusão de um registro na tabela t_t_imovel_unidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de exclusão no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TImovelUnidadeSchema): O esquema com o ID a ser excluído.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exclusão.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
delete_repository = TImovelUnidadeDeleteRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
return delete_repository.execute(t_imovel_unidade_schema)
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_index_repository import TImovelUnidadeIndexRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIndexSchema
|
||||||
|
|
||||||
|
class TImovelUnidadeIndexAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de listagem de todos os registros na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_index_schema: TImovelUnidadeIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de listagem no banco de dados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A lista de todos os registros.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
index_repository = TImovelUnidadeIndexRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = index_repository.execute(t_imovel_unidade_index_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_save_repository import TImovelUnidadeSaveRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema
|
||||||
|
|
||||||
|
class TImovelUnidadeSaveAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de salvar um novo registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de salvamento.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeSaveSchema): O esquema com os dados a serem salvos.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de salvamento.
|
||||||
|
"""
|
||||||
|
# Instanciamento do repositório
|
||||||
|
t_imovel_unidade_save_repository = TImovelUnidadeSaveRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = t_imovel_unidade_save_repository.execute(t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_show_repository import TImovelUnidadeShowRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema
|
||||||
|
|
||||||
|
class TImovelUnidadeShowAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a exibição
|
||||||
|
de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de exibição.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeIdSchema): O esquema com o ID do registro a ser exibido.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exibição.
|
||||||
|
"""
|
||||||
|
# Instânciamento do repositório
|
||||||
|
t_imovel_unidade_show_repository = TImovelUnidadeShowRepository()
|
||||||
|
|
||||||
|
# Execução do repositório
|
||||||
|
response = t_imovel_unidade_show_repository.execute(t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
from abstracts.action import BaseAction
|
||||||
|
from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_update_repository import TImovelUnidadeUpdateRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeUpdateSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUnidadeUpdateAction(BaseAction):
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a atualização
|
||||||
|
de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de atualização.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_id (int): O ID do registro a ser atualizado.
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de atualização.
|
||||||
|
"""
|
||||||
|
# Instância o repositório de atualização
|
||||||
|
t_imovelUnidade_update_repository = TImovelUnidadeUpdateRepository()
|
||||||
|
|
||||||
|
# Chama o método de execução do repositório para realizar a atualização
|
||||||
|
return t_imovelUnidade_update_repository.execute(t_imovel_unidade_schema)
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_schema import (
|
||||||
|
TImovelIndexSchema,
|
||||||
|
TImovelSaveSchema,
|
||||||
|
TImovelUpdateSchema,
|
||||||
|
TImovelIdSchema
|
||||||
|
)
|
||||||
|
|
||||||
|
class TImovelController:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Action responsável por carregar as services de acordo com o estado
|
||||||
|
self.dynamic_import = DynamicImport()
|
||||||
|
|
||||||
|
# Define o pacote que deve ser carregado
|
||||||
|
self.dynamic_import.set_package("administrativo")
|
||||||
|
|
||||||
|
# Define a tabela que o pacote pertence
|
||||||
|
self.dynamic_import.set_table("t_imovel")
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Lista todos os registros de t_imovel
|
||||||
|
def index(self, t_imovel_index_schema: TImovelIndexSchema):
|
||||||
|
|
||||||
|
# Importação da classe desejada
|
||||||
|
t_imovel_index_service = self.dynamic_import.service("t_imovel_index_service", "TImovelIndexService")
|
||||||
|
|
||||||
|
# Instância da classe service
|
||||||
|
self.t_imovel_index_service = t_imovel_index_service()
|
||||||
|
|
||||||
|
# Lista todos os registros de t_imovel
|
||||||
|
return {
|
||||||
|
'message': 'Registros de t_imovel localizados com sucesso',
|
||||||
|
'data': self.t_imovel_index_service.execute(t_imovel_index_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Busca um registro de t_imovel específico pelo ID
|
||||||
|
def show(self, t_imovel_schema: TImovelIdSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
show_service = self.dynamic_import.service('t_imovel_show_service', 'TImovelShowService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.show_service = show_service()
|
||||||
|
|
||||||
|
# Busca e retorna o registro de t_imovel desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de t_imovel localizado com sucesso',
|
||||||
|
'data': self.show_service.execute(t_imovel_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cadastra um novo registro de t_imovel
|
||||||
|
def save(self, t_imovel_save_schema: TImovelSaveSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
save_service = self.dynamic_import.service('t_imovel_save_service', 'TImovelSaveService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.save_service = save_service()
|
||||||
|
# Busca e retorna o registro de t_imovel desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de t_imovel salvo com sucesso',
|
||||||
|
'data': self.save_service.execute(t_imovel_save_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Atualiza os dados de um registro de t_imovel
|
||||||
|
def update(self, t_imovel_id: int, t_imovel_schema: TImovelUpdateSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
update_service = self.dynamic_import.service('t_imovel_update_service', 'TImovelUpdateService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.update_service = update_service()
|
||||||
|
|
||||||
|
# Busca e retorna o registro de t_imovel desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de t_imovel atualizado com sucesso',
|
||||||
|
'data': self.update_service.execute(t_imovel_id, t_imovel_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Exclui um registro de t_imovel
|
||||||
|
def delete(self, t_imovel_schema: TImovelIdSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
delete_service = self.dynamic_import.service('t_imovel_delete_service', 'TImovelDeleteService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.delete_service = delete_service()
|
||||||
|
|
||||||
|
# Busca e retorna o registro de t_imovel desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de t_imovel removido com sucesso',
|
||||||
|
'data': self.delete_service.execute(t_imovel_schema)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import (
|
||||||
|
TImovelUnidadeIndexSchema,
|
||||||
|
TImovelUnidadeSaveSchema,
|
||||||
|
TImovelUnidadeUpdateSchema,
|
||||||
|
TImovelUnidadeIdSchema
|
||||||
|
)
|
||||||
|
|
||||||
|
class TImovelUnidadeController:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Action responsável por carregar as services de acordo com o estado
|
||||||
|
self.dynamic_import = DynamicImport()
|
||||||
|
|
||||||
|
# Define o pacote que deve ser carregado
|
||||||
|
self.dynamic_import.set_package("administrativo")
|
||||||
|
|
||||||
|
# Define a tabela que o pacote pertence
|
||||||
|
self.dynamic_import.set_table("t_imovel_unidade")
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Lista todos os registros de censec_qualidade
|
||||||
|
def index(self, t_imovel_unidade_index_schema: TImovelUnidadeIndexSchema):
|
||||||
|
|
||||||
|
# Importação da classe desejada
|
||||||
|
t_imovel_index_service = self.dynamic_import.service("t_imovel_unidade_index_service", "TImovelUnidadeIndexService")
|
||||||
|
|
||||||
|
# Instância da classe service
|
||||||
|
self.t_imovel_index_service = t_imovel_index_service()
|
||||||
|
|
||||||
|
# Lista todos os registros de censec_qualidade
|
||||||
|
return {
|
||||||
|
'message': 'Registros de t_imovel_unidade localizados com sucesso',
|
||||||
|
'data': self.t_imovel_index_service.execute(t_imovel_unidade_index_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Busca um registro de censec_qualidade específico pelo ID
|
||||||
|
def show(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
show_service = self.dynamic_import.service('t_imovel_unidade_show_service', 'ShowService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.show_service = show_service()
|
||||||
|
|
||||||
|
# Busca e retorna o registro de censec_qualidade desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de censec_qualidade localizado com sucesso',
|
||||||
|
'data': self.show_service.execute(t_imovel_unidade_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cadastra um novo registro de censec_qualidade
|
||||||
|
def save(self, t_imovel_unidade_schema: TImovelUnidadeSaveSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
save_service = self.dynamic_import.service('t_imovel_unidade_save_service', 'SaveService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.save_service = save_service()
|
||||||
|
# Busca e retorna o registro de censec_qualidade desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de censec_qualidade salvo com sucesso',
|
||||||
|
'data': self.save_service.execute(t_imovel_unidade_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Atualiza os dados de um registro de censec_qualidade
|
||||||
|
def update(self, t_imovel_unidade_id: int, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
update_service = self.dynamic_import.service('t_imovel_unidade_update_service', 'UpdateService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.update_service = update_service()
|
||||||
|
|
||||||
|
# Busca e retorna o registro de censec_qualidade desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de censec_qualidade atualizado com sucesso',
|
||||||
|
'data': self.update_service.execute(t_imovel_unidade_id, t_imovel_unidade_schema)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Exclui um registro de censec_qualidade
|
||||||
|
def delete(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema):
|
||||||
|
|
||||||
|
#Importação da classe desejada
|
||||||
|
delete_service = self.dynamic_import.service('t_imovel_unidade_delete_service', 'DeleteService')
|
||||||
|
|
||||||
|
# Instância da classe desejada
|
||||||
|
self.delete_service = delete_service()
|
||||||
|
|
||||||
|
# Busca e retorna o registro de censec_qualidade desejado
|
||||||
|
return {
|
||||||
|
'message': 'Registro de censec_qualidade removido com sucesso',
|
||||||
|
'data': self.delete_service.execute(t_imovel_unidade_schema)
|
||||||
|
}
|
||||||
93
packages/v1/administrativo/endpoints/t_imovel_endpoint.py
Normal file
93
packages/v1/administrativo/endpoints/t_imovel_endpoint.py
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
# Importação de bibliotecas
|
||||||
|
from typing import Optional
|
||||||
|
from fastapi import APIRouter, Depends, status
|
||||||
|
from actions.jwt.get_current_user import get_current_user
|
||||||
|
from packages.v1.administrativo.controllers.t_imovel_controller import TImovelController
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_schema import (
|
||||||
|
TImovelIndexSchema,
|
||||||
|
TImovelSaveSchema,
|
||||||
|
TImovelUpdateSchema,
|
||||||
|
TImovelIdSchema
|
||||||
|
)
|
||||||
|
|
||||||
|
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
# Instanciamento do controller desejado
|
||||||
|
t_imovel_controller = TImovelController()
|
||||||
|
|
||||||
|
# Lista todos os registros de t_imovel
|
||||||
|
@router.get('/classe/{imovel_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Lista todos os registros de t_imovel cadastrados',
|
||||||
|
response_description='Lista todos os registros de t_imovel cadastrados')
|
||||||
|
async def index(imovel_id: int, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
t_imovel_index_schema = TImovelIndexSchema(imovel_id=imovel_id)
|
||||||
|
|
||||||
|
# Busca todos os registros de t_imovel cadastrados
|
||||||
|
response = t_imovel_controller.index(t_imovel_index_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# Localiza um registro de t_imovel pelo ID
|
||||||
|
@router.get('/{imovel_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Busca um registro de t_imovel em específico pelo ID',
|
||||||
|
response_description='Busca um registro de t_imovel em específico')
|
||||||
|
async def show(imovel_id : int, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Cria o schema com os dados recebidos
|
||||||
|
t_imovel_schema = TImovelIdSchema(imovel_id=imovel_id)
|
||||||
|
|
||||||
|
# Busca um registro de t_imovel específico pelo ID
|
||||||
|
response = t_imovel_controller.show(t_imovel_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# Cadastro de registro de t_imovel
|
||||||
|
@router.post('/',
|
||||||
|
status_code=status.HTTP_201_CREATED,
|
||||||
|
summary='Cadastra um registro de t_imovel',
|
||||||
|
response_description='Cadastra um registro de t_imovel')
|
||||||
|
async def save(t_imovel_schema: TImovelSaveSchema, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Efetua o cadastro no banco de dados
|
||||||
|
response = t_imovel_controller.save(t_imovel_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# Atualiza os dados de um registro de t_imovel
|
||||||
|
@router.put('/{imovel_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Atualiza um registro de t_imovel',
|
||||||
|
response_description='Atualiza um registro de t_imovel')
|
||||||
|
async def update(imovel_id: int, t_imovel_schema: TImovelUpdateSchema, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Efetua a atualização dos dados
|
||||||
|
response = t_imovel_controller.update(imovel_id, t_imovel_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
# Exclui um determinado registro de t_imovel
|
||||||
|
@router.delete('/{imovel_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Remove um registro de t_imovel',
|
||||||
|
response_description='Remove um registro de t_imovel')
|
||||||
|
async def delete(imovel_id: int, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Cria o schema com os dados recebidos
|
||||||
|
t_imovel_schema = TImovelIdSchema(imovel_id=imovel_id)
|
||||||
|
|
||||||
|
# Efetua a exclusão do registro de t_imovel
|
||||||
|
response = t_imovel_controller.delete(t_imovel_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
# Importação de bibliotecas
|
||||||
|
from typing import Optional
|
||||||
|
from fastapi import APIRouter, Depends, status
|
||||||
|
from actions.jwt.get_current_user import get_current_user
|
||||||
|
from packages.v1.administrativo.controllers.t_imovel_unidade_controller import TImovelUnidadeController
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import (
|
||||||
|
TImovelUnidadeIndexSchema,
|
||||||
|
TImovelUnidadeSaveSchema,
|
||||||
|
TImovelUnidadeUpdateSchema,
|
||||||
|
TImovelUnidadeIdSchema
|
||||||
|
)
|
||||||
|
|
||||||
|
# Inicializa o roteador para as rotas do tipo de reconhecimento
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
# Instanciamento do controller desejado
|
||||||
|
t_imovel_unidade_controller = TImovelUnidadeController()
|
||||||
|
|
||||||
|
# Lista todos os registros de t_imovel_unidade
|
||||||
|
@router.get('/imovel/{imovel_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Lista todos os registros de t_imovel_unidade cadastrados',
|
||||||
|
response_description='Lista todos os registros de t_imovel_unidade cadastrados')
|
||||||
|
async def index(imovel_id: int, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
t_imovel_unidade_index_schema = TImovelUnidadeIndexSchema(imovel_id=imovel_id)
|
||||||
|
|
||||||
|
# Busca todos os registros de t_imovel_unidade cadastrados
|
||||||
|
response = t_imovel_unidade_controller.index(t_imovel_unidade_index_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# Localiza um registro de t_imovel_unidade pelo ID
|
||||||
|
@router.get('/{imovel_unidade_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Busca um registro de t_imovel_unidade em específico pelo ID',
|
||||||
|
response_description='Busca um registro de t_imovel_unidade em específico')
|
||||||
|
async def show(imovel_unidade_id : int, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Cria o schema com os dados recebidos
|
||||||
|
t_imovel_unidade_schema = TImovelUnidadeIdSchema(imovel_unidade_id=imovel_unidade_id)
|
||||||
|
|
||||||
|
# Busca um registro de t_imovel_unidade específico pelo ID
|
||||||
|
response = t_imovel_unidade_controller.show(t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# Cadastro de registro de t_imovel_unidade
|
||||||
|
@router.post('/',
|
||||||
|
status_code=status.HTTP_201_CREATED,
|
||||||
|
summary='Cadastra um registro de t_imovel_unidade',
|
||||||
|
response_description='Cadastra um registro de t_imovel_unidade')
|
||||||
|
async def save(t_imovel_unidade_schema: TImovelUnidadeSaveSchema, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Efetua o cadastro no banco de dados
|
||||||
|
response = t_imovel_unidade_controller.save(t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
# Atualiza os dados de um registro de t_imovel_unidade
|
||||||
|
@router.put('/{imovel_unidade_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Atualiza um registro de t_imovel_unidade',
|
||||||
|
response_description='Atualiza um registro de t_imovel_unidade')
|
||||||
|
async def update(imovel_unidade_id: int, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Efetua a atualização dos dados
|
||||||
|
response = t_imovel_unidade_controller.update(imovel_unidade_id, t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
||||||
|
# Exclui um determinado registro de t_imovel_unidade
|
||||||
|
@router.delete('/{imovel_unidade_id}',
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
summary='Remove um registro de t_imovel_unidade',
|
||||||
|
response_description='Remove um registro de t_imovel_unidade')
|
||||||
|
async def delete(imovel_unidade_id: int, current_user: dict = Depends(get_current_user)):
|
||||||
|
|
||||||
|
# Cria o schema com os dados recebidos
|
||||||
|
t_imovel_unidade_schema = TImovelUnidadeIdSchema(imovel_unidade_id=imovel_unidade_id)
|
||||||
|
|
||||||
|
# Efetua a exclusão do registro de t_imovel_unidade
|
||||||
|
response = t_imovel_unidade_controller.delete(t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_schema import TImovelIdSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelDeleteRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de exclusão de um registro na tabela
|
||||||
|
t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_id_schema: TImovelIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a consulta SQL para remover um registro pelo ID.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_schema (TImovelUnidadeIdSchema): O esquema com o ID a ser removido.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exclusão.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Montagem do sql
|
||||||
|
sql = """ DELETE FROM T_IMOVEL TI WHERE TI.IMOVEL_ID = :imovelId """
|
||||||
|
|
||||||
|
# Preenchimento de parâmetros
|
||||||
|
params = {
|
||||||
|
"imovelId": t_imovel_id_schema.imovel_id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do sql
|
||||||
|
response = self.run(sql, params)
|
||||||
|
|
||||||
|
# Retorna o resultado
|
||||||
|
return response
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
# Informa que houve uma falha na exclusão
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao excluir IMÓVEL: {e}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIndexSchema
|
||||||
|
|
||||||
|
class TImovelIndexRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de listagem de todos os registros
|
||||||
|
na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_index_schema: TImovelIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a consulta SQL para buscar todos os registros.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Uma lista de dicionários contendo os dados dos registros.
|
||||||
|
"""
|
||||||
|
# Montagem do SQL
|
||||||
|
sql = """ SELECT TI.*, GTBB.DESCRICAO AS GTBB_DESCRICAO FROM T_IMOVEL TI
|
||||||
|
JOIN G_TB_BAIRRO GTBB ON TI.TB_BAIRRO_ID = GTBB.TB_BAIRRO_ID
|
||||||
|
WHERE TI.TIPO_CLASSE = :tipoClasse """
|
||||||
|
|
||||||
|
params = {
|
||||||
|
"tipoClasse": t_imovel_index_schema.tipo_classe
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do sql
|
||||||
|
response = self.fetch_all(sql, params)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelSaveRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de salvamento de um novo registro na tabela t_t_imovel_unidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_schema: TImovelSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de salvamento no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_schema (TImovelSchema): O esquema com os dados a serem salvos.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O registro recém-criado.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: Caso ocorra um erro na execução da query.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Montagem do SQL
|
||||||
|
# ----------------------------------------------------
|
||||||
|
sql = """
|
||||||
|
INSERT INTO T_IMOVEL (
|
||||||
|
IMOVEL_ID,
|
||||||
|
TIPO_CLASSE,
|
||||||
|
TIPO_REGISTRO,
|
||||||
|
DATA_REGISTRO,
|
||||||
|
NUMERO,
|
||||||
|
NUMERO_LETRA,
|
||||||
|
CIDADE,
|
||||||
|
CEP,
|
||||||
|
UF,
|
||||||
|
TB_BAIRRO_ID,
|
||||||
|
CARTORIO,
|
||||||
|
LIVRO,
|
||||||
|
CNS
|
||||||
|
) VALUES (
|
||||||
|
:imovel_id,
|
||||||
|
:tipo_classe,
|
||||||
|
:tipo_registro,
|
||||||
|
:data_registro,
|
||||||
|
:numero,
|
||||||
|
:numero_letra,
|
||||||
|
:cidade,
|
||||||
|
:cep,
|
||||||
|
:uf,
|
||||||
|
:tb_bairro_id,
|
||||||
|
:cartorio,
|
||||||
|
:livro,
|
||||||
|
:cns
|
||||||
|
)
|
||||||
|
RETURNING *;
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Preenchimento dos parâmetros
|
||||||
|
# ----------------------------------------------------
|
||||||
|
params = {
|
||||||
|
"imovel_id": t_imovel_schema.imovel_id,
|
||||||
|
"tipo_classe": t_imovel_schema.tipo_classe,
|
||||||
|
"tipo_registro": t_imovel_schema.tipo_registro,
|
||||||
|
"data_registro": t_imovel_schema.data_registro,
|
||||||
|
"numero": t_imovel_schema.numero,
|
||||||
|
"numero_letra": t_imovel_schema.numero_letra,
|
||||||
|
"cidade": t_imovel_schema.cidade,
|
||||||
|
"cep": t_imovel_schema.cep,
|
||||||
|
"uf": t_imovel_schema.uf,
|
||||||
|
"tb_bairro_id": t_imovel_schema.tb_bairro_id,
|
||||||
|
"cartorio": t_imovel_schema.cartorio,
|
||||||
|
"livro": t_imovel_schema.livro,
|
||||||
|
"cns": t_imovel_schema.cns,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do sql
|
||||||
|
return self.run_and_return(sql, params)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
|
||||||
|
# Informa que houve uma falha no salvamento do registro
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao salvar T_IMOVEL: {e}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIdSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelShowRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de exibição de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_id_schema: TImovelIdSchema):
|
||||||
|
"""
|
||||||
|
Busca um registro específico de CENSEC_QUALIDADE pelo ID.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_schema (TImovelIdSchema): O esquema que contém o ID do registro.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O registro encontrado ou None se não existir.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: Caso ocorra um erro na execução da query.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Montagem do SQL
|
||||||
|
sql = "SELECT * FROM T_IMOVEL WHERE IMOVEL_ID = :imovel_id"
|
||||||
|
|
||||||
|
# Preenchimento de parâmetros
|
||||||
|
params = {
|
||||||
|
'imovel_id': t_imovel_id_schema.imovel_id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do SQL
|
||||||
|
result = self.fetch_one(sql, params)
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Registro não encontrado"
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao buscar registro: {str(e)}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_schema import TImovelUpdateSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUpdateRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para atualização de registros na tabela T_IMOVEL.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_schema: TImovelUpdateSchema):
|
||||||
|
"""
|
||||||
|
Executa a atualização de um imóvel pelo ID.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Mapeamento de atributos → colunas SQL
|
||||||
|
# ----------------------------------------------------
|
||||||
|
field_map = {
|
||||||
|
"tipo_classe": "TIPO_CLASSE",
|
||||||
|
"tipo_registro": "TIPO_REGISTRO",
|
||||||
|
"data_registro": "DATA_REGISTRO",
|
||||||
|
"numero": "NUMERO",
|
||||||
|
"numero_letra": "NUMERO_LETRA",
|
||||||
|
"cidade": "CIDADE",
|
||||||
|
"cep": "CEP",
|
||||||
|
"uf": "UF",
|
||||||
|
"tb_bairro_id": "TB_BAIRRO_ID",
|
||||||
|
"cartorio": "CARTORIO",
|
||||||
|
"livro": "LIVRO",
|
||||||
|
"cns": "CNS",
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Montagem dinâmica dos campos
|
||||||
|
# ----------------------------------------------------
|
||||||
|
updates = []
|
||||||
|
params = {}
|
||||||
|
|
||||||
|
for attr, column in field_map.items():
|
||||||
|
value = getattr(t_imovel_schema, attr, None)
|
||||||
|
if value is not None:
|
||||||
|
updates.append(f"{column} = :{attr}")
|
||||||
|
params[attr] = value
|
||||||
|
|
||||||
|
if not updates:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail="Nenhum campo válido foi enviado para atualização."
|
||||||
|
)
|
||||||
|
|
||||||
|
params["imovel_id"] = t_imovel_schema.imovel_id
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Montagem do SQL dinâmico
|
||||||
|
# ----------------------------------------------------
|
||||||
|
sql = f"""
|
||||||
|
UPDATE T_IMOVEL
|
||||||
|
SET {', '.join(updates)}
|
||||||
|
WHERE IMOVEL_ID = :imovel_id
|
||||||
|
RETURNING *;
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Execução e retorno
|
||||||
|
# ----------------------------------------------------
|
||||||
|
result = self.run_and_return(sql, params)
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Nenhum imóvel encontrado para o ID informado."
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
except HTTPException:
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao atualizar o imóvel: {str(e)}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeDeleteRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de exclusão de um registro na tabela
|
||||||
|
t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a consulta SQL para remover um registro pelo ID.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TImovelUnidadeIdSchema): O esquema com o ID a ser removido.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exclusão.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Montagem do sql
|
||||||
|
sql = """ DELETE FROM T_IMOVEL_UNIDADE WHERE IMOVEL_UNIDADE_ID = :imovel_unidade_id """
|
||||||
|
|
||||||
|
# Preenchimento de parâmetros
|
||||||
|
params = {
|
||||||
|
"imovel_unidade_id": t_imovel_unidade_schema.imovel_unidade_id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do sql
|
||||||
|
response = self.run(sql, params)
|
||||||
|
|
||||||
|
# Retorna o resultado
|
||||||
|
return response
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
# Informa que houve uma falha na exclusão
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao excluir IMOVEL_UNIDADE: {e}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIndexSchema
|
||||||
|
|
||||||
|
class TImovelUnidadeIndexRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de listagem de todos os registros
|
||||||
|
na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_index_schema: TImovelUnidadeIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a consulta SQL para buscar todos os registros.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Uma lista de dicionários contendo os dados dos registros.
|
||||||
|
"""
|
||||||
|
# Montagem do SQL
|
||||||
|
sql = """ SELECT TIU.IMOVEL_UNIDADE_ID,
|
||||||
|
TIU.IMOVEL_ID,
|
||||||
|
TIU.NUMERO_UNIDADE,
|
||||||
|
TIU.QUADRA,
|
||||||
|
TIU.AREA,
|
||||||
|
TIU.SUPERQUADRA,
|
||||||
|
TIU.CONJUNTO,
|
||||||
|
TIU.BLOCO,
|
||||||
|
TIU.AREA_DESCRITIVA,
|
||||||
|
TIU.CARACTERISTICA,
|
||||||
|
TIU.RESERVA_FLORESTAL,
|
||||||
|
TIU.GEO_REFERENCIAMENTO,
|
||||||
|
TIU.LOGRADOURO,
|
||||||
|
TIU.TB_TIPOLOGRADOURO_ID,
|
||||||
|
TIU.SELECIONADO,
|
||||||
|
TIU.COMPLEMENTO,
|
||||||
|
TIU.TIPO_IMOVEL,
|
||||||
|
TIU.TIPO_CONSTRUCAO,
|
||||||
|
TIU.NUMERO_EDIFICACAO,
|
||||||
|
TIU.IPTU,
|
||||||
|
TIU.CCIR,
|
||||||
|
TIU.NIRF,
|
||||||
|
TIU.LOTE,
|
||||||
|
TIU.TORRE,
|
||||||
|
TIU.NOMELOTEAMENTO,
|
||||||
|
TIU.NOMECONDOMINIO,
|
||||||
|
TIU.NUMERO,
|
||||||
|
TIU.CNM_NUMERO,
|
||||||
|
TIU.IMOVEL_PUBLICO_UNIAO,
|
||||||
|
TIU.SPU_RIP,
|
||||||
|
TIU.CAT,
|
||||||
|
TIU.INSCRICAO_MUNICIPAL,
|
||||||
|
TIU.CIB,
|
||||||
|
TIU.AREA_CONSTRUIDA
|
||||||
|
FROM T_IMOVEL_UNIDADE TIU
|
||||||
|
WHERE TIU.IMOVEL_ID = :imovelId """
|
||||||
|
|
||||||
|
params = {
|
||||||
|
"imovelId": t_imovel_unidade_index_schema.imovel_id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do sql
|
||||||
|
response = self.fetch_all(sql, params)
|
||||||
|
|
||||||
|
# Retorna os dados localizados
|
||||||
|
return response
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TUnidadeImovelUnidadeSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUnidadeSaveRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de salvamento de um novo registro na tabela t_t_imovel_unidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TUnidadeImovelUnidadeSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de salvamento no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TUnidadeImovelUnidadeSchema): O esquema com os dados a serem salvos.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O registro recém-criado.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: Caso ocorra um erro na execução da query.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Montagem do SQL
|
||||||
|
# ----------------------------------------------------
|
||||||
|
sql = """
|
||||||
|
INSERT INTO T_IMOVEL_UNIDADE (
|
||||||
|
IMOVEL_UNIDADE_ID,
|
||||||
|
IMOVEL_ID,
|
||||||
|
NUMERO_UNIDADE,
|
||||||
|
QUADRA,
|
||||||
|
AREA,
|
||||||
|
SUPERQUADRA,
|
||||||
|
CONJUNTO,
|
||||||
|
BLOCO,
|
||||||
|
AREA_DESCRITIVA,
|
||||||
|
CARACTERISTICA,
|
||||||
|
RESERVA_FLORESTAL,
|
||||||
|
GEO_REFERENCIAMENTO,
|
||||||
|
LOGRADOURO,
|
||||||
|
TB_TIPOLOGRADOURO_ID,
|
||||||
|
SELECIONADO,
|
||||||
|
COMPLEMENTO,
|
||||||
|
TIPO_IMOVEL,
|
||||||
|
TIPO_CONSTRUCAO,
|
||||||
|
TEXTO,
|
||||||
|
NUMERO_EDIFICACAO,
|
||||||
|
IPTU,
|
||||||
|
CCIR,
|
||||||
|
NIRF,
|
||||||
|
LOTE,
|
||||||
|
TORRE,
|
||||||
|
NOMELOTEAMENTO,
|
||||||
|
NOMECONDOMINIO,
|
||||||
|
NUMERO,
|
||||||
|
CNM_NUMERO,
|
||||||
|
IMOVEL_PUBLICO_UNIAO,
|
||||||
|
SPU_RIP,
|
||||||
|
CAT,
|
||||||
|
INSCRICAO_MUNICIPAL,
|
||||||
|
CIB,
|
||||||
|
AREA_CONSTRUIDA
|
||||||
|
) VALUES (
|
||||||
|
:imovel_unidade_id,
|
||||||
|
:imovel_id,
|
||||||
|
:numero_unidade,
|
||||||
|
:quadra,
|
||||||
|
:area,
|
||||||
|
:superquadra,
|
||||||
|
:conjunto,
|
||||||
|
:bloco,
|
||||||
|
:area_descritiva,
|
||||||
|
:caracteristica,
|
||||||
|
:reserva_florestal,
|
||||||
|
:geo_referenciamento,
|
||||||
|
:logradouro,
|
||||||
|
:tb_tipologradouro_id,
|
||||||
|
:selecionado,
|
||||||
|
:complemento,
|
||||||
|
:tipo_imovel,
|
||||||
|
:tipo_construcao,
|
||||||
|
:texto,
|
||||||
|
:numero_edificacao,
|
||||||
|
:iptu,
|
||||||
|
:ccir,
|
||||||
|
:nirf,
|
||||||
|
:lote,
|
||||||
|
:torre,
|
||||||
|
:nomeloteamento,
|
||||||
|
:nomecondominio,
|
||||||
|
:numero,
|
||||||
|
:cnm_numero,
|
||||||
|
:imovel_publico_uniao,
|
||||||
|
:spu_rip,
|
||||||
|
:cat,
|
||||||
|
:inscricao_municipal,
|
||||||
|
:cib,
|
||||||
|
:area_construida
|
||||||
|
)
|
||||||
|
RETURNING *;
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Preenchimento dos parâmetros
|
||||||
|
# ----------------------------------------------------
|
||||||
|
params = {
|
||||||
|
'imovel_unidade_id': t_imovel_unidade_schema.imovel_unidade_id,
|
||||||
|
'imovel_id': t_imovel_unidade_schema.imovel_id,
|
||||||
|
'numero_unidade': t_imovel_unidade_schema.numero_unidade,
|
||||||
|
'quadra': t_imovel_unidade_schema.quadra,
|
||||||
|
'area': t_imovel_unidade_schema.area,
|
||||||
|
'superquadra': t_imovel_unidade_schema.superquadra,
|
||||||
|
'conjunto': t_imovel_unidade_schema.conjunto,
|
||||||
|
'bloco': t_imovel_unidade_schema.bloco,
|
||||||
|
'area_descritiva': t_imovel_unidade_schema.area_descritiva,
|
||||||
|
'caracteristica': t_imovel_unidade_schema.caracteristica,
|
||||||
|
'reserva_florestal': t_imovel_unidade_schema.reserva_florestal,
|
||||||
|
'geo_referenciamento': t_imovel_unidade_schema.geo_referenciamento,
|
||||||
|
'logradouro': t_imovel_unidade_schema.logradouro,
|
||||||
|
'tb_tipologradouro_id': t_imovel_unidade_schema.tb_tipologradouro_id,
|
||||||
|
'selecionado': t_imovel_unidade_schema.selecionado,
|
||||||
|
'complemento': t_imovel_unidade_schema.complemento,
|
||||||
|
'tipo_imovel': t_imovel_unidade_schema.tipo_imovel,
|
||||||
|
'tipo_construcao': t_imovel_unidade_schema.tipo_construcao,
|
||||||
|
'texto': t_imovel_unidade_schema.texto,
|
||||||
|
'numero_edificacao': t_imovel_unidade_schema.numero_edificacao,
|
||||||
|
'iptu': t_imovel_unidade_schema.iptu,
|
||||||
|
'ccir': t_imovel_unidade_schema.ccir,
|
||||||
|
'nirf': t_imovel_unidade_schema.nirf,
|
||||||
|
'lote': t_imovel_unidade_schema.lote,
|
||||||
|
'torre': t_imovel_unidade_schema.torre,
|
||||||
|
'nomeloteamento': t_imovel_unidade_schema.nomeloteamento,
|
||||||
|
'nomecondominio': t_imovel_unidade_schema.nomecondominio,
|
||||||
|
'numero': t_imovel_unidade_schema.numero,
|
||||||
|
'cnm_numero': t_imovel_unidade_schema.cnm_numero,
|
||||||
|
'imovel_publico_uniao': t_imovel_unidade_schema.imovel_publico_uniao,
|
||||||
|
'spu_rip': t_imovel_unidade_schema.spu_rip,
|
||||||
|
'cat': t_imovel_unidade_schema.cat,
|
||||||
|
'inscricao_municipal': t_imovel_unidade_schema.inscricao_municipal,
|
||||||
|
'cib': t_imovel_unidade_schema.cib,
|
||||||
|
'area_construida': t_imovel_unidade_schema.area_construida,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do sql
|
||||||
|
return self.run_and_return(sql, params)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
|
||||||
|
# Informa que houve uma falha no salvamento do registro
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao salvar T_IMOVEL_UNIDADE: {e}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeShowRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de exibição de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema):
|
||||||
|
"""
|
||||||
|
Busca um registro específico de CENSEC_QUALIDADE pelo ID.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TImovelUnidadeIdSchema): O esquema que contém o ID do registro.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O registro encontrado ou None se não existir.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: Caso ocorra um erro na execução da query.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Montagem do SQL
|
||||||
|
sql = "SELECT * FROM T_IMOVEL_UNIDADE WHERE IMOVEL_UNIDADE_ID = :imovel_unidade_Id"
|
||||||
|
|
||||||
|
# Preenchimento de parâmetros
|
||||||
|
params = {
|
||||||
|
'imovel_unidade_Id': t_imovel_unidade_schema.imovel_unidade_id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execução do SQL
|
||||||
|
result = self.fetch_one(sql, params)
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Registro não encontrado"
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao buscar registro: {str(e)}"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
from abstracts.repository import BaseRepository
|
||||||
|
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeUpdateSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeUpdateRepository(BaseRepository):
|
||||||
|
"""
|
||||||
|
Repositório para a operação de atualização na tabela T_CENSEC_QUALIDADE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_id : int, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema):
|
||||||
|
"""
|
||||||
|
Executa a atualização de um registro na tabela.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_id (int): O ID do registro a ser atualizado.
|
||||||
|
t_imovel_unidade_schema (TImovelUnidadeUpdateSchema): O esquema com os dados a serem atualizados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O registro atualizado.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Dicionário de mapeamento: atributo → coluna SQL
|
||||||
|
field_map = {
|
||||||
|
"imovel_id": "IMOVEL_ID",
|
||||||
|
"numero_unidade": "NUMERO_UNIDADE",
|
||||||
|
"quadra": "QUADRA",
|
||||||
|
"area": "AREA",
|
||||||
|
"superquadra": "SUPERQUADRA",
|
||||||
|
"conjunto": "CONJUNTO",
|
||||||
|
"bloco": "BLOCO",
|
||||||
|
"area_descritiva": "AREA_DESCRITIVA",
|
||||||
|
"caracteristica": "CARACTERISTICA",
|
||||||
|
"reserva_florestal": "RESERVA_FLORESTAL",
|
||||||
|
"geo_referenciamento": "GEO_REFERENCIAMENTO",
|
||||||
|
"logradouro": "LOGRADOURO",
|
||||||
|
"tb_tipologradouro_id": "TB_TIPOLOGRADOURO_ID",
|
||||||
|
"selecionado": "SELECIONADO",
|
||||||
|
"complemento": "COMPLEMENTO",
|
||||||
|
"tipo_imovel": "TIPO_IMOVEL",
|
||||||
|
"tipo_construcao": "TIPO_CONSTRUCAO",
|
||||||
|
"texto": "TEXTO",
|
||||||
|
"numero_edificacao": "NUMERO_EDIFICACAO",
|
||||||
|
"iptu": "IPTU",
|
||||||
|
"ccir": "CCIR",
|
||||||
|
"nirf": "NIRF",
|
||||||
|
"lote": "LOTE",
|
||||||
|
"torre": "TORRE",
|
||||||
|
"nomeloteamento": "NOMELOTEAMENTO",
|
||||||
|
"nomecondominio": "NOMECONDOMINIO",
|
||||||
|
"numero": "NUMERO",
|
||||||
|
"cnm_numero": "CNM_NUMERO",
|
||||||
|
"imovel_publico_uniao": "IMOVEL_PUBLICO_UNIAO",
|
||||||
|
"spu_rip": "SPU_RIP",
|
||||||
|
"cat": "CAT",
|
||||||
|
"inscricao_municipal": "INSCRICAO_MUNICIPAL",
|
||||||
|
"cib": "CIB",
|
||||||
|
"area_construida": "AREA_CONSTRUIDA"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Lista de campos que serão atualizados
|
||||||
|
updates = []
|
||||||
|
params = {}
|
||||||
|
|
||||||
|
# Monta dinamicamente os campos presentes no schema
|
||||||
|
for attr, column in field_map.items():
|
||||||
|
value = getattr(t_imovel_unidade_schema, attr, None)
|
||||||
|
if value is not None:
|
||||||
|
updates.append(f"{column} = :{attr}")
|
||||||
|
params[attr] = value
|
||||||
|
|
||||||
|
# Nenhum campo a atualizar?
|
||||||
|
if not updates:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail="Nenhum campo válido foi enviado para atualização."
|
||||||
|
)
|
||||||
|
|
||||||
|
# ID obrigatório
|
||||||
|
params["t_imovel_unidade_id"] = t_imovel_unidade_id
|
||||||
|
|
||||||
|
# Monta o SQL dinâmico
|
||||||
|
sql = f"""
|
||||||
|
UPDATE T_IMOVEL_UNIDADE
|
||||||
|
SET {', '.join(updates)}
|
||||||
|
WHERE IMOVEL_UNIDADE_ID = :t_imovel_unidade_id
|
||||||
|
RETURNING *;
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Executa a query
|
||||||
|
result = self.run_and_return(sql, params)
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail="Nenhuma unidade de imóvel encontrada para o ID informado."
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
except HTTPException:
|
||||||
|
# Deixa HTTPException original passar direto
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=f"Erro ao atualizar o imóvel unidade: {str(e)}"
|
||||||
|
)
|
||||||
135
packages/v1/administrativo/schemas/t_imovel_schema.py
Normal file
135
packages/v1/administrativo/schemas/t_imovel_schema.py
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
from pydantic import BaseModel, field_validator, model_validator
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
from typing import Optional
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
# Função de sanitização
|
||||||
|
from actions.validations.text import Text
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema base
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelSchema(BaseModel):
|
||||||
|
imovel_id: Optional[int] = None
|
||||||
|
tipo_classe: Optional[str] = None
|
||||||
|
tipo_registro: Optional[str] = None
|
||||||
|
data_registro: Optional[datetime] = None
|
||||||
|
numero: Optional[float] = None
|
||||||
|
numero_letra: Optional[str] = None
|
||||||
|
cidade: Optional[str] = None
|
||||||
|
cep: Optional[float] = None
|
||||||
|
uf: Optional[str] = None
|
||||||
|
tb_bairro_id: Optional[int] = None
|
||||||
|
cartorio: Optional[str] = None
|
||||||
|
livro: Optional[str] = None
|
||||||
|
cns: Optional[float] = None
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema base
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelIndexSchema(BaseModel):
|
||||||
|
tipo_classe: str = None
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema para localizar um IMÓVEL pelo ID (GET)
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelIdSchema(BaseModel):
|
||||||
|
imovel_id: int
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema para criação de novo IMÓVEL (POST)
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelSaveSchema(BaseModel):
|
||||||
|
imovel_id: Optional[int] = None
|
||||||
|
tipo_classe: str
|
||||||
|
tipo_registro: str
|
||||||
|
data_registro: datetime
|
||||||
|
numero: float
|
||||||
|
numero_letra: Optional[str] = None
|
||||||
|
cidade: str
|
||||||
|
cep: Optional[float] = None
|
||||||
|
uf: str
|
||||||
|
tb_bairro_id: Optional[int] = None
|
||||||
|
cartorio: Optional[str] = None
|
||||||
|
livro: Optional[str] = None
|
||||||
|
cns: Optional[float] = None
|
||||||
|
|
||||||
|
# Sanitiza os campos textuais
|
||||||
|
@field_validator('tipo_classe', 'tipo_registro', 'numero_letra', 'cidade', 'uf', 'cartorio', 'livro')
|
||||||
|
def sanitize_fields(cls, v):
|
||||||
|
if v:
|
||||||
|
return Text.sanitize_input(v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
# Validações adicionais
|
||||||
|
@model_validator(mode='after')
|
||||||
|
def validate_fields(self):
|
||||||
|
errors = []
|
||||||
|
|
||||||
|
if not self.tipo_classe or len(self.tipo_classe.strip()) == 0:
|
||||||
|
errors.append({'input': 'tipo_classe', 'message': 'O tipo de classe é obrigatório.'})
|
||||||
|
|
||||||
|
if not self.tipo_registro or len(self.tipo_registro.strip()) == 0:
|
||||||
|
errors.append({'input': 'tipo_registro', 'message': 'O tipo de registro é obrigatório.'})
|
||||||
|
|
||||||
|
if not self.data_registro:
|
||||||
|
errors.append({'input': 'data_registro', 'message': 'A data de registro é obrigatória.'})
|
||||||
|
|
||||||
|
if not self.numero:
|
||||||
|
errors.append({'input': 'numero', 'message': 'O número é obrigatório.'})
|
||||||
|
|
||||||
|
if not self.cidade or len(self.cidade.strip()) == 0:
|
||||||
|
errors.append({'input': 'cidade', 'message': 'A cidade é obrigatória.'})
|
||||||
|
|
||||||
|
if not self.uf or len(self.uf.strip()) == 0:
|
||||||
|
errors.append({'input': 'uf', 'message': 'A UF é obrigatória.'})
|
||||||
|
|
||||||
|
if errors:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail=errors
|
||||||
|
)
|
||||||
|
|
||||||
|
return self
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema para atualização de IMÓVEL (PUT)
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelUpdateSchema(BaseModel):
|
||||||
|
tipo_classe: Optional[str] = None
|
||||||
|
tipo_registro: Optional[str] = None
|
||||||
|
data_registro: Optional[datetime] = None
|
||||||
|
numero: Optional[float] = None
|
||||||
|
numero_letra: Optional[str] = None
|
||||||
|
cidade: Optional[str] = None
|
||||||
|
cep: Optional[float] = None
|
||||||
|
uf: Optional[str] = None
|
||||||
|
tb_bairro_id: Optional[int] = None
|
||||||
|
cartorio: Optional[str] = None
|
||||||
|
livro: Optional[str] = None
|
||||||
|
cns: Optional[float] = None
|
||||||
|
|
||||||
|
# Sanitiza os campos textuais
|
||||||
|
@field_validator('tipo_classe', 'tipo_registro', 'numero_letra', 'cidade', 'uf', 'cartorio', 'livro')
|
||||||
|
def sanitize_fields(cls, v):
|
||||||
|
if v:
|
||||||
|
return Text.sanitize_input(v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
# Garante que ao menos um campo seja enviado
|
||||||
|
@model_validator(mode='after')
|
||||||
|
def validate_partial_update(self):
|
||||||
|
if not any([
|
||||||
|
self.tipo_classe, self.tipo_registro, self.data_registro, self.numero,
|
||||||
|
self.numero_letra, self.cidade, self.cep, self.uf, self.tb_bairro_id,
|
||||||
|
self.cartorio, self.livro, self.cns
|
||||||
|
]):
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail="Pelo menos um campo deve ser fornecido para a atualização."
|
||||||
|
)
|
||||||
|
return self
|
||||||
230
packages/v1/administrativo/schemas/t_imovel_unidade_schema.py
Normal file
230
packages/v1/administrativo/schemas/t_imovel_unidade_schema.py
Normal file
|
|
@ -0,0 +1,230 @@
|
||||||
|
from pydantic import BaseModel, field_validator, model_validator
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
from typing import Optional
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
# Função de sanitização
|
||||||
|
from actions.validations.text import Text
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema base para TImovelUnidade
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelUnidadeSchema(BaseModel):
|
||||||
|
imovel_unidade_id: Optional[int] = None
|
||||||
|
imovel_id: Optional[int] = None
|
||||||
|
numero_unidade: Optional[str] = None
|
||||||
|
quadra: Optional[str] = None
|
||||||
|
area: Optional[float] = None
|
||||||
|
superquadra: Optional[str] = None
|
||||||
|
conjunto: Optional[str] = None
|
||||||
|
bloco: Optional[str] = None
|
||||||
|
area_descritiva: Optional[str] = None
|
||||||
|
caracteristica: Optional[str] = None
|
||||||
|
reserva_florestal: Optional[str] = None
|
||||||
|
geo_referenciamento: Optional[str] = None
|
||||||
|
logradouro: Optional[str] = None
|
||||||
|
tb_tipologradouro_id: Optional[int] = None
|
||||||
|
selecionado: Optional[str] = None
|
||||||
|
complemento: Optional[str] = None
|
||||||
|
tipo_imovel: Optional[int] = None
|
||||||
|
tipo_construcao: Optional[int] = None
|
||||||
|
texto: Optional[bytes] = None
|
||||||
|
numero_edificacao: Optional[str] = None
|
||||||
|
iptu: Optional[str] = None
|
||||||
|
ccir: Optional[str] = None
|
||||||
|
nirf: Optional[str] = None
|
||||||
|
lote: Optional[str] = None
|
||||||
|
torre: Optional[str] = None
|
||||||
|
nomeloteamento: Optional[str] = None
|
||||||
|
nomecondominio: Optional[str] = None
|
||||||
|
numero: Optional[float] = None
|
||||||
|
cnm_numero: Optional[str] = None
|
||||||
|
imovel_publico_uniao: Optional[str] = None
|
||||||
|
spu_rip: Optional[str] = None
|
||||||
|
cat: Optional[str] = None
|
||||||
|
inscricao_municipal: Optional[str] = None
|
||||||
|
cib: Optional[str] = None
|
||||||
|
area_construida: Optional[float] = None
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema base para TImovelUnidadeIndex
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelUnidadeIndexSchema(BaseModel):
|
||||||
|
imovel_id: Optional[int] = None
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema para localizar uma unidade pelo ID (GET)
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelUnidadeIdSchema(BaseModel):
|
||||||
|
imovel_unidade_id: int
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema para criação de nova unidade (POST)
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelUnidadeSaveSchema(BaseModel):
|
||||||
|
imovel_id: int
|
||||||
|
numero_unidade: str
|
||||||
|
area: float
|
||||||
|
logradouro: str
|
||||||
|
tb_tipologradouro_id: int
|
||||||
|
texto: Optional[bytes] = None
|
||||||
|
|
||||||
|
# Outros campos opcionais
|
||||||
|
quadra: Optional[str] = None
|
||||||
|
superquadra: Optional[str] = None
|
||||||
|
conjunto: Optional[str] = None
|
||||||
|
bloco: Optional[str] = None
|
||||||
|
area_descritiva: Optional[str] = None
|
||||||
|
caracteristica: Optional[str] = None
|
||||||
|
reserva_florestal: Optional[str] = None
|
||||||
|
geo_referenciamento: Optional[str] = None
|
||||||
|
selecionado: Optional[str] = None
|
||||||
|
complemento: Optional[str] = None
|
||||||
|
tipo_imovel: Optional[int] = None
|
||||||
|
tipo_construcao: Optional[int] = None
|
||||||
|
numero_edificacao: Optional[str] = None
|
||||||
|
iptu: Optional[str] = None
|
||||||
|
ccir: Optional[str] = None
|
||||||
|
nirf: Optional[str] = None
|
||||||
|
lote: Optional[str] = None
|
||||||
|
torre: Optional[str] = None
|
||||||
|
nomeloteamento: Optional[str] = None
|
||||||
|
nomecondominio: Optional[str] = None
|
||||||
|
numero: Optional[float] = None
|
||||||
|
cnm_numero: Optional[str] = None
|
||||||
|
imovel_publico_uniao: Optional[str] = None
|
||||||
|
spu_rip: Optional[str] = None
|
||||||
|
cat: Optional[str] = None
|
||||||
|
inscricao_municipal: Optional[str] = None
|
||||||
|
cib: Optional[str] = None
|
||||||
|
area_construida: Optional[float] = None
|
||||||
|
|
||||||
|
# Sanitiza campos textuais
|
||||||
|
@field_validator(
|
||||||
|
'numero_unidade', 'quadra', 'superquadra', 'conjunto', 'bloco',
|
||||||
|
'area_descritiva', 'caracteristica', 'reserva_florestal', 'geo_referenciamento',
|
||||||
|
'logradouro', 'selecionado', 'complemento', 'numero_edificacao',
|
||||||
|
'iptu', 'ccir', 'nirf', 'lote', 'torre', 'nomeloteamento', 'nomecondominio',
|
||||||
|
'cnm_numero', 'imovel_publico_uniao', 'spu_rip', 'cat', 'inscricao_municipal', 'cib'
|
||||||
|
)
|
||||||
|
def sanitize_fields(cls, v):
|
||||||
|
if v:
|
||||||
|
return Text.sanitize_input(v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
# Valida campo BLOB
|
||||||
|
@field_validator('texto')
|
||||||
|
def validate_blob(cls, v):
|
||||||
|
if v is not None and not isinstance(v, bytes):
|
||||||
|
raise ValueError('O campo TEXTO deve ser do tipo bytes.')
|
||||||
|
return v
|
||||||
|
|
||||||
|
# Valida campos obrigatórios
|
||||||
|
@model_validator(mode='after')
|
||||||
|
def validate_required_fields(self):
|
||||||
|
errors = []
|
||||||
|
|
||||||
|
if not self.imovel_id:
|
||||||
|
errors.append({'input': 'imovel_id', 'message': 'O ID do imóvel é obrigatório.'})
|
||||||
|
if not self.numero_unidade or len(self.numero_unidade.strip()) == 0:
|
||||||
|
errors.append({'input': 'numero_unidade', 'message': 'O número da unidade é obrigatório.'})
|
||||||
|
if not self.area:
|
||||||
|
errors.append({'input': 'area', 'message': 'A área é obrigatória.'})
|
||||||
|
if not self.logradouro or len(self.logradouro.strip()) == 0:
|
||||||
|
errors.append({'input': 'logradouro', 'message': 'O logradouro é obrigatório.'})
|
||||||
|
if not self.tb_tipologradouro_id:
|
||||||
|
errors.append({'input': 'tb_tipologradouro_id', 'message': 'O tipo de logradouro é obrigatório.'})
|
||||||
|
|
||||||
|
if errors:
|
||||||
|
raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=errors)
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Schema para atualização de unidade (PUT)
|
||||||
|
# ----------------------------------------------------
|
||||||
|
class TImovelUnidadeUpdateSchema(BaseModel):
|
||||||
|
imovel_id: Optional[int] = None
|
||||||
|
numero_unidade: Optional[str] = None
|
||||||
|
area: Optional[float] = None
|
||||||
|
logradouro: Optional[str] = None
|
||||||
|
tb_tipologradouro_id: Optional[int] = None
|
||||||
|
texto: Optional[bytes] = None
|
||||||
|
|
||||||
|
# Outros campos opcionais
|
||||||
|
quadra: Optional[str] = None
|
||||||
|
superquadra: Optional[str] = None
|
||||||
|
conjunto: Optional[str] = None
|
||||||
|
bloco: Optional[str] = None
|
||||||
|
area_descritiva: Optional[str] = None
|
||||||
|
caracteristica: Optional[str] = None
|
||||||
|
reserva_florestal: Optional[str] = None
|
||||||
|
geo_referenciamento: Optional[str] = None
|
||||||
|
selecionado: Optional[str] = None
|
||||||
|
complemento: Optional[str] = None
|
||||||
|
tipo_imovel: Optional[int] = None
|
||||||
|
tipo_construcao: Optional[int] = None
|
||||||
|
numero_edificacao: Optional[str] = None
|
||||||
|
iptu: Optional[str] = None
|
||||||
|
ccir: Optional[str] = None
|
||||||
|
nirf: Optional[str] = None
|
||||||
|
lote: Optional[str] = None
|
||||||
|
torre: Optional[str] = None
|
||||||
|
nomeloteamento: Optional[str] = None
|
||||||
|
nomecondominio: Optional[str] = None
|
||||||
|
numero: Optional[float] = None
|
||||||
|
cnm_numero: Optional[str] = None
|
||||||
|
imovel_publico_uniao: Optional[str] = None
|
||||||
|
spu_rip: Optional[str] = None
|
||||||
|
cat: Optional[str] = None
|
||||||
|
inscricao_municipal: Optional[str] = None
|
||||||
|
cib: Optional[str] = None
|
||||||
|
area_construida: Optional[float] = None
|
||||||
|
|
||||||
|
# Sanitiza campos textuais
|
||||||
|
@field_validator(
|
||||||
|
'numero_unidade', 'quadra', 'superquadra', 'conjunto', 'bloco',
|
||||||
|
'area_descritiva', 'caracteristica', 'reserva_florestal', 'geo_referenciamento',
|
||||||
|
'logradouro', 'selecionado', 'complemento', 'numero_edificacao',
|
||||||
|
'iptu', 'ccir', 'nirf', 'lote', 'torre', 'nomeloteamento', 'nomecondominio',
|
||||||
|
'cnm_numero', 'imovel_publico_uniao', 'spu_rip', 'cat', 'inscricao_municipal', 'cib'
|
||||||
|
)
|
||||||
|
def sanitize_fields(cls, v):
|
||||||
|
if v:
|
||||||
|
return Text.sanitize_input(v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
# Valida campo BLOB
|
||||||
|
@field_validator('texto')
|
||||||
|
def validate_blob(cls, v):
|
||||||
|
if v is not None and not isinstance(v, bytes):
|
||||||
|
raise ValueError('O campo TEXTO deve ser do tipo bytes.')
|
||||||
|
return v
|
||||||
|
|
||||||
|
# Garante que ao menos um campo seja enviado
|
||||||
|
@model_validator(mode='after')
|
||||||
|
def validate_partial_update(self):
|
||||||
|
if not any([
|
||||||
|
self.imovel_id, self.numero_unidade, self.area, self.logradouro,
|
||||||
|
self.tb_tipologradouro_id, self.texto, self.quadra, self.superquadra,
|
||||||
|
self.conjunto, self.bloco, self.area_descritiva, self.caracteristica,
|
||||||
|
self.reserva_florestal, self.geo_referenciamento, self.selecionado,
|
||||||
|
self.complemento, self.tipo_imovel, self.tipo_construcao, self.numero_edificacao,
|
||||||
|
self.iptu, self.ccir, self.nirf, self.lote, self.torre, self.nomeloteamento,
|
||||||
|
self.nomecondominio, self.numero, self.cnm_numero, self.imovel_publico_uniao,
|
||||||
|
self.spu_rip, self.cat, self.inscricao_municipal, self.cib, self.area_construida
|
||||||
|
]):
|
||||||
|
return self
|
||||||
|
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail="Pelo menos um campo deve ser fornecido para a atualização."
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel.t_imovel_delete_action import TImovelDeleteAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIdSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelDeleteService:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de exclusão de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_id_schema: TImovelIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de exclusão do registro no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_schema (TCensecQualidadeIdSchema): O esquema com o ID do registro a ser excluído.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exclusão.
|
||||||
|
"""
|
||||||
|
# Instanciamento da ação
|
||||||
|
t_imovel_delete_action = TImovelDeleteAction()
|
||||||
|
|
||||||
|
# Executa a ação em questão
|
||||||
|
data = t_imovel_delete_action.execute(t_imovel_id_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return data
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel.t_imovel_index_action import TImovelIndexAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIndexSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelIndexService:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de listagem de registros na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_index_schema: TImovelIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de busca de todos os registros no banco de dados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A lista de registros encontrados.
|
||||||
|
"""
|
||||||
|
# Instanciamento da ação
|
||||||
|
t_imovel_index_action = TImovelIndexAction()
|
||||||
|
|
||||||
|
# Executa a busca de todas as ações
|
||||||
|
data = t_imovel_index_action.execute(t_imovel_index_schema)
|
||||||
|
|
||||||
|
# Verifica se foram localizados registros
|
||||||
|
if not data:
|
||||||
|
# Retorna uma exceção
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail='Não foi possível localizar os registros de T_IMOVEL_UNIDADE'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Retorna as informações localizadas
|
||||||
|
return data
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
from api.actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel.t_imovel_save_action import TImovelSaveAction
|
||||||
|
from api.packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelSaveSchema
|
||||||
|
from api.packages.v1.sequencia.services.g_sequencia.checkout_service import GenerateService
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelSaveService:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Ação responsável por carregar as services de acordo com o estado
|
||||||
|
self.dynamic_import = DynamicImport()
|
||||||
|
|
||||||
|
# Define o pacote que deve ser carregado
|
||||||
|
self.dynamic_import.set_package("administrativo")
|
||||||
|
|
||||||
|
# Define a tabela que o pacote pertence
|
||||||
|
self.dynamic_import.set_table("t_imovel")
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Cadastra o novo CENSEC_QUALIDADE
|
||||||
|
def execute(self, t_imovel_save_schema: TImovelSaveSchema):
|
||||||
|
|
||||||
|
# Verifica se precisa gerar o ID de sequência
|
||||||
|
if not t_imovel_save_schema.imovel_id:
|
||||||
|
|
||||||
|
# Crio um objeto de sequencia
|
||||||
|
sequencia_schema = GSequenciaSchema()
|
||||||
|
|
||||||
|
# Define os dados para atualizar a sequencia
|
||||||
|
sequencia_schema.tabela = 'T_IMOVEL'
|
||||||
|
|
||||||
|
# Busco a sequência atualizada
|
||||||
|
generate = GenerateService()
|
||||||
|
|
||||||
|
# Busco a sequência atualizada
|
||||||
|
sequencia = generate.execute(sequencia_schema)
|
||||||
|
|
||||||
|
# Atualiza os dados da chave primária
|
||||||
|
t_imovel_save_schema.imovel_id = sequencia.sequencia
|
||||||
|
|
||||||
|
# Instanciamento de ações
|
||||||
|
t_imovel_save_action = TImovelSaveAction()
|
||||||
|
|
||||||
|
# Retorna o resultado da operação
|
||||||
|
return t_imovel_save_action.execute(t_imovel_save_schema)
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_show_action import TImovelUnidadeShowAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeShowService:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de busca de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de busca no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser buscado.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da busca.
|
||||||
|
"""
|
||||||
|
# Instanciamento da ação
|
||||||
|
t_imovel_unidade_show_action = TImovelUnidadeShowAction()
|
||||||
|
|
||||||
|
# Executa a ação em questão
|
||||||
|
data = t_imovel_unidade_show_action.execute(t_imovel_unidade_id_schema)
|
||||||
|
|
||||||
|
if not data:
|
||||||
|
# Retorna uma exceção
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail='Não foi possível localizar o registro de T_IMOVEL_UNIDADE'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return data
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_update_action import TImovelUnidadeUpdateAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeUpdateSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUnidadeUpdateService:
|
||||||
|
"""
|
||||||
|
Serviço para a operação de atualização de um registro na tabela
|
||||||
|
t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
def execute(self, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de atualização no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de atualização.
|
||||||
|
"""
|
||||||
|
# Instanciamento de ações
|
||||||
|
t_imovel_unidade_update_action = TImovelUnidadeUpdateAction()
|
||||||
|
|
||||||
|
# Retorna o resultado da operação
|
||||||
|
return t_imovel_unidade_update_action.execute(t_imovel_unidade_update_schema)
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_delete_action import TImovelUnidadeDeleteAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUnidadeDeleteService:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de exclusão de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de exclusão do registro no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeIdSchema): O esquema com o ID do registro a ser excluído.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de exclusão.
|
||||||
|
"""
|
||||||
|
# Instanciamento da ação
|
||||||
|
t_imovel_unidade_delete = TImovelUnidadeDeleteAction()
|
||||||
|
|
||||||
|
# Executa a ação em questão
|
||||||
|
data = t_imovel_unidade_delete.execute(t_imovel_unidade_schema)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return data
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_index_action import TImovelUnidadeIndexAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIndexSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeIndexService:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de listagem de registros na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_index_schema: TImovelUnidadeIndexSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de busca de todos os registros no banco de dados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A lista de registros encontrados.
|
||||||
|
"""
|
||||||
|
# Instanciamento da ação
|
||||||
|
t_imovel_unidade_index_action = TImovelUnidadeIndexAction()
|
||||||
|
|
||||||
|
# Executa a busca de todas as ações
|
||||||
|
data = t_imovel_unidade_index_action.execute(t_imovel_unidade_index_schema)
|
||||||
|
|
||||||
|
# Verifica se foram localizados registros
|
||||||
|
if not data:
|
||||||
|
# Retorna uma exceção
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail='Não foi possível localizar os registros de T_IMOVEL_UNIDADE'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Retorna as informações localizadas
|
||||||
|
return data
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
from actions.dynamic_import.dynamic_import import DynamicImport
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_save_action import TImovelUnidadeSaveAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema
|
||||||
|
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
|
||||||
|
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeSaveService:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Ação responsável por carregar as services de acordo com o estado
|
||||||
|
self.dynamic_import = DynamicImport()
|
||||||
|
|
||||||
|
# Define o pacote que deve ser carregado
|
||||||
|
self.dynamic_import.set_package("administrativo")
|
||||||
|
|
||||||
|
# Define a tabela que o pacote pertence
|
||||||
|
self.dynamic_import.set_table("t_imovel_unidade")
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Cadastra o novo CENSEC_QUALIDADE
|
||||||
|
def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema):
|
||||||
|
|
||||||
|
# Armazena possíveis erros
|
||||||
|
errors = []
|
||||||
|
|
||||||
|
# Verifica se precisa gerar o ID de sequência
|
||||||
|
if not t_imovel_unidade_schema.imovel_unidade_id:
|
||||||
|
|
||||||
|
# Crio um objeto de sequencia
|
||||||
|
sequencia_schema = GSequenciaSchema()
|
||||||
|
|
||||||
|
# Define os dados para atualizar a sequencia
|
||||||
|
sequencia_schema.tabela = 'T_CENSEC_QUALIDADE'
|
||||||
|
|
||||||
|
# Busco a sequência atualizada
|
||||||
|
generate = GenerateService()
|
||||||
|
|
||||||
|
# Busco a sequência atualizada
|
||||||
|
sequencia = generate.execute(sequencia_schema)
|
||||||
|
|
||||||
|
# Atualiza os dados da chave primária
|
||||||
|
t_imovel_unidade_schema.imovel_unidade_id = sequencia.sequencia
|
||||||
|
|
||||||
|
# Instanciamento de ações
|
||||||
|
t_imovel_unidade_save_action = TImovelUnidadeSaveAction()
|
||||||
|
|
||||||
|
# Retorna o resultado da operação
|
||||||
|
return t_imovel_unidade_save_action.execute(t_imovel_unidade_schema)
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_show_action import TImovelUnidadeShowAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema
|
||||||
|
from fastapi import HTTPException, status
|
||||||
|
|
||||||
|
class TImovelUnidadeShowService:
|
||||||
|
"""
|
||||||
|
Serviço responsável por encapsular a lógica de negócio para a operação
|
||||||
|
de busca de um registro na tabela t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de busca no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser buscado.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da busca.
|
||||||
|
"""
|
||||||
|
# Instanciamento da ação
|
||||||
|
t_imovel_unidade_show_action = TImovelUnidadeShowAction()
|
||||||
|
|
||||||
|
# Executa a ação em questão
|
||||||
|
data = t_imovel_unidade_show_action.execute(t_imovel_unidade_id_schema)
|
||||||
|
|
||||||
|
if not data:
|
||||||
|
# Retorna uma exceção
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
detail='Não foi possível localizar o registro de T_IMOVEL_UNIDADE'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Retorno da informação
|
||||||
|
return data
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_update_action import TImovelUnidadeUpdateAction
|
||||||
|
from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeUpdateSchema
|
||||||
|
|
||||||
|
|
||||||
|
class TImovelUnidadeUpdateService:
|
||||||
|
"""
|
||||||
|
Serviço para a operação de atualização de um registro na tabela
|
||||||
|
t_censec_qualidade.
|
||||||
|
"""
|
||||||
|
def execute(self, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema):
|
||||||
|
"""
|
||||||
|
Executa a operação de atualização no banco de dados.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
t_imovel_unidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
O resultado da operação de atualização.
|
||||||
|
"""
|
||||||
|
# Instanciamento de ações
|
||||||
|
t_imovel_unidade_update_action = TImovelUnidadeUpdateAction()
|
||||||
|
|
||||||
|
# Retorna o resultado da operação
|
||||||
|
return t_imovel_unidade_update_action.execute(t_imovel_unidade_update_schema)
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
# Importa o gerenciador de rotas do FastAPI
|
# Importa o gerenciador de rotas do FastAPI
|
||||||
|
from api.packages.v1.administrativo.endpoints import t_imovel_unidade_endpoint
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
|
||||||
# Importa os módulos de rotas específicos
|
# Importa os módulos de rotas específicos
|
||||||
|
|
@ -26,6 +27,7 @@ from packages.v1.administrativo.endpoints import t_servico_tipo_endpoint
|
||||||
from packages.v1.administrativo.endpoints import g_marcacao_tipo_endpoint
|
from packages.v1.administrativo.endpoints import g_marcacao_tipo_endpoint
|
||||||
from packages.v1.administrativo.endpoints import t_servico_etiqueta_endpoint
|
from packages.v1.administrativo.endpoints import t_servico_etiqueta_endpoint
|
||||||
from packages.v1.administrativo.endpoints import g_uf_endpoint
|
from packages.v1.administrativo.endpoints import g_uf_endpoint
|
||||||
|
from packages.v1.administrativo.endpoints import t_imovel_endpoint
|
||||||
|
|
||||||
# Cria uma instância do APIRouter que vai agregar todas as rotas da API
|
# Cria uma instância do APIRouter que vai agregar todas as rotas da API
|
||||||
api_router = APIRouter()
|
api_router = APIRouter()
|
||||||
|
|
@ -153,3 +155,13 @@ api_router.include_router(
|
||||||
api_router.include_router(
|
api_router.include_router(
|
||||||
g_uf_endpoint.router, prefix="/administrativo/g_uf", tags=["Estados"]
|
g_uf_endpoint.router, prefix="/administrativo/g_uf", tags=["Estados"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Inclui as rotas de t_imovel
|
||||||
|
api_router.include_router(
|
||||||
|
t_imovel_endpoint.router, prefix="/administrativo/t_imovel", tags=["Imóveis"]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Inclui as rotas de t_imovel_unidade
|
||||||
|
api_router.include_router(
|
||||||
|
t_imovel_unidade_endpoint.router, prefix="/administrativo/t_imovel_unidade", tags=["Imóveis Unidades"]
|
||||||
|
)
|
||||||
Loading…
Add table
Reference in a new issue