+ );
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/[id]/detalhes/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/[id]/detalhes/page.tsx
new file mode 100644
index 0000000..402df0c
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/[id]/detalhes/page.tsx
@@ -0,0 +1,83 @@
+'use client'
+
+import { useEffect, useState } from "react";
+import { useParams } from "next/navigation";
+
+import {
+ Card,
+ CardContent
+} from "@/components/ui/card";
+import MainEditor from "@/components/MainEditor";
+
+import Loading from "@/app/_components/loading/loading";
+import { useTMinutaReadHook } from '../../../../_hooks/t_minuta/useTMinutaReadHook';
+import { TMinutaInterface } from '../../../../_interfaces/TMinutaInterface';
+
+export default function TMinutaDetalhes() {
+ const params = useParams();
+ const { tMinuta, fetchTMinuta } = useTMinutaReadHook();
+ const [editorContent, setEditorContent] = useState(null); // Inicialmente nulo até o texto ser carregado
+
+ useEffect(() => {
+ if (params.id) {
+ fetchTMinuta({ t_minuta_id: Number(params.id) } as TMinutaInterface);
+ }
+ }, []);
+
+ useEffect(() => {
+ if (tMinuta?.texto) {
+ setEditorContent(tMinuta.texto); // Atualiza o conteúdo assim que estiver disponível
+ }
+ }, [tMinuta]); // Dependência de `tMinuta` para que a atualização aconteça quando os dados chegarem
+
+ const handleEditorChange = (content: string) => {
+ setEditorContent(content); // Atualiza o estado com o conteúdo do editor
+ };
+
+ if (!tMinuta) return ;
+
+ // Renderiza o editor apenas se o texto foi carregado
+ if (editorContent === null) {
+ return ; // Pode mostrar um carregando ou qualquer outra coisa enquanto o conteúdo não está disponível
+ }
+
+ return (
+
+
+
+
+
+
+ Descrição
+
+
+ {tMinuta.descricao}
+
+
+
+
+ Situação
+
+
+ {tMinuta.situacao === "A" ? "Ativo" : "Inativo"}
+
+
+
+
+ Texto
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/formulario/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/formulario/page.tsx
new file mode 100644
index 0000000..9a18d59
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/formulario/page.tsx
@@ -0,0 +1,113 @@
+'use client';
+
+import z from 'zod';
+import { useEffect } from 'react';
+import { useForm, Controller } from 'react-hook-form';
+import { zodResolver } from '@hookform/resolvers/zod';
+
+import { Button } from '@/components/ui/button';
+import { Checkbox } from '@/components/ui/checkbox';
+import {
+ Form,
+ FormControl,
+ FormField,
+ FormItem,
+ FormLabel,
+ FormMessage
+} from '@/components/ui/form';
+import { Input } from '@/components/ui/input';
+import { Label } from '@/components/ui/label';
+
+import MainEditor from '@/components/MainEditor';
+import { TMinutaSchema } from '../../../_schemas/TMinutaSchema';
+import { useTMinutaSaveHook } from '../../../_hooks/t_minuta/useTMinutaSaveHook';
+import { Card, CardContent } from '@/components/ui/card';
+
+type FormValues = z.infer;
+
+export default function TMinutaForm() {
+
+ const { tMinuta, saveTMinuta } = useTMinutaSaveHook();
+
+ const form = useForm({
+ resolver: zodResolver(TMinutaSchema),
+ defaultValues: {
+ natureza_id: undefined,
+ descricao: '',
+ situacao: 'A',
+ texto: '',
+ }
+ });
+
+ async function onSubmit(values: FormValues) {
+ saveTMinuta(values);
+ }
+
+ return (
+
+ );
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts
index 807e864..928f9ff 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts
@@ -2,7 +2,7 @@ import API from "@/services/api/Api";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
import BairroMockDeDados from "./mockBairro";
-const useMock = true
+const useMock = false
export default async function GTBBairroIndexData() {
if (useMock) {
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts
index 227b30b..a9fa5ae 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts
@@ -2,7 +2,7 @@ import API from "@/services/api/Api";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
import TipoLogradouroMockDeDados from "./mockTipoLogradouro";
-const useMock = true
+const useMock = false
export default async function GTBTipoLogradouroIndexData() {
if (useMock) {
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData.ts
new file mode 100644
index 0000000..806f75f
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData.ts
@@ -0,0 +1,25 @@
+import API from "@/services/api/Api";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+import CensecNaturezaLitigioMockDeDados from "./mockCensecNaturezaLitigio";
+
+const useMock = false
+
+export default async function TCensecNaturezaLitigioIndexData() {
+
+ if (useMock) {
+ return await CensecNaturezaLitigioMockDeDados();
+ }
+
+ const api = new API();
+ try {
+ const dados = await api.send({
+ method: Methods.GET,
+ endpoint: `administrativo/t_censec_naturezalitigio/`
+ });
+ return dados
+ } catch (error) {
+ console.log(error)
+ return error
+ }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData.ts
new file mode 100644
index 0000000..c12b863
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData.ts
@@ -0,0 +1,16 @@
+import API from "@/services/api/Api";
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+
+export default async function TCensecNaturezaLitigioRemoveData(data: TCensecNaturezaLitigioInterface) {
+
+ const api = new API();
+
+ console.log(typeof(data.censec_naturezalitigio_id))
+
+ return await api.send({
+ method: Methods.DELETE,
+ endpoint: `administrativo/t_censec_naturezalitigio/${data.censec_naturezalitigio_id}`
+ });
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData.ts
new file mode 100644
index 0000000..8e2688b
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData.ts
@@ -0,0 +1,15 @@
+import API from "@/services/api/Api";
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+
+export default async function TCensecNaturezaLitigioTipoSaveData(data: TCensecNaturezaLitigioInterface) {
+
+ const api = new API();
+
+ return await api.send({
+ method: data.censec_naturezalitigio_id ? Methods.PUT : Methods.POST,
+ endpoint: `administrativo/t_censec_naturezalitigio/${data.censec_naturezalitigio_id ? data.censec_naturezalitigio_id : ''}`,
+ body: data
+ });
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/mockCensecNaturezaLitigio.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/mockCensecNaturezaLitigio.ts
new file mode 100644
index 0000000..ed360af
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensecNaturezaLitigio/mockCensecNaturezaLitigio.ts
@@ -0,0 +1,113 @@
+export default async function CensecNaturezaLitigioMockDeDados() {
+ return Promise.resolve({
+ status: 200,
+ message: 'Dados localizados',
+ data: [
+ {
+ censec_naturezaltigio_id: 1,
+ descricao: "Bancário",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 2,
+ descricao: "Concessionária de Água",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 3,
+ descricao: "Concessionária de Gás",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 4,
+ descricao: "Concessionária de Luz",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 5,
+ descricao: "Consumidor",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 6,
+ descricao: "Contrato",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 7,
+ descricao: "Empresarial",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 8,
+ descricao: "Família",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 9,
+ descricao: "Locação",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 10,
+ descricao: "Mobiliário",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 11,
+ descricao: "Previdência",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 12,
+ descricao: "Saúde",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 13,
+ descricao: "Seguro",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 14,
+ descricao: "Serviço Público",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 15,
+ descricao: "Sucessões",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 16,
+ descricao: "Telefonia",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 17,
+ descricao: "Transporte",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 18,
+ descricao: "Transporte - Avião",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 19,
+ descricao: "Transporte - Barco",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 20,
+ descricao: "Transporte Metrô",
+ situacao: "A"
+ },
+ {
+ censec_naturezaltigio_id: 21,
+ descricao: "Transporte - Ônibus",
+ situacao: "A"
+ }
+]
+ });
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/MinutaTexto.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/MinutaTexto.ts
new file mode 100644
index 0000000..24e851f
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/MinutaTexto.ts
@@ -0,0 +1,81 @@
+export const textoEscrituraCompraEVenda = `
+
ESCRITURA PÚBLICA DE COMPRA E VENDA
+
+
Saibam quantos este público instrumento virem que, aos [[dia]] dias do mês de [[mes]] do ano de [[ano]], nesta cidade de [[cidade]], Estado de [[estado]], neste Tabelionato de Notas, perante mim, [[tabeliao]], Tabelião de Notas, compareceram como partes entre si, de um lado como VENDEDOR(ES):
+
+
[[nome_completo_vendedor]], [[nacionalidade_vendedor]], [[estado_civil_vendedor]], [[profissao_vendedor]], portador da cédula de identidade RG nº [[rg_vendedor]] e inscrito no CPF/MF sob o nº [[cpf_vendedor]], residente e domiciliado à [[endereco_vendedor]];
+
+
E de outro lado como COMPRADOR(ES):
+
+
[[nome_completo_comprador]], [[nacionalidade_comprador]], [[estado_civil_comprador]], [[profissao_comprador]], portador da cédula de identidade RG nº [[rg_comprador]] e inscrito no CPF/MF sob o nº [[cpf_comprador]], residente e domiciliado à [[endereco_comprador]];
+
+
Entre as partes acima identificadas e qualificadas, justas e contratadas, foi ajustada, e por este público instrumento, lavrado na forma da lei, têm como certo e contratado a presente ESCRITURA PÚBLICA DE COMPRA E VENDA do imóvel situado à [[endereco_imovel]], com área de [[area_imovel]]m², registrado sob matrícula nº [[matricula_imovel]], no [[cartorio_registro]] Registro de Imóveis desta cidade.
+
+
O preço certo e ajustado para a presente transação é de R$ [[valor_venda]] ([[valor_extenso]]), que o(s) comprador(es) declara(m) ter pago ao(s) vendedor(es), neste ato, em moeda corrente nacional, dando-lhe(s) plena, geral e irrevogável quitação.
+
+
Assim, justos e contratados, requerem seja lavrada a presente escritura, que lida e achada conforme, vai assinada pelas partes e por mim, [[tabeliao]], que a subscrevo.
Saibam quantos este público instrumento virem que, aos [[dia]] dias do mês de [[mes]] do ano de [[ano]], nesta cidade de [[cidade]], Estado de [[estado]], neste Tabelionato de Notas, perante mim, [[tabeliao]], Tabelião de Notas, compareceram como partes entre si, de um lado como HERDEIROS(AS):
+
+
[[nome_herdeiro_1]], [[nacionalidade_herdeiro_1]], [[estado_civil_herdeiro_1]], [[profissao_herdeiro_1]], portador(a) do RG nº [[rg_herdeiro_1]] e CPF nº [[cpf_herdeiro_1]], residente e domiciliado(a) à [[endereco_herdeiro_1]];
+
+
[[nome_herdeiro_2]], [[nacionalidade_herdeiro_2]], [[estado_civil_herdeiro_2]], [[profissao_herdeiro_2]], portador(a) do RG nº [[rg_herdeiro_2]] e CPF nº [[cpf_herdeiro_2]], residente e domiciliado(a) à [[endereco_herdeiro_2]];
+
+
e assim por diante, se houver outros herdeiros.
+
+
Declararam os presentes que são únicos e legítimos herdeiros do(a) falecido(a) [[nome_falecido]], falecido(a) em [[data_obito]], na cidade de [[cidade_obito]], conforme certidão de óbito lavrada sob o nº [[numero_certidao_obito]], e que, por meio desta escritura, realizam entre si a PARTILHA AMIGÁVEL dos bens deixados pelo(a) de cujus, na forma seguinte:
+
+
Relação dos bens:
+
+
+
[[descricao_bem_1]] - avaliado em R$ [[valor_bem_1]];
+
[[descricao_bem_2]] - avaliado em R$ [[valor_bem_2]];
As partes declaram que a partilha foi realizada de comum acordo, de forma livre e consciente, não havendo vícios de consentimento, nem litígios entre os herdeiros.
+
+
Requerem que esta escritura seja registrada onde necessário, e produza todos os efeitos legais.
+
+
E por estarem assim justos e contratados, firmam o presente instrumento, que lido e achado conforme, vai por todos assinado e por mim, [[tabeliao]], que o lavrei e subscrevo.
Outorgante: [[nome_outorgante]], [[nacionalidade_outorgante]], [[estado_civil_outorgante]], [[profissao_outorgante]], portador(a) do RG nº [[rg_outorgante]] e CPF nº [[cpf_outorgante]], residente e domiciliado(a) à [[endereco_outorgante]].
+
+
Outorgado: [[nome_outorgado]], advogado inscrito na OAB/[[uf_oab]] sob o nº [[numero_oab]], com escritório profissional situado à [[endereco_escritorio]].
+
+
Por este instrumento particular, o outorgante nomeia e constitui seu bastante procurador o(a) outorgado(a), para o foro em geral, com poderes para o ajuizamento, defesa, acompanhamento, transação, conciliação, desistência, interposição e recebimento de recursos, substabelecer no todo ou em parte, e praticar todos os demais atos necessários ao fiel cumprimento deste mandato, especialmente para atuar em processos judiciais e administrativos, em todas as instâncias e tribunais, federais ou estaduais, inclusive para firmar compromisso, receber citações, intimações e notificações, assinar petições, requerimentos e demais documentos, e praticar todos os atos necessários para a defesa dos direitos do outorgante.
+
+
Esta procuração é válida por [[validade]] meses a contar da data de sua assinatura.
+
+
E, por assim estar justo e acordado, firma o presente instrumento em [[cidade]], aos [[dia]] dias do mês de [[mes]] do ano de [[ano]].
+`;
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaIndex.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaIndex.ts
new file mode 100644
index 0000000..943191c
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaIndex.ts
@@ -0,0 +1,24 @@
+import API from "@/services/api/Api";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+import { MinutaMockDeDadosPorId } from "./mockMinuta";
+
+const useMock = true;
+
+export default async function TMinutaIndex(t_minuta_id: number) {
+ if (useMock) {
+ console.log(await MinutaMockDeDadosPorId(t_minuta_id)); // Retorna o dado específico do mock
+ return await MinutaMockDeDadosPorId(t_minuta_id); // Retorna o dado específico do mock
+ }
+
+ const api = new API();
+ try {
+ const dados = await api.send({
+ method: Methods.GET,
+ endpoint: `administrativo/t_minuta/${t_minuta_id}`
+ });
+ return dados;
+ } catch (error) {
+ console.log(error);
+ return error;
+ }
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaIndexData.ts
new file mode 100644
index 0000000..41908ad
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaIndexData.ts
@@ -0,0 +1,23 @@
+import API from "@/services/api/Api";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+import MinutaMockDeDados from "./mockMinuta";
+
+const useMock = true;
+
+export default async function TMinutaIndexData() {
+ if (useMock) {
+ return await MinutaMockDeDados(); // Retorna todos os dados mockados
+ }
+
+ const api = new API();
+ try {
+ const dados = await api.send({
+ method: Methods.GET,
+ endpoint: `administrativo/t_minuta/`
+ });
+ return dados;
+ } catch (error) {
+ console.log(error);
+ return error;
+ }
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaRemoveData.ts
new file mode 100644
index 0000000..8870452
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaRemoveData.ts
@@ -0,0 +1,14 @@
+import API from "@/services/api/Api";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+
+export default async function TMinutaRemoveData(data: TMinutaInterface) {
+
+ const api = new API();
+
+ return await api.send({
+ method: Methods.DELETE,
+ endpoint: `administrativo/t_minuta/${data.t_minuta_id}`
+ });
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaSaveData.ts
new file mode 100644
index 0000000..c75171b
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/TMinutaSaveData.ts
@@ -0,0 +1,17 @@
+import API from "@/services/api/Api";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+import { Methods } from "@/services/api/enums/ApiMethodEnum";
+
+export default async function TMinutaSaveData(data: TMinutaInterface) {
+
+ const isUpdate = Boolean(data.t_minuta_id);
+
+ const api = new API();
+
+ return await api.send({
+ method: isUpdate ? Methods.PUT : Methods.POST,
+ endpoint: `administrativo/t_minuta/${data.t_minuta_id || ''}`,
+ body: data
+ });
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/mockMinuta.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/mockMinuta.ts
new file mode 100644
index 0000000..88ae986
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/TMinuta/mockMinuta.ts
@@ -0,0 +1,41 @@
+// Função para pegar todos os dados (usada em TMinutaIndexData)
+import { textoEscrituraCompraEVenda, textoEscrituraPartilhaAmigavel, textoProcuracaoAdJudicia } from "./MinutaTexto";
+
+export default async function MinutaMockDeDados() {
+ return Promise.resolve({
+ status: 200,
+ message: 'Dados localizados',
+ data: [
+ {
+ t_minuta_id: 1,
+ natureza_id: 1,
+ descricao: 'Escritura de Compra e Venda',
+ situacao: 'A',
+ texto: textoEscrituraCompraEVenda,
+ },
+ {
+ t_minuta_id: 2,
+ natureza_id: 1,
+ descricao: 'Escritura de Partilha Amigável',
+ situacao: 'A',
+ texto: textoEscrituraPartilhaAmigavel,
+ },
+ {
+ t_minuta_id: 3,
+ natureza_id: 2,
+ descricao: 'Procuração Ad Judicia',
+ situacao: 'A',
+ texto: textoProcuracaoAdJudicia,
+ },
+ ]
+ });
+}
+
+export async function MinutaMockDeDadosPorId(t_minuta_id: number) {
+ const allData = await MinutaMockDeDados();
+ return Promise.resolve({
+ status: 200,
+ message: 'Dados localizados',
+ data: allData.data.find((item) => item.t_minuta_id === t_minuta_id) || null
+ });
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook.ts
new file mode 100644
index 0000000..b68ba6f
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook.ts
@@ -0,0 +1,29 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { useState } from "react";
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+import TCensecNaturezaLitigioIndexService from "../../_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService";
+
+export const useTCensecNaturezaLitigioReadHook = () => {
+
+ const { setResponse } = useResponse();
+ const [tCensecNaturezaLitigio, setTCensecNaturezaLitigio] = useState([]);
+
+ const fetchTCensecNaturezaLitigio = async () => {
+
+ try {
+ const response = await TCensecNaturezaLitigioIndexService();
+
+ setTCensecNaturezaLitigio(response.data);
+
+ console.log(response)
+
+ setResponse(response);
+ } catch (error) {
+ console.log(error)
+ }
+
+ }
+
+ return { tCensecNaturezaLitigio, fetchTCensecNaturezaLitigio }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts
new file mode 100644
index 0000000..b550167
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts
@@ -0,0 +1,26 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+import { useState } from "react";
+import TCensecNaturezaLitigioRemoveData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData";
+
+export const useTCensecNaturezaLitigioRemoveHook = () => {
+
+ const { setResponse } = useResponse();
+
+ const [ tCensecNaturezaLitigio, setTCensecNaturezaLitigio ] = useState()
+
+ const removeTCensecNaturezaLitigio = async (data: TCensecNaturezaLitigioInterface) => {
+
+ console.log(data.censec_naturezaltigio_id)
+
+ const response = await TCensecNaturezaLitigioRemoveData(data);
+
+ setTCensecNaturezaLitigio(data)
+
+ setResponse(response);
+
+ }
+
+ return { tCensecNaturezaLitigio, removeTCensecNaturezaLitigio }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook.ts
new file mode 100644
index 0000000..9ba939b
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook.ts
@@ -0,0 +1,31 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { useState } from "react";
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+import TCensecNaturezaLitigioSaveService from "../../_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService";
+
+export const useTCensecNaturezaLitigioSaveHook = () => {
+
+ const { setResponse } = useResponse();
+ const [TCensecNaturezaLitigio, setTCensecNaturezaLitigio] = useState(null);
+ // controla se o formulário está aberto ou fechado
+ const [isOpen, setIsOpen] = useState(false);
+
+ const saveTCensecNaturezaLitigio = async (data: TCensecNaturezaLitigioInterface) => {
+
+ const response = await TCensecNaturezaLitigioSaveService(data);
+
+ setTCensecNaturezaLitigio(response.data);
+
+ setResponse(response);
+
+ // Fecha o formulário automaticamente após salvar
+ setIsOpen(false);
+
+ // Retorna os dados imediatamente
+ return response;
+
+ }
+
+ return { TCensecNaturezaLitigio, saveTCensecNaturezaLitigio }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaIndexHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaIndexHook.ts
new file mode 100644
index 0000000..2354ec6
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaIndexHook.ts
@@ -0,0 +1,27 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { useState } from "react";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+import TMinutaIndex from "../../_services/t_minuta/TMinutaIndex";
+
+export const useTMinutaIndexHook = () => {
+
+ const { setResponse } = useResponse();
+ const [tMinuta, setTMinuta] = useState([]);
+
+ const fetchTMinuta = async () => {
+
+ try {
+ const response = await TMinutaIndex();
+
+ setTMinuta(response.data);
+
+ setResponse(response);
+ } catch (error) {
+ console.log(error)
+ }
+
+ }
+
+ return { tMinuta, fetchTMinuta }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaReadHook.ts
new file mode 100644
index 0000000..dd8de75
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaReadHook.ts
@@ -0,0 +1,28 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { useState } from "react";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+import TMinutaIndexService from "../../_services/t_minuta/TMinutaIndexService";
+
+export const useTMinutaReadHook = () => {
+
+ const { setResponse } = useResponse();
+ const [tMinuta, setTMinuta] = useState();
+
+ const fetchTMinuta = async (tMinuta: TMinutaInterface) => {
+
+ try {
+ const response = await TMinutaIndexService(tMinuta.t_minuta_id);
+ console.log("read hook",response.data)
+
+ setTMinuta(response.data);
+
+ setResponse(response);
+ } catch (error) {
+ console.log(error)
+ }
+
+ }
+
+ return { tMinuta, fetchTMinuta }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaRemoveHook.ts
new file mode 100644
index 0000000..240a2a4
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaRemoveHook.ts
@@ -0,0 +1,19 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+import TMinutaRemoveService from "../../_services/t_minuta/TMinutaRemoveService";
+
+export const useTMinutaRemoveHook = () => {
+
+ const { setResponse } = useResponse();
+
+ const removeTMinuta = async (data: TMinutaInterface) => {
+
+ const response = await TMinutaRemoveService(data);
+
+ setResponse(response);
+
+ }
+
+ return { removeTMinuta }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaSaveHook.ts
new file mode 100644
index 0000000..d1a817a
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_minuta/useTMinutaSaveHook.ts
@@ -0,0 +1,31 @@
+import { useResponse } from "@/app/_response/ResponseContext"
+import { useState } from "react";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+import TMinutaSaveService from "../../_services/t_minuta/TMinutaSaveService";
+
+export const useTMinutaSaveHook = () => {
+
+ const { setResponse } = useResponse();
+ const [tMinuta, setTMinuta] = useState();
+ // controla se o formulário está aberto ou fechado
+ const [isOpen, setIsOpen] = useState(false);
+
+ const saveTMinuta = async (data: any) => {
+
+ const response = await TMinutaSaveService(data);
+
+ setTMinuta(response.data);
+
+ setResponse(response);
+
+ // Fecha o formulário automaticamente após salvar
+ setIsOpen(false);
+
+ // Retorna os dados imediatamente
+ return response;
+
+ }
+
+ return { tMinuta, saveTMinuta }
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoReadHook.ts
index a1b0ac1..bc0d99c 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoReadHook.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoReadHook.ts
@@ -15,6 +15,8 @@ export const useTTBAndamentoServicoReadHook = () => {
const response = await TTBAndamentoServicoIndexData();
+ console.log(response)
+
// Armazena os dados consultados
setTTBAndamentosServicos(response.data);
diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecNaturezaLitigioInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecNaturezaLitigioInterface.ts
new file mode 100644
index 0000000..5190b85
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecNaturezaLitigioInterface.ts
@@ -0,0 +1,5 @@
+export interface TCensecNaturezaLitigioInterface {
+ censec_naturezalitigio_id?: number;
+ descricao: string;
+ situacao: 'A' | 'I';
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TMinutaInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TMinutaInterface.ts
new file mode 100644
index 0000000..8c3ec07
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TMinutaInterface.ts
@@ -0,0 +1,7 @@
+export interface TMinutaInterface {
+ t_minuta_id: number;
+ natureza_id: number;
+ descricao: string;
+ situacao: 'A' | 'I';
+ texto: string;
+}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecNaturezaLitigioSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecNaturezaLitigioSchema.ts
new file mode 100644
index 0000000..b4a293d
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecNaturezaLitigioSchema.ts
@@ -0,0 +1,7 @@
+import { z } from 'zod';
+
+export const TCensecNaturezaLitigioSchema = z.object({
+ censec_naturezalitigio_id: z.number().optional(),
+ descricao: z.string(),
+ situacao: z.enum(['A', 'I']),
+});
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/TMinutaSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/TMinutaSchema.ts
new file mode 100644
index 0000000..59ca86b
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TMinutaSchema.ts
@@ -0,0 +1,8 @@
+import { z } from "zod";
+
+export const TMinutaSchema = z.object({
+ natureza_id: z.number().int(),
+ descricao: z.string().min(1, "Descrição é obrigatória"),
+ situacao: z.enum(["A", "I"]),
+ texto: z.string().min(1, "Texto é obrigatório"),
+});
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService.ts
new file mode 100644
index 0000000..2b6bacc
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioIndexService.ts
@@ -0,0 +1,12 @@
+import TCensecNaturezaLitigioIndexData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioIndexData";
+
+export default async function TCensecNaturezaLitigioIndexService() {
+
+ try {
+ const response = await TCensecNaturezaLitigioIndexData();
+ return response;
+ } catch (error) {
+ console.log(error)
+ return error
+ }
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService.ts
new file mode 100644
index 0000000..9530497
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioRemoveService.ts
@@ -0,0 +1,10 @@
+import TCensecNaturezaLitigioRemoveData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioRemoveData";
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+
+export default async function TCensecNaturezaLitigioRemoveService(data: TCensecNaturezaLitigioInterface) {
+
+ const response = await TCensecNaturezaLitigioRemoveData(data);
+
+ return response;
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService.ts
new file mode 100644
index 0000000..1f063c2
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censecnaturezalitigio/TCensecNaturezaLitigioSaveService.ts
@@ -0,0 +1,10 @@
+import TCensecNaturezaLitigioSaveData from "../../_data/TCensecNaturezaLitigio/TCensecNaturezaLitigioSaveData";
+import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface";
+
+export default async function TCensecNaturezaLitigioSaveService(data: TCensecNaturezaLitigioInterface) {
+
+ const response = await TCensecNaturezaLitigioSaveData(data);
+
+ return response;
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaIndex.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaIndex.ts
new file mode 100644
index 0000000..5038a30
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaIndex.ts
@@ -0,0 +1,13 @@
+import TMinutaIndexData from "../../_data/TMinuta/TMinutaIndexData";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+
+export default async function TMinutaIndex() {
+
+ try {
+ const response = await TMinutaIndexData();
+ return response;
+ } catch (error) {
+ console.log(error)
+ return error
+ }
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaIndexService.ts
new file mode 100644
index 0000000..00fe3d2
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaIndexService.ts
@@ -0,0 +1,21 @@
+import TMinutaIndex from "../../_data/TMinuta/TMinutaIndex";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+
+export default async function TMinutaIndexService(t_minuta_id: number) {
+
+ if (t_minuta_id <= 0) {
+ return {
+ 'code': 400,
+ 'message': 'Usuário informado inválido',
+ }
+ }
+
+ try {
+ const response = await TMinutaIndex(t_minuta_id);
+ console.log("service",response)
+ return response;
+ } catch (error) {
+ console.log(error)
+ return error
+ }
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaRemoveService.ts
new file mode 100644
index 0000000..12ed281
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaRemoveService.ts
@@ -0,0 +1,10 @@
+import TMinutaRemoveData from "../../_data/TMinuta/TMinutaRemoveData";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+
+export default async function TMinutaRemoveService(data: TMinutaInterface) {
+
+ const response = await TMinutaRemoveData(data);
+
+ return response;
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaSaveService.ts
new file mode 100644
index 0000000..5dfc53f
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_minuta/TMinutaSaveService.ts
@@ -0,0 +1,10 @@
+import TMinutaSaveData from "../../_data/TMinuta/TMinutaSaveData";
+import { TMinutaInterface } from "../../_interfaces/TMinutaInterface";
+
+export default async function TMinutaSaveService(data: TMinutaInterface) {
+
+ const response = await TMinutaSaveData(data);
+
+ return response;
+
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx b/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx
new file mode 100644
index 0000000..3aa0daa
--- /dev/null
+++ b/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx
@@ -0,0 +1,73 @@
+import { FileText, Heart, Briefcase, Scale, Link as LinkIcon, MapPin } from "lucide-react";
+import { Card, CardContent } from "@/components/ui/card";
+import Link from "next/link";
+
+export default function CadastrosPage() {
+
+ const items = [
+ {
+ title: 'Documentos',
+ description: 'Gerencie os tipos de documentos aceitos e suas configurações no sistema.',
+ icon: FileText,
+ },
+ {
+ title: 'Estado Civil',
+ description: 'Cadastre e mantenha os diferentes estados civis utilizados nos registros.',
+ icon: Heart,
+ },
+ {
+ title: 'Profissão',
+ description: 'Gerencie a lista de profissões para utilização em cadastros e registros.',
+ icon: Briefcase,
+ },
+ {
+ title: 'Regime de Comunhão',
+ description: 'Defina os regimes de comunhão aplicáveis em matrimônios e registros civis.',
+ icon: Scale,
+ },
+ {
+ title: 'Vínculo de Sinal Público',
+ description: 'Controle e cadastre vínculos relacionados a sinais públicos para autenticações.',
+ icon: LinkIcon,
+ },
+ {
+ title: 'Municípios',
+ description: 'Gerencie a base de municípios para utilização em endereços e cadastros.',
+ icon: MapPin,
+ },
+ ];
+
+ return (
+
+
+
+
+ Complementos de Cadastro pessoal
+
+
+ Gerencie os cadastros relacionados a regimes, como estado civil, regime de comunhão e outras informações complementares necessárias para o registro de pessoas.
+
+
+
+
+ {items.map((item, key) => (
+
+
+
+
+
+
+
+ {item.title}
+
+
+ {item.description}
+
+
+
+
+ ))}
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/_components/structure/Header.tsx b/src/app/_components/structure/Header.tsx
index c8c02e6..2fb7a55 100644
--- a/src/app/_components/structure/Header.tsx
+++ b/src/app/_components/structure/Header.tsx
@@ -1,4 +1,5 @@
import { Button } from "@/components/ui/button";
+import Link from "next/link";
import { PlusIcon } from "lucide-react";
interface HeaderProps {
@@ -22,9 +23,10 @@ export default function Header({ title, description, buttonText, buttonAction }:
{description}