diff --git a/packages/v1/administrativo/repositories/ato_documento/ato_documento_save_multiple_repository.py b/packages/v1/administrativo/repositories/ato_documento/ato_documento_save_multiple_repository.py index 14503f9..902f9a7 100644 --- a/packages/v1/administrativo/repositories/ato_documento/ato_documento_save_multiple_repository.py +++ b/packages/v1/administrativo/repositories/ato_documento/ato_documento_save_multiple_repository.py @@ -99,3 +99,58 @@ class SaveMultipleRepository: db.add(new_documento) return new_documento + + # ------------------------------------------------------- + # Método principal — grava múltiplos documentos + # ------------------------------------------------------- + def execute(self, documentos: List[AtoDocumentoSaveMultipleSchema]): + db = SessionLocal() + results = [] + + if not AES_KEY: + db.close() + raise Exception("A chave AES (aeskey) não está configurada.") + + for doc_schema in documentos: + codigo_selo_log = getattr(doc_schema, "codigo_selo", "SELO_INDISPONÍVEL") + + try: + new_doc = self._save_documento(db, doc_schema) + db.commit() + + results.append( + { + "success": True, + "message": "Documento salvo com sucesso.", + "data": { + "codigo_selo": codigo_selo_log, + "ato_principal_id": new_doc.ato_principal_id, + }, + } + ) + + except HTTPException as he: + db.rollback() + results.append( + { + "success": False, + "error": he.detail, + "data": {"codigo_selo": codigo_selo_log}, + } + ) + + except Exception as e: + db.rollback() + print(f"ERRO AO SALVAR DOCUMENTO (SELO {codigo_selo_log}): {e}") + traceback.print_exc() + + results.append( + { + "success": False, + "error": "Erro interno ao salvar o documento.", + "data": {"codigo_selo": codigo_selo_log}, + } + ) + + db.close() + return results