diff --git a/package-lock.json b/package-lock.json index 73cb6d5..2cc4f8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "app", - "version": "0.1.0", + "version": "25.9.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "app", - "version": "0.1.0", + "version": "25.9.1", "dependencies": { "@faker-js/faker": "^10.0.0", "@hookform/resolvers": "^5.2.1", @@ -22,11 +22,14 @@ "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-tooltip": "^1.2.8", + "@tinymce/tinymce-react": "^6.3.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cookies-next": "^6.1.0", "faker-js": "^1.0.0", + "js-cookie": "^3.0.5", "jsonwebtoken": "^9.0.2", + "jwt-decode": "^4.0.0", "lucide-react": "^0.540.0", "next": "^15.5.3", "next-themes": "^0.4.6", @@ -35,10 +38,12 @@ "react-hook-form": "^7.62.0", "sonner": "^2.0.7", "tailwind-merge": "^3.3.1", + "tinymce": "^8.1.2", "zod": "^4.0.17" }, "devDependencies": { "@tailwindcss/postcss": "^4", + "@types/js-cookie": "^3.0.6", "@types/jsonwebtoken": "^9.0.10", "@types/node": "^20", "@types/react": "^19", @@ -1949,6 +1954,32 @@ "tailwindcss": "4.1.12" } }, + "node_modules/@tinymce/tinymce-react": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-6.3.0.tgz", + "integrity": "sha512-E++xnn0XzDzpKr40jno2Kj7umfAE6XfINZULEBBeNjTMvbACWzA6CjiR6V8eTDc9yVmdVhIPqVzV4PqD5TZ/4g==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0", + "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0", + "tinymce": "^8.0.0 || ^7.0.0 || ^6.0.0 || ^5.5.1" + }, + "peerDependenciesMeta": { + "tinymce": { + "optional": true + } + } + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jsonwebtoken": { "version": "9.0.10", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", @@ -2224,6 +2255,21 @@ "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -2267,6 +2313,15 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/lightningcss": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", @@ -2548,6 +2603,18 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lucide-react": { "version": "0.540.0", "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.540.0.tgz", @@ -2720,6 +2787,15 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2755,6 +2831,17 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", @@ -2792,6 +2879,12 @@ "react": "^16.8.0 || ^17 || ^18 || ^19" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/react-remove-scroll": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", @@ -3039,6 +3132,12 @@ "node": ">=18" } }, + "node_modules/tinymce": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-8.1.2.tgz", + "integrity": "sha512-KITxHEEHRlxC5xOnxA123eAJ67NgsWxNphtItWt9TRu07DiTZrWIqJeIKRX9euE51/l3kJO4WQiqoBXKTJJGsA==", + "license": "GPL-2.0-or-later" + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", diff --git a/package.json b/package.json index 88fd872..45ac7a4 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "app", - "version": "0.1.0", + "version": "25.9.1", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint" @@ -23,11 +23,14 @@ "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-tooltip": "^1.2.8", + "@tinymce/tinymce-react": "^6.3.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cookies-next": "^6.1.0", "faker-js": "^1.0.0", + "js-cookie": "^3.0.5", "jsonwebtoken": "^9.0.2", + "jwt-decode": "^4.0.0", "lucide-react": "^0.540.0", "next": "^15.5.3", "next-themes": "^0.4.6", @@ -36,10 +39,12 @@ "react-hook-form": "^7.62.0", "sonner": "^2.0.7", "tailwind-merge": "^3.3.1", + "tinymce": "^8.1.2", "zod": "^4.0.17" }, "devDependencies": { "@tailwindcss/postcss": "^4", + "@types/js-cookie": "^3.0.6", "@types/jsonwebtoken": "^9.0.10", "@types/node": "^20", "@types/react": "^19", diff --git a/public/images/logo.svg b/public/images/logo.svg new file mode 100644 index 0000000..6199398 --- /dev/null +++ b/public/images/logo.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/actions/cookies/CookiesGet.ts b/src/actions/cookies/CookiesGet.ts index 238470d..194669f 100644 --- a/src/actions/cookies/CookiesGet.ts +++ b/src/actions/cookies/CookiesGet.ts @@ -1,11 +1,19 @@ -'use client' +'use server' import { cookies } from "next/headers"; -export default async function CookiesGet() { +/** + * Função para obter tokens do lado servidorde acordo com o nome informado +*/ +export default async function CookiesGet(token: string) { + // Obtem a lista de Tokens const cookieStore = await cookies(); - const token = cookieStore.get('access_token'); - return token?.value; + + // Obtem um token em especifico + const data = cookieStore.get(token); + + // Retorna nulo ou o valor do token desejado + return data?.value; } \ No newline at end of file diff --git a/src/actions/text/GetSigla.ts b/src/actions/text/GetSigla.ts new file mode 100644 index 0000000..f6550ae --- /dev/null +++ b/src/actions/text/GetSigla.ts @@ -0,0 +1,15 @@ +export default function GetSigla(data: string): string { + + if (!data) return ""; + + // Remove espaços extras no início e no fim e divide em palavras + const palavras = data.trim().split(/\s+/); + + if (palavras.length === 1) { + // Apenas uma palavra → retorna as duas primeiras letras + return palavras[0].substring(0, 2).toUpperCase(); + } + + // Duas ou mais palavras → retorna a primeira letra de cada + return palavras.map(palavra => palavra.charAt(0).toUpperCase()).join(''); +} \ No newline at end of file diff --git a/src/actions/withClientErrorHandler/withClientErrorHandler.ts b/src/actions/withClientErrorHandler/withClientErrorHandler.ts new file mode 100644 index 0000000..b7cb4ff --- /dev/null +++ b/src/actions/withClientErrorHandler/withClientErrorHandler.ts @@ -0,0 +1,32 @@ +import withClientErrorHandlerInterface from "./withClientErrorHandlerInterface"; + +/** + * Códigos de erro que começam com 6, são do front entd, na ordem do alfabeto o F de frontend é a sexta letra +*/ +export function withClientErrorHandler Promise>( + action: T +) { + return async (...args: Parameters): Promise => { + + try { + + // Executa a função definida + const data = await action(...args); + + // Retorna exatamente a mesma resposta retornada pela função + return data; + + } catch (error: any) { + + // Retorna o erro de execuçãformatado + return { + status: 600, + message: error?.message || "Erro interno do servidor", + data: error + }; + + } + + }; + +} diff --git a/src/actions/withClientErrorHandler/withClientErrorHandlerInterface.ts b/src/actions/withClientErrorHandler/withClientErrorHandlerInterface.ts new file mode 100644 index 0000000..f27c593 --- /dev/null +++ b/src/actions/withClientErrorHandler/withClientErrorHandlerInterface.ts @@ -0,0 +1,7 @@ +export default interface withClientErrorHandlerInterface { + + status: number; + data?: T; + message?: string; + +} \ No newline at end of file diff --git a/src/app/(protected)/(administrativo)/(g_usuario)/usuarios/[id]/detalhes/page.tsx b/src/app/(protected)/(administrativo)/(g_usuario)/usuarios/[id]/detalhes/page.tsx index 42f4757..125a254 100644 --- a/src/app/(protected)/(administrativo)/(g_usuario)/usuarios/[id]/detalhes/page.tsx +++ b/src/app/(protected)/(administrativo)/(g_usuario)/usuarios/[id]/detalhes/page.tsx @@ -22,6 +22,7 @@ export default function UsuarioDetalhes() { if (params.id) { fetchUsuario({ usuario_id: Number(params.id) } as Usuario); } + console.log("pagina",usuario) }, []); if (!usuario) return ; diff --git a/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioLogoutHook.ts b/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioLogoutHook.ts new file mode 100644 index 0000000..7220189 --- /dev/null +++ b/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioLogoutHook.ts @@ -0,0 +1,14 @@ +'use client' + +import GUsuarioLogoutService from "../../_services/g_usuario/GUsuarioLogoutService"; + +export const useGUsuarioLogoutHook = () => { + + const logoutUsuario = async () => { + + await GUsuarioLogoutService('access_token') + + } + + return { logoutUsuario } +} \ No newline at end of file diff --git a/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioReadHooks.ts b/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioReadHooks.ts index da75695..9f73250 100644 --- a/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioReadHooks.ts +++ b/src/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioReadHooks.ts @@ -14,6 +14,7 @@ export const useGUsuarioReadHooks = () => { const fetchUsuario = async (Usuario: Usuario) => { const response = await GUsuarioRead(Usuario.usuario_id); + console.log("hook",response.data) setUsuario(response.data); diff --git a/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogin.ts b/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogin.ts index 2699a22..b71b1f2 100644 --- a/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogin.ts +++ b/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogin.ts @@ -6,9 +6,11 @@ import { import GUsuarioLoginData from "../../_data/g_usuario/GUsuarioLoginData" import { redirect } from "next/navigation"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; -export default async function GUsuarioLoginService(form: any) { +async function executeGUsuarioLoginService(form: any) { + // Obtem a resposta da requisição const response = await GUsuarioLoginData(form); // Verifica se localizou o usuário @@ -21,7 +23,10 @@ export default async function GUsuarioLoginService(form: any) { } + // Importação do manipulador de cookies const cookieStore = await cookies(); + + // Cria um novo cookie cookieStore.set("access_token", response.data.token, { httpOnly: true, secure: process.env.NODE_ENV === "production", @@ -30,6 +35,10 @@ export default async function GUsuarioLoginService(form: any) { maxAge: 60 * 60 * 24, }); + // Redireciona para a págian desejada redirect("/usuarios"); -} \ No newline at end of file +} + +// Exporta função encapsulada +export const GUsuarioLoginService = withClientErrorHandler(executeGUsuarioLoginService); \ No newline at end of file diff --git a/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogoutService.ts b/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogoutService.ts new file mode 100644 index 0000000..4747715 --- /dev/null +++ b/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogoutService.ts @@ -0,0 +1,19 @@ +'use server' + +import { + cookies +} from "next/headers"; + +import { redirect } from "next/navigation"; + +export default async function GUsuarioLogoutService(token: string) { + + const cookieStore = await cookies(); + cookieStore.set(token, '', { + expires: new Date(0), + path: '/', + }); + + redirect('/login'); + +} \ No newline at end of file diff --git a/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioRead.ts b/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioRead.ts index 95ce84e..037a1ea 100644 --- a/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioRead.ts +++ b/src/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioRead.ts @@ -12,6 +12,14 @@ export default async function GUsuarioRead(usuarioId: number) { } } - return await GUsuarioReadData(usuarioId); + try { + const response = await GUsuarioReadData(usuarioId); + 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/(g_medidatipo)/medida-tipo/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_medidatipo)/medida-tipo/page.tsx new file mode 100644 index 0000000..5b198ea --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(g_medidatipo)/medida-tipo/page.tsx @@ -0,0 +1,128 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; +import GMedidaTipoTable from "../../_components/g_medidatipo/GMedidaTipoTable"; +import GMedidaTipoForm from "../../_components/g_medidatipo/GMedidaTipoForm"; + +import { useGMedidaTipoReadHook } from "../../_hooks/g_medidatipo/useGMedidaTipoReadHook"; +import { useGMedidaTipoSaveHook } from "../../_hooks/g_medidatipo/useGMedidaTipoSaveHook"; +import { useGMedidaTipoRemoveHook } from "../../_hooks/g_medidatipo/useGMedidaTipoRemoveHook"; + +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; + +const initialMedidaTipo: GMedidaTipoInterface = { + medida_tipo_id: 0, + sigla: '', + descricao: '' +} + +export default function GMedidaTipoPage() { + + // Hooks para leitura, salvamento e remoção + const { gMedidaTipo, fetchGMedidaTipo } = useGMedidaTipoReadHook(); + const { saveGMedidaTipo } = useGMedidaTipoSaveHook(); + const { removeGMedidaTipo } = useGMedidaTipoRemoveHook(); + + // Estado para controlar o formulário e o item selecionado + const [selectedMedidaTipo, setSelectedMedidaTipo] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + const [itemToDelete, setItemToDelete] = useState(null); + + // Hook para o modal de confirmação + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + // Ações do formulário + const handleOpenForm = useCallback((data: GMedidaTipoInterface | null) => { + setSelectedMedidaTipo(data); + setIsFormOpen(true); + }, []); + + const handleCloseForm = useCallback(() => { + setIsFormOpen(false); + setSelectedMedidaTipo(null); + }, []); + + const handleSave = useCallback(async (data: GMedidaTipoInterface) => { + await saveGMedidaTipo(data); + await fetchGMedidaTipo(); // Atualiza a tabela após salvar + handleCloseForm(); + }, [saveGMedidaTipo, fetchGMedidaTipo]); + + // Ações de deleção + const handleConfirmDelete = useCallback((item: GMedidaTipoInterface) => { + setItemToDelete(item); + openConfirmDialog(); + }, [openConfirmDialog]); + + const handleDelete = useCallback(async () => { + if (itemToDelete) { + await removeGMedidaTipo(itemToDelete); + await fetchGMedidaTipo(); // Atualiza a tabela após remover + } + handleCancel(); + }, [itemToDelete, fetchGMedidaTipo, handleCancel]); + + // Efeito para carregar os dados na montagem do componente + useEffect(() => { + fetchGMedidaTipo(); + }, []); + + // Mostra tela de loading enquanto os dados não são carregados + if (!gMedidaTipo) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ handleOpenForm(data = initialMedidaTipo) }} + /> + + {/* Tabela de Tipos de Medida */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário de criação/edição */} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_tb_bairro)/bairro/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_tb_bairro)/bairro/page.tsx new file mode 100644 index 0000000..841f229 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(g_tb_bairro)/bairro/page.tsx @@ -0,0 +1,130 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; +import GTBBairroTable from "../../_components/g_tb_bairro/GTBBairroTable"; +import GTBBairroForm from "../../_components/g_tb_bairro/GTBBairroForm"; + +import { useGTBBairroReadHook } from "../../_hooks/g_tb_bairro/useGTBBairroReadHook"; +import { useGTBBairroSaveHook } from "../../_hooks/g_tb_bairro/useGTBBairroSaveHook"; +import { useGTBBairroRemoveHook } from "../../_hooks/g_tb_bairro/useGTBBairroRemoveHook"; + +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +const initialBairro: GTBBairroInterface = { + sistema_id: null, + tb_bairro_id: 0, + descricao: '', + situacao: 'A' +} + +export default function TTBAndamentoServico() { + + // Hooks para leitura e salvamento + const { gTBBairro, fetchGTBBairro } = useGTBBairroReadHook(); + const { saveGTBBairro } = useGTBBairroSaveHook(); + const { removeGTBBairro } = useGTBBairroRemoveHook(); + + // Estado para controlar o formulário e item selecionado + const [selectedBairro, setBairro] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + const [itemToDelete, setItemToDelete] = useState(null); + + // Hook para o modal de confirmação + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + // Ações do formulário + const handleOpenForm = useCallback((data: GTBBairroInterface | null) => { + setBairro(data); + setIsFormOpen(true); + }, []); + + const handleCloseForm = useCallback(() => { + setBairro(null); + setIsFormOpen(false); + }, []); + + const handleSave = useCallback(async (data: GTBBairroInterface) => { + await saveGTBBairro(data); + fetchGTBBairro(); // Atualiza a tabela após salvar + }, [saveGTBBairro, fetchGTBBairro]); + + // Ações de deleção + const handleConfirmDelete = useCallback((item: GTBBairroInterface) => { + setItemToDelete(item); + openConfirmDialog(); + }, [openConfirmDialog]); + + const handleDelete = useCallback(async () => { + if (!itemToDelete) return; + + await removeGTBBairro(itemToDelete); + await fetchGTBBairro(); // Atualiza a tabela após remover + + setItemToDelete(null) + + handleCancel(); + }, [itemToDelete, fetchGTBBairro, handleCancel]); + + // Efeito para carregar os dados na montagem do componente + useEffect(() => { + fetchGTBBairro(); + }, []); + + if (!gTBBairro) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ handleOpenForm(data = initialBairro) }} + /> + + {/* Tabela de Bairros */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário de criação/edição */} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx new file mode 100644 index 0000000..536b2be --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx @@ -0,0 +1,129 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; +import GTBEstadoCivilTable from "../../_components/g_tb_estadocivil/GTBEstadoCivilTable"; +import GTBEstadoCivilForm from "../../_components/g_tb_estadocivil/GTBEstadoCivilForm"; + +import { useGTBEstadoCivilReadHook } from "../../_hooks/g_tb_estadocivil/useGTBEstadoCivilReadHook"; +import { useGTBEstadoCivilSaveHook } from "../../_hooks/g_tb_estadocivil/useGTBEstadoCivilSaveHook"; +import { useGTBEstadoCivilRemoveHook } from "../../_hooks/g_tb_estadocivil/useGTBEstadoCivilRemoveHook"; + +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; + +const initalEstadoCivil: GTBEstadoCivilInterface = { + tb_estadocivil_id: 0, + sistema_id: 0, + descricao: '', + situacao: 'A', +} + +export default function TBEstadoCivilPage() { + + // Hooks para leitura e salvamento + const { gTBEstadoCivil, fetchGTBEstadoCivil } = useGTBEstadoCivilReadHook(); + const { saveGTBEstadoCivil } = useGTBEstadoCivilSaveHook(); + const { removeGTBEstadoCivil } = useGTBEstadoCivilRemoveHook(); + + // Estado para controlar o formulário e item selecionado + const [selectedEstadoCivil, setSelectedEstadoCivil] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + const [itemToDelete, setItemToDelete] = useState(null); + + // Hook para o modal de confirmação + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + // Ações do formulário + const handleOpenForm = useCallback((data: GTBEstadoCivilInterface | null) => { + setSelectedEstadoCivil(data); + setIsFormOpen(true); + }, []); + + const handleCloseForm = useCallback(() => { + setIsFormOpen(false); + setSelectedEstadoCivil(null); + }, []); + + const handleSave = useCallback(async (data: GTBEstadoCivilInterface) => { + await saveGTBEstadoCivil(data); + await fetchGTBEstadoCivil(); // Atualiza a tabela após salvar + handleCloseForm(); + }, [saveGTBEstadoCivil, fetchGTBEstadoCivil]); + + // Ações de deleção + const handleConfirmDelete = useCallback((item: GTBEstadoCivilInterface) => { + setItemToDelete(item); + openConfirmDialog(); + }, [openConfirmDialog]); + + const handleDelete = useCallback(async () => { + if (itemToDelete) { + await removeGTBEstadoCivil(itemToDelete); + await fetchGTBEstadoCivil(); // Atualiza a tabela após remover + } + handleCancel(); + }, [itemToDelete, fetchGTBEstadoCivil, handleCancel]); + + // Efeito para carregar os dados na montagem do componente + useEffect(() => { + fetchGTBEstadoCivil(); + }, []); + + // Mostra tela de loading enquanto os dados não são carregados + if (!gTBEstadoCivil) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ handleOpenForm(data = initalEstadoCivil) }} + /> + + {/* Tabela de Estados Civis */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário de criação/edição */} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_tb_regimebens)/regime-bens/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_tb_regimebens)/regime-bens/page.tsx new file mode 100644 index 0000000..a241d19 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(g_tb_regimebens)/regime-bens/page.tsx @@ -0,0 +1,163 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; + +import Loading from "@/app/_components/loading/loading"; +import GTBRegimeBensTable from "../../_components/g_tb_regimebens/GTBRegimeBensTable"; +import GTBRegimeBensForm from "../../_components/g_tb_regimebens/GTBRegimeBensForm"; + +import { useGTBRegimeBensReadHook } from "../../_hooks/g_tb_regimebens/useGTBRegimeBensReadHook"; +import { useGTBRegimeBensSaveHook } from "../../_hooks/g_tb_regimebens/useGTBRegimeBensSaveHook"; +import { useGTBRegimeBensRemoveHook } from "../../_hooks/g_tb_regimebens/useGTBRegimeBensRemoveHook"; + +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; +import Header from "@/app/_components/structure/Header"; + +export default function TTBAndamentoServico() { + // Hooks para leitura e salvamento + const { gTBRegimeBens, fetchGTBRegimeBens } = useGTBRegimeBensReadHook(); + const { saveGTBRegimeComunhao } = useGTBRegimeBensSaveHook(); + const { removeGTBRegimeComunhao } = useGTBRegimeBensRemoveHook(); + + // Estados + const [selectedAndamento, setSelectedAndamento] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + + // Estado para saber qual item será deletado + const [itemToDelete, setItemToDelete] = useState(null); + + /** + * Hook do modal de confirmação + */ + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + /** + * Abre o formulário no modo de edição ou criação + */ + const handleOpenForm = useCallback((data: GTBRegimeBensInterface | null) => { + setSelectedAndamento(data); + setIsFormOpen(true); + }, []); + + /** + * Fecha o formulário e limpa o andamento selecionado + */ + const handleCloseForm = useCallback(() => { + setSelectedAndamento(null); + setIsFormOpen(false); + }, []); + + /** + * Salva os dados do formulário + */ + const handleSave = useCallback(async (formData: GTBRegimeBensInterface) => { + + // Aguarda salvar o registro + await saveGTBRegimeComunhao(formData); + + // Atualiza a lista de dados + fetchGTBRegimeBens(); + + }, [saveGTBRegimeComunhao, fetchGTBRegimeBens]); + + /** + * Quando o usuário clica em "remover" na tabela + */ + const handleConfirmDelete = useCallback((item: GTBRegimeBensInterface) => { + + // Define o item atual para remoção + setItemToDelete(item); + + // Abre o modal de confirmação + openConfirmDialog(); + + }, [openConfirmDialog]); + + /** + * Executa a exclusão de fato quando o usuário confirma + */ + const handleDelete = useCallback(async () => { + + // Protege contra null + if (!itemToDelete) return; + + // Executa o Hook de remoção + await removeGTBRegimeComunhao(itemToDelete); + + // Atualiza a lista + await fetchGTBRegimeBens(); + + // Limpa o item selecionado + setItemToDelete(null); + + // Fecha o modal + handleCancel(); + + }, [itemToDelete, fetchGTBRegimeBens, handleCancel]); + + /** + * Busca inicial dos dados + */ + useEffect(() => { + fetchGTBRegimeBens(); + }, []); + + /** + * Tela de loading enquanto carrega os dados + */ + if (!gTBRegimeBens) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ handleOpenForm(null) }} + /> + + {/* Tabela de andamentos */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário de criação/edição */} + +
+ ); 4 +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx new file mode 100644 index 0000000..aced899 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(g_tb_tipologradouro)/tipo-logradouro/page.tsx @@ -0,0 +1,163 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; +import GTBTipoLogradouroTable from "../../_components/g_tb_tipologradouro/GTBTipoLogradouroTable"; +import GTBTipoLogradouroForm from "../../_components/g_tb_tipologradouro/GTBTipoLogradouroForm"; + +import { useGTBTipoLogradouroReadHook } from "../../_hooks/g_tb_tipologradouro/useGTBTipoLogradouroReadHook"; +import { useGTBTipoLogradouroSaveHook } from "../../_hooks/g_tb_tipologradouro/useGTBTipoLogradouroSaveHook"; +import { useGTBTipoLogradouroRemoveHook } from "../../_hooks/g_tb_tipologradouro/useGTBTipoLogradouroRemoveHook"; + +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; + +export default function TTBAndamentoServico() { + + // Hooks para leitura e salvamento + const { gTBTipoLogradouro, fetchGTBTipoLogradouro } = useGTBTipoLogradouroReadHook(); + const { saveGTBTipoLogradouro } = useGTBTipoLogradouroSaveHook(); + const { removeGTBTipoLogradouro } = useGTBTipoLogradouroRemoveHook(); + + // Estados + const [selectedTipoLogradouro, setTipoLogradouro] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + + // Estado para saber qual item será deletado + const [itemToDelete, setItemToDelete] = useState(null); + + /** + * Hook do modal de confirmação + */ + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + /** + * Abre o formulário no modo de edição ou criação + */ + const handleOpenForm = useCallback((data: GTBTipoLogradouroInterface | null) => { + setTipoLogradouro(data); + setIsFormOpen(true); + }, []); + + /** + * Fecha o formulário e limpa o andamento selecionado + */ + const handleCloseForm = useCallback(() => { + setTipoLogradouro(null); + setIsFormOpen(false); + }, []); + + /** + * Salva os dados do formulário + */ + const handleSave = useCallback(async (formData: GTBTipoLogradouroInterface) => { + + // Aguarda salvar o registro + await saveGTBTipoLogradouro(formData); + + // Atualiza a lista de dados + fetchGTBTipoLogradouro(); + + }, [saveGTBTipoLogradouro, fetchGTBTipoLogradouro]); + + /** + * Quando o usuário clica em "remover" na tabela + */ + const handleConfirmDelete = useCallback((item: GTBTipoLogradouroInterface) => { + + // Define o item atual para remoção + setItemToDelete(item); + + // Abre o modal de confirmação + openConfirmDialog(); + + }, [openConfirmDialog]); + + /** + * Executa a exclusão de fato quando o usuário confirma + */ + const handleDelete = useCallback(async () => { + + // Protege contra null + if (!itemToDelete) return; + + // Executa o Hook de remoção + await removeGTBTipoLogradouro(itemToDelete); + + // Atualiza a lista + await fetchGTBTipoLogradouro(); + + // Limpa o item selecionado + setItemToDelete(null); + + // Fecha o modal + handleCancel(); + + }, [itemToDelete, fetchGTBTipoLogradouro, handleCancel]); + + /** + * Busca inicial dos dados + */ + useEffect(() => { + fetchGTBTipoLogradouro(); + }, []); + + /** + * Tela de loading enquanto carrega os dados + */ + if (!gTBTipoLogradouro) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ handleOpenForm(null) }} + /> + + {/* Tabela de andamentos */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário de criação/edição */} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx new file mode 100644 index 0000000..e4050c9 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx @@ -0,0 +1,163 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; + +import Loading from "@/app/_components/loading/loading"; +import TCensecTable from "../../_components/t_censec/TCensecTable"; +import TCensecForm from "../../_components/t_censec/TCensecForm"; + +import { useTCensecReadHook } from "../../_hooks/t_censec/useTCensecReadHook"; +import { useTCensecSaveHook } from "../../_hooks/t_censec/useTCensecSaveHook"; +import { useTCensecDeleteHook } from "../../_hooks/t_censec/useTCensecDeleteHook"; + +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import TCensecInterface from "../../_interfaces/TCensecInterface"; +import Header from "@/app/_components/structure/Header"; + +export default function TTBAndamentoServico() { + // Hooks para leitura e salvamento + const { tCensec, fetchTCensec } = useTCensecReadHook(); + const { saveTCensec } = useTCensecSaveHook(); + const { deleteTCensec } = useTCensecDeleteHook(); + + // Estados + const [selectedAndamento, setSelectedAndamento] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + + // Estado para saber qual item será deletado + const [itemToDelete, setItemToDelete] = useState(null); + + /** + * Hook do modal de confirmação + */ + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + /** + * Abre o formulário no modo de edição ou criação + */ + const handleOpenForm = useCallback((data: TCensecInterface | null) => { + setSelectedAndamento(data); + setIsFormOpen(true); + }, []); + + /** + * Fecha o formulário e limpa o andamento selecionado + */ + const handleCloseForm = useCallback(() => { + setSelectedAndamento(null); + setIsFormOpen(false); + }, []); + + /** + * Salva os dados do formulário + */ + const handleSave = useCallback(async (formData: TCensecInterface) => { + + // Aguarda salvar o registro + await saveTCensec(formData); + + // Atualiza a lista de dados + fetchTCensec(); + + }, [saveTCensec, fetchTCensec, handleCloseForm]); + + /** + * Quando o usuário clica em "remover" na tabela + */ + const handleConfirmDelete = useCallback((item: TCensecInterface) => { + + // Define o item atual para remoção + setItemToDelete(item); + + // Abre o modal de confirmação + openConfirmDialog(); + + }, [openConfirmDialog]); + + /** + * Executa a exclusão de fato quando o usuário confirma + */ + const handleDelete = useCallback(async () => { + + // Protege contra null + if (!itemToDelete) return; + + // Executa o Hook de remoção + await deleteTCensec(itemToDelete); + + // Atualiza a lista + await fetchTCensec(); + + // Limpa o item selecionado + setItemToDelete(null); + + // Fecha o modal + handleCancel(); + + }, [itemToDelete, fetchTCensec, handleCancel]); + + /** + * Busca inicial dos dados + */ + useEffect(() => { + fetchTCensec(); + }, []); + + /** + * Tela de loading enquanto carrega os dados + */ + if (!tCensec) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ handleOpenForm(null) }} + /> + + {/* Tabela de andamentos */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário de criação/edição */} + +
+ ); 4 +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_censecnaturezalitigio)/censec-natureza-litigio/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_censecnaturezalitigio)/censec-natureza-litigio/page.tsx new file mode 100644 index 0000000..28cca94 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(t_censecnaturezalitigio)/censec-natureza-litigio/page.tsx @@ -0,0 +1,134 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; + +import TCensecNaturezaLitigioTable from "../../_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable"; +import TCensecNaturezaLitigioForm from "../../_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm"; + +import { useTCensecNaturezaLitigioReadHook } from "../../_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioReadHook"; +import { useTCensecNaturezaLitigioSaveHook } from "../../_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioSaveHook"; +import { useTCensecNaturezaLitigioRemoveHook } from "../../_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook"; + +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; + +const initialCensecNaturezaLitigio: TCensecNaturezaLitigioInterface = { + censec_naturezalitigio_id: 0, + descricao: "", + situacao: 'A' +} + +export default function TCensecNaturezaLitigioPage() { + + // Hooks + const { tCensecNaturezaLitigio, fetchTCensecNaturezaLitigio } = useTCensecNaturezaLitigioReadHook(); + const { saveTCensecNaturezaLitigio } = useTCensecNaturezaLitigioSaveHook(); + const { removeTCensecNaturezaLitigio } = useTCensecNaturezaLitigioRemoveHook(); + + // Estados + const [selectedItem, setSelectedItem] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + const [itemToDelete, setItemToDelete] = useState(null); + + // Modal de confirmação + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel, + } = useConfirmDialog(); + + // Abrir formulário (criação ou edição) + const handleOpenForm = useCallback((item: TCensecNaturezaLitigioInterface | null) => { + setSelectedItem(item); + setIsFormOpen(true); + }, []); + + // Fechar formulário + const handleCloseForm = useCallback(() => { + setSelectedItem(null); + setIsFormOpen(false); + }, []); + + // Salvar item + const handleSave = useCallback(async (formData: TCensecNaturezaLitigioInterface) => { + await saveTCensecNaturezaLitigio(formData); + console.log(formData) + await fetchTCensecNaturezaLitigio(); + }, [saveTCensecNaturezaLitigio, fetchTCensecNaturezaLitigio]); + + // Confirmar remoção + const handleConfirmDelete = useCallback((item: TCensecNaturezaLitigioInterface) => { + console.log("item", item) + setItemToDelete(item); + openConfirmDialog(); + }, [openConfirmDialog]); + + // Executar remoção + const handleDelete = useCallback(async () => { + if (!itemToDelete) return; + console.log("item to delete",itemToDelete) + await removeTCensecNaturezaLitigio(itemToDelete); + await fetchTCensecNaturezaLitigio(); + setItemToDelete(null); + handleCancel(); + }, [itemToDelete, fetchTCensecNaturezaLitigio, handleCancel]); + + // Fetch inicial + useEffect(() => { + fetchTCensecNaturezaLitigio(); + }, []); + + // Loading enquanto carrega + if (!tCensecNaturezaLitigio) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
handleOpenForm(data = initialCensecNaturezaLitigio)} + /> + + {/* Tabela */} + + + + + + + {/* Modal de confirmação */} + + + {/* Formulário */} + +
+ ); +} \ 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 ( +
+ + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Editor de Texto */} + ( +
+ + {form.formState.errors.texto && ( +

+ {form.formState.errors.texto.message} +

+ )} +
+ )} + /> + + + +
+
+
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/page.tsx new file mode 100644 index 0000000..691dc29 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/(t_minuta)/minuta/page.tsx @@ -0,0 +1,107 @@ +'use client'; + +import { useEffect, useState, useCallback } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; + +import Header from "@/app/_components/structure/Header"; +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; +import Loading from "@/app/_components/loading/loading"; + +import TMinutaTable from "../../_components/t_minuta/TMinutaTable"; +import TMinutaForm from "../../_components/t_minuta/TMinutaForm"; + +import { useTMinutaReadHook } from "../../_hooks/t_minuta/useTMinutaReadHook"; +import { useTMinutaSaveHook } from "../../_hooks/t_minuta/useTMinutaSaveHook"; +import { useTMinutaRemoveHook } from "../../_hooks/t_minuta/useTMinutaRemoveHook"; + +import { TMinutaInterface } from "../../_interfaces/TMinutaInterface"; +import { useTMinutaIndexHook } from "../../_hooks/t_minuta/useTMinutaIndexHook"; + +export default function TMinutaPage() { + + // Hooks de leitura e escrita + const { tMinuta, fetchTMinuta } = useTMinutaIndexHook(); + const { saveTMinuta } = useTMinutaSaveHook(); + const { removeTMinuta } = useTMinutaRemoveHook(); + + // Estados + const [selectedMinuta, setSelectedMinuta] = useState(null); + const [isFormOpen, setIsFormOpen] = useState(false); + const [itemToDelete, setItemToDelete] = useState(null); + + // Hook de confirmação + const { + isOpen: isConfirmOpen, + openDialog: openConfirmDialog, + handleConfirm, + handleCancel + } = useConfirmDialog(); + + // Abertura do formulário + const handleOpenForm = useCallback((data: TMinutaInterface | null) => { + setSelectedMinuta(data); + setIsFormOpen(true); + }, []); + + // Ação de clique em remover + const handleConfirmDelete = useCallback((item: TMinutaInterface) => { + setItemToDelete(item); + openConfirmDialog(); + }, [openConfirmDialog]); + + // Remoção da minuta após confirmação + const handleDelete = useCallback(async () => { + if (!itemToDelete) return; + + await removeTMinuta(itemToDelete); + await fetchTMinuta(); + setItemToDelete(null); + handleCancel(); + }, [itemToDelete, removeTMinuta, fetchTMinuta, handleCancel]); + + // Fetch inicial + useEffect(() => { + fetchTMinuta(); + }, []); + + // Loading enquanto carrega + if (tMinuta === undefined) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
handleOpenForm(null)} + /> + + {/* Tabela */} + + + + + + + {/* Diálogo de confirmação */} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx index 823afb8..eb747f7 100644 --- a/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx @@ -63,7 +63,7 @@ export default function TTBAndamentoServico() { // Aguarda salvar o registro await saveTTBAndamentoServico(formData); - + // Atualiza a lista de dados fetchTTBAndamentoServico(); @@ -73,13 +73,8 @@ export default function TTBAndamentoServico() { * Quando o usuário clica em "remover" na tabela */ const handleConfirmDelete = useCallback((item: TTBAndamentoServicoInterface) => { - - // Define o item atual para remoção setItemToDelete(item); - - // Abre o modal de confirmação openConfirmDialog(); - }, [openConfirmDialog]); /** @@ -90,6 +85,7 @@ export default function TTBAndamentoServico() { // Protege contra null if (!itemToDelete) return; + // Executa o Hook de remoção await deleteTTBAndamentoServico(itemToDelete); diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_medidatipo/GMedidaTipoForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_medidatipo/GMedidaTipoForm.tsx new file mode 100644 index 0000000..46b47a1 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_medidatipo/GMedidaTipoForm.tsx @@ -0,0 +1,125 @@ +'use client'; + +import z from "zod"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; + +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; + +import { GMedidaTipoSchema } from "../../_schemas/GMedidaTipoSchema"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; + +type FormValues = z.infer; + +interface GMedidaTipoFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function GMedidaTipoForm({ isOpen, data, onClose, onSave }: GMedidaTipoFormProps) { + // Inicializa o react-hook-form com o schema Zod + const form = useForm({ + resolver: zodResolver(GMedidaTipoSchema), + defaultValues: { + medida_tipo_id: 0, + sigla: "", + descricao: "", + }, + }); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + + Tipo de Medida + + + Crie ou edite um tipo de medida + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Sigla */} + ( + + Sigla + + + + + + )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campo oculto */} + + + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_medidatipo/GMedidaTipoTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_medidatipo/GMedidaTipoTable.tsx new file mode 100644 index 0000000..6005b84 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_medidatipo/GMedidaTipoTable.tsx @@ -0,0 +1,96 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; + +interface GMedidaTipoTableProps { + data: GMedidaTipoInterface[]; + onEdit: (item: GMedidaTipoInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: GMedidaTipoInterface, isEditingFormStatus: boolean) => void; +} + +export default function GMedidaTipoTable({ + data, + onEdit, + onDelete +}: GMedidaTipoTableProps) { + return ( + + + + # + Descrição + Sigla + Ações + + + + + {data.map((item) => ( + + + {item.medida_tipo_id} + + {item.descricao} + {item.sigla} + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_bairro/GTBBairroForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_bairro/GTBBairroForm.tsx new file mode 100644 index 0000000..3cb3cd2 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_bairro/GTBBairroForm.tsx @@ -0,0 +1,129 @@ +'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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; + +import { GTBBairroSchema } from "../../_schemas/GTBBairroSchema"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +type FormValues = z.infer; + +interface GTBBairroFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function GTBBairroForm({ isOpen, data, onClose, onSave }: GTBBairroFormProps) { + // Inicializa o react-hook-form com o schema Zod + const form = useForm({ + resolver: zodResolver(GTBBairroSchema), + defaultValues: { + sistema_id: null, + tb_bairro_id: 0, + descricao: "", + situacao: "A", + }, + }); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + + Bairro + + + Crie ou edite um bairro + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campos ocultos */} + + + + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_bairro/GTBBairroTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_bairro/GTBBairroTable.tsx new file mode 100644 index 0000000..7aeb15c --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_bairro/GTBBairroTable.tsx @@ -0,0 +1,123 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +interface GTBBairroTableProps { + data: GTBBairroInterface[]; + onEdit: (item: GTBBairroInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: GTBBairroInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: 'A' | 'I' }) { + const isActive = situacao === "A"; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function GTBBairroTable({ + data, + onEdit, + onDelete +}: GTBBairroTableProps) { + return ( + + + + # + Situação + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.tb_bairro_id} + + + + + + + {item.descricao} + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx new file mode 100644 index 0000000..6e94347 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx @@ -0,0 +1,129 @@ +'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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; + +import { GTBEstadoCivilSchema } from "../../_schemas/GTBEstadoCivilSchema"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; + +type FormValues = z.infer; + +interface TBEstadoCivilFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function GTBEstadoCivilForm({ isOpen, data, onClose, onSave }: TBEstadoCivilFormProps) { + // Inicializa o react-hook-form com o schema Zod + const form = useForm({ + resolver: zodResolver(GTBEstadoCivilSchema), + defaultValues: { + tb_estadocivil_id: 0, + sistema_id: 0, + descricao: "", + situacao: "A", + }, + }); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + + Estado Civil + + + Crie ou edite um estado civil + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campos ocultos */} + + + + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilTable.tsx new file mode 100644 index 0000000..1f3ba22 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilTable.tsx @@ -0,0 +1,123 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; + +interface TBEstadoCivilTableProps { + data: GTBEstadoCivilInterface[]; + onEdit: (item: GTBEstadoCivilInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: GTBEstadoCivilInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: 'A' | 'I' }) { + const isActive = situacao === "A"; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function GTBEstadoCivilTable({ + data, + onEdit, + onDelete +}: TBEstadoCivilTableProps) { + return ( + + + + # + Situação + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.tb_estadocivil_id} + + + + + + + {item.descricao} + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_regimebens/GTBRegimeBensForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_regimebens/GTBRegimeBensForm.tsx new file mode 100644 index 0000000..e535fd8 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_regimebens/GTBRegimeBensForm.tsx @@ -0,0 +1,127 @@ +'use client'; + +import z from "zod"; +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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; + +import { GTBRegimeBensSchema } from "../../_schemas/GTBRegimeBensSchema"; +import { useEffect } from "react"; + +type FormValues = z.infer; + +interface Props { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function GTBRegimeComunhaoForm({ isOpen, data, onClose, onSave }: Props) { + + // Inicializa o react-hook-form com schema zod + const form = useForm({ + resolver: zodResolver(GTBRegimeBensSchema), + defaultValues: { + tb_regimebens_id: 0, + descricao: "", + situacao: "", + }, + }); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + + Regimes de Bens + + + Controle de Regimes de Vens + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campo oculto */} + + + +
+
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_regimebens/GTBRegimeBensTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_regimebens/GTBRegimeBensTable.tsx new file mode 100644 index 0000000..364df88 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_regimebens/GTBRegimeBensTable.tsx @@ -0,0 +1,126 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; + +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; + +interface GTBRegimeBensTableProps { + data: GTBRegimeBensInterface[]; + onEdit: (item: GTBRegimeBensInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: GTBRegimeBensInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: string }) { + const isActive = situacao === "A"; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function GTBRegimeBensTable({ + data, + onEdit, + onDelete +}: GTBRegimeBensTableProps) { + return ( + + + + # + Situação + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.tb_regimebens_id} + + + + + + + + {item.descricao} + + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx new file mode 100644 index 0000000..30e26af --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroForm.tsx @@ -0,0 +1,148 @@ +'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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; + +import { GTBTipoLogradouroSchema } from "../../_schemas/GTBTipoLogradouroSchema"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; + +type FormValues = z.infer; + +interface GTBTipoLogradouroFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function GTBTipoLogradouroForm({ isOpen, data, onClose, onSave }: GTBTipoLogradouroFormProps) { + // Inicializa o react-hook-form com schema zod + const form = useForm({ + resolver: zodResolver(GTBTipoLogradouroSchema), + defaultValues: { + sistema_id: null, + tb_tipologradouro_id: 0, + situacao_id: null, + descricao: "", + situacao: "A", + onr_tipo_logradouro_id: 0 + }, + }); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + + Tipo de Logradouro + + + Crie ou edite um tipo de logradouro + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* ID do tipo logradouro na ONR */} + ( + + ID do tipo logradouro na ONR + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campos ocultos */} + + + + + + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroTable.tsx new file mode 100644 index 0000000..acadbdc --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_tipologradouro/GTBTipoLogradouroTable.tsx @@ -0,0 +1,123 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; + +interface GTBTipoLogradouroTableProps { + data: GTBTipoLogradouroInterface[]; + onEdit: (item: GTBTipoLogradouroInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: GTBTipoLogradouroInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: 'A' | 'I' }) { + const isActive = situacao === "A"; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function GTBTipoLogradouroTable({ + data, + onEdit, + onDelete +}: GTBTipoLogradouroTableProps) { + return ( + + + + # + Situação + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.tb_tipologradouro_id} + + + + + + + {item.descricao} + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx new file mode 100644 index 0000000..93576d7 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx @@ -0,0 +1,127 @@ +'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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from "@/components/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; + +import { TCensecSchema } from "../../_schemas/TCensecSchema"; + +type FormValues = z.infer; + +interface Props { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function TCensecForm({ isOpen, data, onClose, onSave }: Props) { + // Inicializa o react-hook-form com schema zod + const form = useForm({ + resolver: zodResolver(TCensecSchema), + defaultValues: { + descricao: "", + situacao: "A", + censec_id: 0, + }, + }); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + + + Censec + + + Tipos de Centrais + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campo oculto */} + + + +
+
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecTable.tsx new file mode 100644 index 0000000..37df466 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecTable.tsx @@ -0,0 +1,125 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; + +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import TCensecInterface from "../../_interfaces/TCensecInterface"; + +interface TCensecTableProps { + data: TCensecInterface[]; + onEdit: (item: TCensecInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: TCensecInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: string }) { + const isActive = situacao === "A"; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function TCensecTable({ + data, + onEdit, + onDelete +}: TCensecTableProps) { + return ( + + + + # + Situação + CBO + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.censec_id} + + + + + + + {item.descricao} + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm.tsx new file mode 100644 index 0000000..434d9ff --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioForm.tsx @@ -0,0 +1,128 @@ +'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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from '@/components/ui/dialog'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage +} from '@/components/ui/form'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; + +import { TCensecNaturezaLitigioSchema } from '../../_schemas/TCensecNaturezaLitigioSchema'; + +type FormValues = z.infer; + +interface TCensecNaturezaLitigioFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function TCensecNaturezaLitigioForm({ + isOpen, + data, + onClose, + onSave +}: TCensecNaturezaLitigioFormProps) { + const form = useForm({ + resolver: zodResolver(TCensecNaturezaLitigioSchema), + defaultValues: { + censec_naturezalitigio_id: 0, + descricao: "", + situacao: "A" + } + }); + + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + + + Natureza do Litígio + + Crie ou edite uma natureza do litígio + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + + {/* Rodapé */} + + + + + + + + {/* Campo oculto */} + + + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable.tsx new file mode 100644 index 0000000..02f96a5 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censecnaturezalitigio/TCensecNaturezaLitigioTable.tsx @@ -0,0 +1,123 @@ +'use client'; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { TCensecNaturezaLitigioInterface } from "../../_interfaces/TCensecNaturezaLitigioInterface"; + +interface TCensecNaturezaLitigioTableProps { + data: TCensecNaturezaLitigioInterface[]; + onEdit: (item: TCensecNaturezaLitigioInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: TCensecNaturezaLitigioInterface, isEditingFormStatus: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: 'A' | 'I' }) { + const isActive = situacao === 'A'; + + const baseClasses = + "text-xs font-medium px-2.5 py-0.5 rounded-sm me-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function TCensecNaturezaLitigioTable({ + data, + onEdit, + onDelete +}: TCensecNaturezaLitigioTableProps) { + return ( + + + + # + Situação + Descrição + Ações + + + + + {data.map((item) => ( + + + {item.censec_naturezalitigio_id} + + + + + + + {item.descricao} + + + + + + + + + + onEdit(item, true)} + > + + Editar + + + + + onDelete(item, true)} + > + + Remover + + + + + + + ))} + +
+ ); +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_minuta/TMinutaForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_minuta/TMinutaForm.tsx new file mode 100644 index 0000000..2a05718 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_minuta/TMinutaForm.tsx @@ -0,0 +1,155 @@ +'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 { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from '@/components/ui/dialog'; +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 { TMinutaInterface } from '../../_interfaces/TMinutaInterface'; +import { TMinutaSchema } from '../../_schemas/TMinutaSchema'; + +type FormValues = z.infer; + +interface TMinutaFormProps { + isOpen: boolean; + data: FormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: FormValues) => void; +} + +export default function TMinutaForm({ + isOpen, + data, + onClose, + onSave +}: TMinutaFormProps) { + + const form = useForm({ + resolver: zodResolver(TMinutaSchema), + defaultValues: { + minuta_id: 0, + natureza_id: undefined, + descricao: '', + situacao: 'A', + texto: '', + } + }); + + useEffect(() => { + if (data) form.reset(data); + }, [data, form]); + + return ( + { + if (!open) onClose(null, false); + }} + > + {/* tamanho maior para comportar o editor */} + + Minuta + + Crie ou edite uma minuta de ato notarial. + + + +
+ + + {/* Descrição */} + ( + + Descrição + + + + + + )} + /> + + {/* Situação */} + ( +
+ field.onChange(checked ? "A" : "I")} + /> + +
+ )} + /> + + {/* Editor de Texto */} + ( +
+ + {form.formState.errors.texto && ( +

+ {form.formState.errors.texto.message} +

+ )} +
+ )} + /> + + {/* Rodapé do Dialog */} + + + + + + + + {/* Campos ocultos */} + + + + + +
+
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_minuta/TMinutaTable.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_minuta/TMinutaTable.tsx new file mode 100644 index 0000000..d7fabf9 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_minuta/TMinutaTable.tsx @@ -0,0 +1,97 @@ +'use client'; + +import Link from "next/link"; +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; +import { TMinutaInterface } from "../../_interfaces/TMinutaInterface"; + +interface TMinutaTableProps { + data: TMinutaInterface[]; + onEdit: (item: TMinutaInterface, isEditing: boolean) => void; + onDelete: (item: TMinutaInterface, isEditing: boolean) => void; +} + +/** + * Renderiza o badge de situação + */ +function StatusBadge({ situacao }: { situacao: 'A' | 'I' }) { + const isActive = situacao === "A"; + + const baseClasses = "text-xs font-medium px-2.5 py-0.5 rounded-sm mr-2"; + + const activeClasses = + "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + + const inactiveClasses = + "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + + return ( + + {isActive ? "Ativo" : "Inativo"} + + ); +} + +export default function TMinutaTable({ + data, +}: TMinutaTableProps) { + return ( + + + + # + Situação + Descrição + + + + + {data.length === 0 ? ( + + + Nenhuma minuta encontrada. + + + ) : ( + data.map((item) => ( + + + {item.t_minuta_id} + + + + + + + {item.descricao} + + + + + + )) + )} + +
+ ); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoIndexData.ts new file mode 100644 index 0000000..7767d4c --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoIndexData.ts @@ -0,0 +1,25 @@ +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import MedidaTipoMockDeDados from "./mockMedidaTipo"; + +const useMock = true + +export default async function GMedidaTipoIndexData() { + if (useMock) { + console.log(MedidaTipoMockDeDados()) + return await MedidaTipoMockDeDados(); + } + + const api = new API(); + try { + const dados = await api.send({ + method: Methods.GET, + endpoint: `administrativo/g_medida_tipo/` + }); + return dados + } catch (error) { + console.log(error) + return error + } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoRemoveData.ts new file mode 100644 index 0000000..7e7f4d3 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoRemoveData.ts @@ -0,0 +1,14 @@ +import API from "@/services/api/Api"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GMedidaTipoRemoveData(data: GMedidaTipoInterface) { + + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/g_medida_tipo/${data.medida_tipo_id}` + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoSaveData.ts new file mode 100644 index 0000000..deff26e --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/GMedidaTipoSaveData.ts @@ -0,0 +1,17 @@ +import API from "@/services/api/Api"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GMedidaTipoSaveData(data: GMedidaTipoInterface) { + + const isUpdate = Boolean(data.medida_tipo_id); + + const api = new API(); + + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, + endpoint: `administrativo/g_medida_tipo/${data.medida_tipo_id || ''}`, + body: data + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/mockMedidaTipo.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/mockMedidaTipo.ts new file mode 100644 index 0000000..ae1eabf --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GMedidoTipo/mockMedidaTipo.ts @@ -0,0 +1,28 @@ +export default async function MedidaTipoMockDeDados() { + return Promise.resolve({ + status: 200, + message: 'Dados localizados', + data: [ + { + medida_tipo_id: 1.00, + sigla: "Alqueire", + descricao: "Alqueire" + }, + { + medida_tipo_id: 2.00, + sigla: "ha", + descricao: "Hectare" + }, + { + medida_tipo_id: 3.00, + sigla: "m2", + descricao: "Metros Quadrados" + }, + { + medida_tipo_id: 4.00, + sigla: "braça", + descricao: "Braça" + } + ] + }); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts new file mode 100644 index 0000000..928f9ff --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroIndexData.ts @@ -0,0 +1,25 @@ +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import BairroMockDeDados from "./mockBairro"; + +const useMock = false + +export default async function GTBBairroIndexData() { + if (useMock) { + console.log(BairroMockDeDados()) + return await BairroMockDeDados(); + } + + const api = new API(); + try { + const dados = await api.send({ + method: Methods.GET, + endpoint: `administrativo/g_tb_bairro/` + }); + return dados + } catch (error) { + console.log(error) + return error + } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroRemoveData.ts new file mode 100644 index 0000000..58c0100 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroRemoveData.ts @@ -0,0 +1,14 @@ +import API from "@/services/api/Api"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GTBBairroRemoveData(data: GTBBairroInterface) { + + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/g_tb_bairro/${data.tb_bairro_id}` + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroSaveData.ts new file mode 100644 index 0000000..4951bb3 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/GTBBairroSaveData.ts @@ -0,0 +1,17 @@ +import API from "@/services/api/Api"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GTBBairroSaveData(data: GTBBairroInterface) { + + const isUpdate = Boolean(data.tb_bairro_id); + + const api = new API(); + + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, + endpoint: `administrativo/g_tb_bairro/${data.tb_bairro_id || ''}`, + body: data + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/mockBairro.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/mockBairro.ts new file mode 100644 index 0000000..e19feed --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBBairro/mockBairro.ts @@ -0,0 +1,46 @@ +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +export default async function BairroMockDeDados() { + return Promise.resolve({ + status: 200, + message: 'Dados localizados', + data: [ + { + sistema_id: 1.00, + tb_bairro_id: 390.00, + descricao: "AV. RUI BARBOSA", + situacao: "A" + }, + { + sistema_id: 1.00, + tb_bairro_id: 391.00, + descricao: "AV. PRESIDENTE DUTRA", + situacao: "A" + }, + { + sistema_id: 1.00, + tb_bairro_id: 392.00, + descricao: "LOTEAMENTO CIDADE MARA ROSA", + situacao: "A" + }, + { + sistema_id: 1.00, + tb_bairro_id: 393.00, + descricao: "LOTEAMENTO BENEDITO COELHO FURTADO", + situacao: "A" + }, + { + sistema_id: 1.00, + tb_bairro_id: 394.00, + descricao: "RUA 15 DE NOVEMBRO", + situacao: "A" + }, + { + sistema_id: 1.00, + tb_bairro_id: 395.00, + descricao: "PRACA JOSÉ MAURICIO DE MOURA", + situacao: "A" + } + ] + }); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts new file mode 100644 index 0000000..efa8787 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts @@ -0,0 +1,25 @@ +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import EstadoCivilMockDeDados from "./mockEstadoCivil"; + +const useMock = true + +export default async function GTBEstadoCivilIndexData() { + if (useMock) { + console.log(EstadoCivilMockDeDados()) + return await EstadoCivilMockDeDados(); + } + + const api = new API(); + try { + const dados = await api.send({ + method: Methods.GET, + endpoint: `administrativo/g_tb_estado_civil/` + }); + return dados + } catch (error) { + console.log(error) + return error + } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts new file mode 100644 index 0000000..306b3c4 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts @@ -0,0 +1,14 @@ +import API from "@/services/api/Api"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) { + + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/g_tb_bairro/${data.tb_estadocivil_id}` + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts new file mode 100644 index 0000000..da800a6 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts @@ -0,0 +1,17 @@ +import API from "@/services/api/Api"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GTBEstadoCivilSaveData(data: GTBEstadoCivilInterface) { + + const isUpdate = Boolean(data.tb_estadocivil_id); + + const api = new API(); + + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, + endpoint: `administrativo/g_tb_bairro/${data.tb_estadocivil_id || ''}`, + body: data + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts new file mode 100644 index 0000000..04e8155 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts @@ -0,0 +1,58 @@ +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +export default async function EstadoCivilMockDeDados() { + return Promise.resolve({ + status: 200, + message: 'Dados localizados', + data: [ + { + tb_estadocivil_id: 26.00, + sistema_id: 2.00, + descricao: "casado", + situacao: "A", + }, + { + tb_estadocivil_id: 27.00, + sistema_id: 2.00, + descricao: "solteiro(a)", + situacao: "A", + }, + { + tb_estadocivil_id: 28.00, + sistema_id: 2.00, + descricao: "desquitado(a)", + situacao: "A", + }, + { + tb_estadocivil_id: 29.00, + sistema_id: 2.00, + descricao: "divorciado(a)", + situacao: "A", + }, + { + tb_estadocivil_id: 30.00, + sistema_id: 2.00, + descricao: "espólio", + situacao: "A", + }, + { + tb_estadocivil_id: 31.00, + sistema_id: 2.00, + descricao: "menor impúbere", + situacao: "A", + }, + { + tb_estadocivil_id: 32.00, + sistema_id: 2.00, + descricao: "menor púbere", + situacao: "A", + }, + { + tb_estadocivil_id: 33.00, + sistema_id: 2.00, + descricao: "não consta", + situacao: "A", + } + ] + }); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensRemoveData.ts index 4437ff2..ebbb985 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensRemoveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensRemoveData.ts @@ -1,14 +1,14 @@ import API from "@/services/api/Api"; import { Methods } from "@/services/api/enums/ApiMethodEnum"; -import GTBRegimeComunhaoInterface from "../../_interfaces/GTBRegimeComunhaoInterface"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; -export default async function GTBRegimeBensRemoveData(data: GTBRegimeComunhaoInterface) { +export default async function GTBRegimeBensRemoveData(data: GTBRegimeBensInterface) { const api = new API(); return await api.send({ method: Methods.DELETE, - endpoint: `administrativo/g_tb_regimecomunhao/${data.tb_regimecomunhao_id}` + endpoint: `administrativo/g_tb_regimebens/${data.tb_regimebens_id}` }); } \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensSaveData.ts index c76f733..b469f5b 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensSaveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBRegimeBens/GTBRegimeBensSaveData.ts @@ -1,16 +1,21 @@ import API from "@/services/api/Api"; -import GTBRegimeComunhaoInterface from "../../_interfaces/GTBRegimeComunhaoInterface"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; -export default async function GTBRegimeBensSaveData(data: GTBRegimeComunhaoInterface) { +async function executeGTBRegimeBensSaveData(data: GTBRegimeBensInterface) { - const isUpdate = Boolean(data.tb_regimecomunhao_id); + throw new Error("Nome e email são obrigatórios"); + + const isUpdate = Boolean(data.tb_regimebens_id); const api = new API(); return await api.send({ method: isUpdate ? Methods.PUT : Methods.POST, - endpoint: `administrativo/g_tb_regimecomunhao/${data.tb_regimecomunhao_id || ''}`, + endpoint: `administrativo/g_tb_regimebens/${data.tb_regimebens_id || ''}`, body: data }); -} \ No newline at end of file +} + +export const GTBRegimeBensSaveData = withClientErrorHandler(executeGTBRegimeBensSaveData); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts new file mode 100644 index 0000000..a9fa5ae --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData.ts @@ -0,0 +1,25 @@ +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import TipoLogradouroMockDeDados from "./mockTipoLogradouro"; + +const useMock = false + +export default async function GTBTipoLogradouroIndexData() { + if (useMock) { + console.log(TipoLogradouroMockDeDados()) + return await TipoLogradouroMockDeDados(); + } + + const api = new API(); + try { + const dados = await api.send({ + method: Methods.GET, + endpoint: `administrativo/g_tb_tipologradouro/` + }); + return dados + } catch (error) { + console.log(error) + return error + } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroRemoveData.ts new file mode 100644 index 0000000..9a1799e --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroRemoveData.ts @@ -0,0 +1,14 @@ +import API from "@/services/api/Api"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GTBTipoLogradouroRemoveData(data: GTBTipoLogradouroInterface) { + + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/g_tb_tipologradouro/${data.tb_tipologradouro_id}` + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroSaveData.ts new file mode 100644 index 0000000..5508890 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/GTBTipoLogradouroSaveData.ts @@ -0,0 +1,17 @@ +import API from "@/services/api/Api"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; + +export default async function GTBTipoLogradouroSaveData(data: GTBTipoLogradouroInterface) { + + const isUpdate = Boolean(data.tb_tipologradouro_id); + + const api = new API(); + + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, + endpoint: `administrativo/g_tb_tipologradouro/${data.tb_tipologradouro_id || ''}`, + body: data + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts new file mode 100644 index 0000000..d0ea84a --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBTipoLogradouro/mockTipoLogradouro.ts @@ -0,0 +1,98 @@ +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; + +export default async function TipoLogradouroMockDeDados(){ + return Promise.resolve({ + status: 200, + message: 'Dados localizados', + data: [ + { + sistema_id: null, + tb_tipologradouro_id: 1, + situacao_id: null, + descricao: "Rua", + situacao: "A", + onr_tipo_logradouro_id: 250 + }, + { + sistema_id: null, + tb_tipologradouro_id: 2, + situacao_id: null, + descricao: "Avenida", + situacao: "A", + onr_tipo_logradouro_id: 26 + }, + { + sistema_id: null, + tb_tipologradouro_id: 3, + situacao_id: null, + descricao: "Alameda", + situacao: "A", + onr_tipo_logradouro_id: 10 + }, + { + sistema_id: null, + tb_tipologradouro_id: 4, + situacao_id: null, + descricao: "Praça", + situacao: "A", + onr_tipo_logradouro_id: 215 + }, + { + sistema_id: null, + tb_tipologradouro_id: 5, + situacao_id: null, + descricao: "Via", + situacao: "A", + onr_tipo_logradouro_id: 294 + }, + { + sistema_id: null, + tb_tipologradouro_id: 6, + situacao_id: null, + descricao: "Viela", + situacao: "A", + onr_tipo_logradouro_id: 297 + }, + { + sistema_id: null, + tb_tipologradouro_id: 7, + situacao_id: null, + descricao: "Travessa", + situacao: "A", + onr_tipo_logradouro_id: 273 + }, + { + sistema_id: null, + tb_tipologradouro_id: 8, + situacao_id: null, + descricao: "Rodovia", + situacao: "A", + onr_tipo_logradouro_id: 247 + }, + { + sistema_id: null, + tb_tipologradouro_id: 9, + situacao_id: null, + descricao: "Sítios", + situacao: "A", + onr_tipo_logradouro_id: 263 + }, + { + sistema_id: null, + tb_tipologradouro_id: 10, + situacao_id: null, + descricao: "Córrego", + situacao: "A", + onr_tipo_logradouro_id: 86 + }, + { + sistema_id: null, + tb_tipologradouro_id: 11, + situacao_id: null, + descricao: "Estrada", + situacao: "A", + onr_tipo_logradouro_id: 117 + } + ] + }); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts new file mode 100644 index 0000000..f3f367a --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts @@ -0,0 +1,10 @@ +import TCensecInterface from "../../_interfaces/TCensecInterface"; + +export default async function TCensecDeleteData(data: TCensecInterface) { + + return Promise.resolve({ + message: 'Dados removidos', + status: 200 + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts new file mode 100644 index 0000000..d1747cf --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts @@ -0,0 +1,30 @@ +export default async function TCensecIndexData() { + + return Promise.resolve({ + message: 'Dados localizados', + status: 200, + data: [ + { + censec_id: 1.00, + descricao: 'CEP - Escritura e Procurações Diversas', + situacao: 'A' + }, + { + censec_id: 2.00, + descricao: 'CESDI - Escrituras Lei 11.441', + situacao: 'A' + }, + { + censec_id: 3.00, + descricao: 'RCTO - Testamentos', + situacao: 'A' + }, + { + censec_id: 9.00, + descricao: 'Não Possui', + situacao: 'A' + } + ] + }); + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts new file mode 100644 index 0000000..eefb0f8 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts @@ -0,0 +1,15 @@ +import TCensecInterface from "../../_interfaces/TCensecInterface"; + +export default async function TCensecSaveData(data: TCensecInterface) { + + return Promise.resolve({ + message: 'Dados salvos', + status: 201, + data: { + censec_id: 9.00, + descricao: 'Não Possui', + situacao: 'A' + } + }); + +} \ No newline at end of file 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.

+ +

Dou fé.

+`; + +export const textoEscrituraPartilhaAmigavel = ` +

ESCRITURA PÚBLICA DE PARTILHA AMIGÁVEL

+ +

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]];
  • +
  • ... (outros bens, se houver)
  • +
+ +

Partilha:

+ +
    +
  • Ao(à) herdeiro(a) [[nome_herdeiro_1]] caberá o(s) bem(ns): [[bens_herdeiro_1]];
  • +
  • Ao(à) herdeiro(a) [[nome_herdeiro_2]] caberá o(s) bem(ns): [[bens_herdeiro_2]];
  • +
  • ... (demais partilhas, se houver)
  • +
+ +

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.

+ +

Dou fé.

+`; + +export const textoProcuracaoAdJudicia = ` +

PROCURAÇÃO AD JUDICIA

+ +

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]].

+ +

_______________________________

+

[[nome_outorgante]]

+ +

Testemunhas:

+

1. ___________________________

+

Nome: [[nome_testemunha_1]] - CPF: [[cpf_testemunha_1]]

+ +

2. ___________________________

+

Nome: [[nome_testemunha_2]] - CPF: [[cpf_testemunha_2]]

+`; 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/_data/TTBAndamentoServico/TTBAndamentoServicoSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TTBAndamentoServico/TTBAndamentoServicoSaveData.ts index c8ebd33..589ec9b 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/TTBAndamentoServico/TTBAndamentoServicoSaveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TTBAndamentoServico/TTBAndamentoServicoSaveData.ts @@ -3,8 +3,9 @@ import API from "@/services/api/Api"; import TTBAndamentoServicoInteface from "../../_interfaces/TTBAndamentoServicoInterface"; import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; -export default async function TTBAndamentoServicoSaveData(data: TTBAndamentoServicoInteface) { +async function executeTTBAndamentoServicoSaveData(data: TTBAndamentoServicoInteface) { const api = new API(); @@ -16,4 +17,7 @@ export default async function TTBAndamentoServicoSaveData(data: TTBAndamentoServ return response; -} \ No newline at end of file +} + +// Encapsula a execução da função +export const TTBAndamentoServicoSaveData = withClientErrorHandler(executeTTBAndamentoServicoSaveData); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoReadHook.ts new file mode 100644 index 0000000..9ac7b2c --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoReadHook.ts @@ -0,0 +1,27 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; +import GMedidaTipoIndexService from "../../_services/g_medidatipo/GMedidaTipoIndexService"; + +export const useGMedidaTipoReadHook = () => { + + const { setResponse } = useResponse(); + const [gMedidaTipo, setGMedidaTipo] = useState([]); + + const fetchGMedidaTipo = async () => { + + try { + const response = await GMedidaTipoIndexService(); + + setGMedidaTipo(response.data); + + setResponse(response); + } catch (error) { + console.log(error) + } + + } + + return { gMedidaTipo, fetchGMedidaTipo } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoRemoveHook.ts new file mode 100644 index 0000000..d19018a --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoRemoveHook.ts @@ -0,0 +1,19 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; +import GMedidaTipoRemoveService from "../../_services/g_medidatipo/GMedidaTipoRemoveService"; + +export const useGMedidaTipoRemoveHook = () => { + + const { setResponse } = useResponse(); + + const removeGMedidaTipo = async (data: GMedidaTipoInterface) => { + + const response = await GMedidaTipoRemoveService(data); + + setResponse(response); + + } + + return { removeGMedidaTipo } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoSaveHook.ts new file mode 100644 index 0000000..8f70843 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_medidatipo/useGMedidaTipoSaveHook.ts @@ -0,0 +1,31 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; +import GMedidaTipoSaveService from "../../_services/g_medidatipo/GMedidaTipoSaveService"; + +export const useGMedidaTipoSaveHook = () => { + + const { setResponse } = useResponse(); + const [gMedidaTipo, setGMedidaTipo] = useState(null); + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveGMedidaTipo = async (data: GMedidaTipoInterface) => { + + const response = await GMedidaTipoSaveService(data); + + setGMedidaTipo(response.data); + + setResponse(response); + + // Fecha o formulário automaticamente após salvar + setIsOpen(false); + + // Retorna os dados imediatamente + return response; + + } + + return { gMedidaTipo, saveGMedidaTipo } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroReadHook.ts new file mode 100644 index 0000000..2b78ab8 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroReadHook.ts @@ -0,0 +1,27 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; +import GTBBairroIndexService from "../../_services/g_tb_bairro/GTBBairroIndexService"; + +export const useGTBBairroReadHook = () => { + + const { setResponse } = useResponse(); + const [gTBBairro, setGTBBairro] = useState([]); + + const fetchGTBBairro = async () => { + + try { + const response = await GTBBairroIndexService(); + + setGTBBairro(response.data); + + setResponse(response); + } catch (error) { + console.log(error) + } + + } + + return { gTBBairro, fetchGTBBairro } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroRemoveHook.ts new file mode 100644 index 0000000..00ed2d0 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroRemoveHook.ts @@ -0,0 +1,19 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; +import GTBBairroRemoveService from "../../_services/g_tb_bairro/GTBBairroRemoveService"; + +export const useGTBBairroRemoveHook = () => { + + const { setResponse } = useResponse(); + + const removeGTBBairro = async (data: GTBBairroInterface) => { + + const response = await GTBBairroRemoveService(data); + + setResponse(response); + + } + + return { removeGTBBairro } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroSaveHook.ts new file mode 100644 index 0000000..8873c44 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_bairro/useGTBBairroSaveHook.ts @@ -0,0 +1,31 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; +import GTBBairroSaveService from "../../_services/g_tb_bairro/GTBBairroSaveService"; + +export const useGTBBairroSaveHook = () => { + + const { setResponse } = useResponse(); + const [gTBBairro, setGTBBairro] = useState(null); + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveGTBBairro = async (data: GTBBairroInterface) => { + + const response = await GTBBairroSaveService(data); + + setGTBBairro(response.data); + + setResponse(response); + + // Fecha o formulário automaticamente após salvar + setIsOpen(false); + + // Retorna os dados imediatamente + return response; + + } + + return { gTBBairro, saveGTBBairro } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilReadHook.ts new file mode 100644 index 0000000..4a7d31b --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilReadHook.ts @@ -0,0 +1,27 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; +import GTBEstadoCivilIndexService from "../../_services/g_tb_estadocivil/GTBEstadoCivilIndexService"; + +export const useGTBEstadoCivilReadHook = () => { + + const { setResponse } = useResponse(); + const [gTBEstadoCivil, setGTBEstadoCivil] = useState([]); + + const fetchGTBEstadoCivil = async () => { + + try { + const response = await GTBEstadoCivilIndexService(); + + setGTBEstadoCivil(response.data); + + setResponse(response); + } catch (error) { + console.log(error) + } + + } + + return { gTBEstadoCivil, fetchGTBEstadoCivil } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilRemoveHook.ts new file mode 100644 index 0000000..1cc29cf --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilRemoveHook.ts @@ -0,0 +1,19 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; +import GTBEstadoCivilRemoveService from "../../_services/g_tb_estadocivil/GTBEstadoCivilRemoveService"; + +export const useGTBEstadoCivilRemoveHook = () => { + + const { setResponse } = useResponse(); + + const removeGTBEstadoCivil = async (data: GTBEstadoCivilInterface) => { + + const response = await GTBEstadoCivilRemoveService(data); + + setResponse(response); + + } + + return { removeGTBEstadoCivil } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilSaveHook.ts new file mode 100644 index 0000000..63a0237 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_estadocivil/useGTBEstadoCivilSaveHook.ts @@ -0,0 +1,31 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; +import GTBEstadoCivilSaveService from "../../_services/g_tb_estadocivil/GTBEstadoCivilSaveService"; + +export const useGTBEstadoCivilSaveHook = () => { + + const { setResponse } = useResponse(); + const [gTBEstadoCivil, setGTBEstadoCivil] = useState(null); + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveGTBEstadoCivil = async (data: GTBEstadoCivilInterface) => { + + const response = await GTBEstadoCivilSaveService(data); + + setGTBEstadoCivil(response.data); + + setResponse(response); + + // Fecha o formulário automaticamente após salvar + setIsOpen(false); + + // Retorna os dados imediatamente + return response; + + } + + return { gTBEstadoCivil, saveGTBEstadoCivil } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensRemoveHook.ts index 7c4ac98..748313e 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensRemoveHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensRemoveHook.ts @@ -1,14 +1,14 @@ import { useResponse } from "@/app/_response/ResponseContext" -import GTBRegimeComunhaoInterface from "../../_interfaces/GTBRegimeComunhaoInterface"; -import GTBRegimeComunhaoRemoveService from "../../_services/g_tb_regimecomunhao/GTBRegimeComunhaoRemoveService"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; +import GTBRegimeBensRemoveData from "../../_data/GTBRegimeBens/GTBRegimeBensRemoveData"; export const useGTBRegimeBensRemoveHook = () => { const { setResponse } = useResponse(); - const removeGTBRegimeComunhao = async (data: GTBRegimeComunhaoInterface) => { + const removeGTBRegimeComunhao = async (data: GTBRegimeBensInterface) => { - const response = await GTBRegimeComunhaoRemoveService(data); + const response = await GTBRegimeBensRemoveData(data); setResponse(response); diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensSaveHook.ts index bd63963..4941f94 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensSaveHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_regimebens/useGTBRegimeBensSaveHook.ts @@ -1,18 +1,19 @@ import { useState } from "react"; import { useResponse } from "@/app/_response/ResponseContext" -import GTBRegimeComunhaoInterface from "../../_interfaces/GTBRegimeComunhaoInterface"; -import GTBRegimeComunhaoSaveService from "../../_services/g_tb_regimecomunhao/GTBRegimeComunhaoSaveService"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; +import { GTBRegimeBensSaveService } from "../../_services/g_tb_regimebens/GTBRegimeBensSaveService"; export const useGTBRegimeBensSaveHook = () => { const { setResponse } = useResponse(); - const [gTBRegimeComunhao, setGTBRegimeComunhao] = useState(null); + const [gTBRegimeComunhao, setGTBRegimeComunhao] = useState(null); + // controla se o formulário está aberto ou fechado const [isOpen, setIsOpen] = useState(false); - const saveGTBRegimeComunhao = async (data: GTBRegimeComunhaoInterface) => { + const saveGTBRegimeComunhao = async (data: GTBRegimeBensInterface) => { - const response = await GTBRegimeComunhaoSaveService(data); + const response = await GTBRegimeBensSaveService(data); // Guardar os dados localizados setGTBRegimeComunhao(response.data); diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroReadHook.ts new file mode 100644 index 0000000..a452e29 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroReadHook.ts @@ -0,0 +1,27 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; +import GTBTipoLogradouroIndexService from "../../_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService"; + +export const useGTBTipoLogradouroReadHook = () => { + + const { setResponse } = useResponse(); + const [gTBTipoLogradouro, setGTBTipoLogradouro] = useState([]); + + const fetchGTBTipoLogradouro = async () => { + + try { + const response = await GTBTipoLogradouroIndexService(); + + setGTBTipoLogradouro(response.data); + + setResponse(response); + } catch (error) { + console.log(error) + } + + } + + return { gTBTipoLogradouro, fetchGTBTipoLogradouro } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroRemoveHook.ts new file mode 100644 index 0000000..529ae61 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroRemoveHook.ts @@ -0,0 +1,19 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; +import GTBTipoLogradouroRemoveService from "../../_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService"; + +export const useGTBTipoLogradouroRemoveHook = () => { + + const { setResponse } = useResponse(); + + const removeGTBTipoLogradouro = async (data: GTBTipoLogradouroInterface) => { + + const response = await GTBTipoLogradouroRemoveService(data); + + setResponse(response); + + } + + return { removeGTBTipoLogradouro } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroSaveHook.ts new file mode 100644 index 0000000..668966d --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_tb_tipologradouro/useGTBTipoLogradouroSaveHook.ts @@ -0,0 +1,31 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; +import GTBTipoLogradouroSaveService from "../../_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService"; + +export const useGTBTipoLogradouroSaveHook = () => { + + const { setResponse } = useResponse(); + const [gTBTipoLogradouro, setGTBTipoLogradouro] = useState(null); + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveGTBTipoLogradouro = async (data: GTBTipoLogradouroInterface) => { + + const response = await GTBTipoLogradouroSaveService(data); + + setGTBTipoLogradouro(response.data); + + setResponse(response); + + // Fecha o formulário automaticamente após salvar + setIsOpen(false); + + // Retorna os dados imediatamente + return response; + + } + + return { gTBTipoLogradouro, saveGTBTipoLogradouro } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts new file mode 100644 index 0000000..6542033 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts @@ -0,0 +1,19 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import TCensecInterface from "../../_interfaces/TCensecInterface"; +import TCensecDeleteService from "../../_services/t_censec/TCensecDeleteService"; + +export const useTCensecDeleteHook = () => { + + const { setResponse } = useResponse(); + + const deleteTCensec = async (data: TCensecInterface) => { + + const response = await TCensecDeleteService(data); + + setResponse(response); + + } + + return { deleteTCensec } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts new file mode 100644 index 0000000..b71e8c3 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts @@ -0,0 +1,26 @@ +import { useResponse } from "@/app/_response/ResponseContext" +import TCensecIndexService from "../../_services/t_censec/TCensecIndexService"; +import { useState } from "react"; +import TCensecInterface from "../../_interfaces/TCensecInterface"; + +export const useTCensecReadHook = () => { + + const { setResponse } = useResponse(); + + const [tCensec, setTCensec] = useState([]); + + const fetchTCensec = async () => { + + const response = await TCensecIndexService(); + + setTCensec(response.data); + + setResponse(response); + + return response + + } + + return { tCensec, fetchTCensec } + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts new file mode 100644 index 0000000..a1412b7 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts @@ -0,0 +1,37 @@ +'use client' + +import { useResponse } from "@/app/_response/ResponseContext" +import { useState } from "react"; +import TCensecInterface from "../../_interfaces/TCensecInterface"; +import TCensecSaveService from "../../_services/t_censec/TCensecSaveService"; + +export const useTCensecSaveHook = () => { + + const { setResponse } = useResponse(); + + const [tCensec, setTCensec] = useState(); + + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveTCensec = async (data: TCensecInterface) => { + + const response = await TCensecSaveService(data); + + // Armazena os dados da repsota + setTCensec(response.data); + + // Define os dados da respota(toast, modal, etc) + setResponse(response); + + // Fecha o formulário automaticamente após salvar + setIsOpen(false); + + // Retorna os valores de forma imediata + return response.data; + + } + + return { tCensec, saveTCensec } + +} \ No newline at end of file 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..bbf5cda --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censecnaturezalitigio/useTCensecNaturezaLitigioRemoveHook.ts @@ -0,0 +1,24 @@ +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) => { + + 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/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoSaveHook.ts index 43586da..863b8d1 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoSaveHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_andamentoservico/useTTBAndamentoServicoSaveHook.ts @@ -3,7 +3,7 @@ import { useResponse } from "@/app/_response/ResponseContext" import { useState } from "react"; import TTBAndamentoServicoInteface from "../../_interfaces/TTBAndamentoServicoInterface"; -import TTBAndamentoServicoSaveData from "../../_data/TTBAndamentoServico/TTBAndamentoServicoSaveData"; +import { TTBAndamentoServicoSaveData } from "../../_data/TTBAndamentoServico/TTBAndamentoServicoSaveData"; export const useTTBAndamentoServicoSaveHook = () => { diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/GMedidaTipoInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GMedidaTipoInterface.ts new file mode 100644 index 0000000..f351f54 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GMedidaTipoInterface.ts @@ -0,0 +1,5 @@ +export interface GMedidaTipoInterface { + medida_tipo_id: number; + sigla: string; + descricao: string; +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBBairroInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBBairroInterface.ts new file mode 100644 index 0000000..e3a8c68 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBBairroInterface.ts @@ -0,0 +1,6 @@ +export interface GTBBairroInterface { + sistema_id: number | null; + tb_bairro_id: number; + descricao: string; + situacao: 'A' | 'I'; +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBEstadoCivilInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBEstadoCivilInterface.ts new file mode 100644 index 0000000..12f1cf5 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBEstadoCivilInterface.ts @@ -0,0 +1,6 @@ +export interface GTBEstadoCivilInterface { + tb_estadocivil_id: number; + sistema_id: number; + descricao: string; + situacao: 'A' | 'I'; +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBTipoLogradouroInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBTipoLogradouroInterface.ts new file mode 100644 index 0000000..c7c3a80 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/GTBTipoLogradouroInterface.ts @@ -0,0 +1,8 @@ +export interface GTBTipoLogradouroInterface { + sistema_id: number | null; + tb_tipologradouro_id: number; + situacao_id: number | null; + descricao: string; + situacao: 'A' | 'I'; + onr_tipo_logradouro_id: number; +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecInterface.ts new file mode 100644 index 0000000..2fbf58a --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TCensecInterface.ts @@ -0,0 +1,6 @@ + +export default interface TCensecInterface { + censec_id?: number + descricao: string + situacao: string +} \ No newline at end of file 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/GMedidaTipoSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/GMedidaTipoSchema.ts new file mode 100644 index 0000000..12bc46e --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/GMedidaTipoSchema.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const GMedidaTipoSchema = z.object({ + medida_tipo_id: z.number(), + sigla: z.string(), + descricao: z.string(), +}); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBBairroSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBBairroSchema.ts new file mode 100644 index 0000000..50fcf25 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBBairroSchema.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; + +export const GTBBairroSchema = z.object({ + sistema_id: z.number().nullable(), + tb_bairro_id: z.number(), + descricao: z.string(), + situacao: z.enum(['A', 'I']), +}); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBEstadoCivilSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBEstadoCivilSchema.ts new file mode 100644 index 0000000..88cb617 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBEstadoCivilSchema.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; + +export const GTBEstadoCivilSchema = z.object({ + tb_estadocivil_id: z.number(), + sistema_id: z.number(), + descricao: z.string(), + situacao: z.enum(['A', 'I']), +}); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBRegimeBensSchemas.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBRegimeBensSchema.ts similarity index 72% rename from src/app/(protected)/(cadastros)/cadastros/_schemas/GTBRegimeBensSchemas.ts rename to src/app/(protected)/(cadastros)/cadastros/_schemas/GTBRegimeBensSchema.ts index 7356f03..49637f0 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBRegimeBensSchemas.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBRegimeBensSchema.ts @@ -1,6 +1,6 @@ import z from "zod"; -export const GTBRegimeBensSchemas = z.object({ +export const GTBRegimeBensSchema = z.object({ tb_regimebens_id: z.number().optional(), descricao: z.string(), situacao: z.string(), diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBTipoLogradouroSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBTipoLogradouroSchema.ts new file mode 100644 index 0000000..92204bd --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/GTBTipoLogradouroSchema.ts @@ -0,0 +1,10 @@ +import { z } from 'zod'; + +export const GTBTipoLogradouroSchema = z.object({ + sistema_id: z.number().int().nullable(), + tb_tipologradouro_id: z.number().int(), + situacao_id: z.number().nullable(), + descricao: z.string(), + situacao: z.enum(['A', 'I']), + onr_tipo_logradouro_id: z.number(), +}); \ No newline at end of file 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/TCensecSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecSchema.ts new file mode 100644 index 0000000..a9d0aa4 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TCensecSchema.ts @@ -0,0 +1,7 @@ +import z from "zod"; + +export const TCensecSchema = z.object({ + censec_id: z.number().optional(), + descricao: z.string().min(1, "O campo deve ser preenchido").max(60, "O campo excedeu o limite de 60 caracteres"), + situacao: z.string().min(1, "O campo deve ser preenchido").max(10, "O campo excedeu o limite de 10 caracteres"), +}); \ 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..7177819 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TMinutaSchema.ts @@ -0,0 +1,9 @@ +import { z } from "zod"; + +export const TMinutaSchema = z.object({ + minuta_id: z.number().optional(), + 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/g_medidatipo/GMedidaTipoIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoIndexService.ts new file mode 100644 index 0000000..e12ceba --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoIndexService.ts @@ -0,0 +1,12 @@ +import GMedidaTipoIndexData from "../../_data/GMedidoTipo/GMedidaTipoIndexData"; + +export default async function GMedidaTipoIndexService() { + + try { + const response = await GMedidaTipoIndexData(); + return response; + } catch (error) { + console.log(error) + return error + } +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoRemoveService.ts new file mode 100644 index 0000000..2a98f69 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoRemoveService.ts @@ -0,0 +1,10 @@ +import GMedidaTipoRemoveData from "../../_data/GMedidoTipo/GMedidaTipoRemoveData"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; + +export default async function GMedidaTipoRemoveService(data: GMedidaTipoInterface) { + + const response = await GMedidaTipoRemoveData(data); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoSaveService.ts new file mode 100644 index 0000000..c6f3460 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_medidatipo/GMedidaTipoSaveService.ts @@ -0,0 +1,12 @@ +import GMedidaTipoSaveData from "../../_data/GMedidoTipo/GMedidaTipoSaveData"; +import { GMedidaTipoInterface } from "../../_interfaces/GMedidaTipoInterface"; + +export default async function GMedidaTipoSaveService(data: GMedidaTipoInterface) { + + const response = await GMedidaTipoSaveData(data); + + console.log('GTBRegimeComunhaoSaveData', response) + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroIndexService.ts new file mode 100644 index 0000000..fbc3e01 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroIndexService.ts @@ -0,0 +1,12 @@ +import GTBBairroIndexData from "../../_data/GTBBairro/GTBBairroIndexData"; + +export default async function GTBBairroIndexService() { + + try { + const response = await GTBBairroIndexData(); + return response; + } catch (error) { + console.log(error) + return error + } +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroRemoveService.ts new file mode 100644 index 0000000..59bbe42 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroRemoveService.ts @@ -0,0 +1,10 @@ +import GTBBairroRemoveData from "../../_data/GTBBairro/GTBBairroRemoveData"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +export default async function GTBBairroRemoveService(data: GTBBairroInterface) { + + const response = await GTBBairroRemoveData(data); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroSaveService.ts new file mode 100644 index 0000000..f7e8da4 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_bairro/GTBBairroSaveService.ts @@ -0,0 +1,12 @@ +import GTBBairroSaveData from "../../_data/GTBBairro/GTBBairroSaveData"; +import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface"; + +export default async function GTBBairroSaveService(data: GTBBairroInterface) { + + const response = await GTBBairroSaveData(data); + + console.log('GTBRegimeComunhaoSaveData', response) + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts new file mode 100644 index 0000000..11c0b1d --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts @@ -0,0 +1,12 @@ +import GTBEstadoCivilIndexData from "../../_data/GTBEstadoCivil/GTBEstadoCivilIndexData"; + +export default async function GTBEstadoCivilIndexService() { + + try { + const response = await GTBEstadoCivilIndexData(); + return response; + } catch (error) { + console.log(error) + return error + } +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts new file mode 100644 index 0000000..4c19f10 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts @@ -0,0 +1,10 @@ +import GTBEstadoCivilSaveData from "../../_data/GTBEstadoCivil/GTBEstadoCivilSaveData"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; + +export default async function GTBEstadoCivilRemoveService(data: GTBEstadoCivilInterface) { + + const response = await GTBEstadoCivilSaveData(data); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts new file mode 100644 index 0000000..0567d52 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts @@ -0,0 +1,12 @@ +import GTBEstadoCivilSaveData from "../../_data/GTBEstadoCivil/GTBEstadoCivilSaveData"; +import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; + +export default async function GTBEstadoCivilSaveService(data: GTBEstadoCivilInterface) { + + const response = await GTBEstadoCivilSaveData(data); + + console.log('GTBRegimeComunhaoSaveData', response) + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensRemoveService.ts index 06bec9b..b194991 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensRemoveService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensRemoveService.ts @@ -1,9 +1,9 @@ -import GTBRegimeComunhaoRemoveData from "../../_data/GTRegimeComunhao/GTBRegimeComunhaoRemoveData"; -import GTBRegimeComunhaoInterface from "../../_interfaces/GTBRegimeComunhaoInterface"; +import GTBRegimeBensRemoveData from "../../_data/GTBRegimeBens/GTBRegimeBensRemoveData"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; -export default async function GTBRegimeComunhaoRemoveService(data: GTBRegimeComunhaoInterface) { +export default async function GTBRegimeBensRemoveService(data: GTBRegimeBensInterface) { - const response = await GTBRegimeComunhaoRemoveData(data); + const response = await GTBRegimeBensRemoveData(data); return response; diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensSaveService.ts index f81e5c9..cf8cefa 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensSaveService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_regimebens/GTBRegimeBensSaveService.ts @@ -1,10 +1,14 @@ -import GTBRegimeComunhaoSaveData from "../../_data/GTRegimeComunhao/GTBRegimeComunhaoSaveData"; -import GTBRegimeComunhaoInterface from "../../_interfaces/GTBRegimeComunhaoInterface"; +import { GTBRegimeBensSaveData } from "../../_data/GTBRegimeBens/GTBRegimeBensSaveData"; +import GTBRegimeBensInterface from "../../_interfaces/GTBRegimeBensInterface"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; -export default async function GTBRegimeComunhaoSaveService(data: GTBRegimeComunhaoInterface) { +async function executeGTBRegimeBensSaveService(data: GTBRegimeBensInterface) { - const response = await GTBRegimeComunhaoSaveData(data); + const response = await GTBRegimeBensSaveData(data); return response; -} \ No newline at end of file +} + +// Executa a função de forma encapsulada +export const GTBRegimeBensSaveService = withClientErrorHandler(executeGTBRegimeBensSaveService); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts new file mode 100644 index 0000000..1eb7666 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroIndexService.ts @@ -0,0 +1,12 @@ +import GTBTipoLogradouroIndexData from "../../_data/GTBTipoLogradouro/GTBTipoLogradouroIndexData"; + +export default async function GTBTipoLogradouroIndexService() { + + try { + const response = await GTBTipoLogradouroIndexData(); + return response; + } catch (error) { + console.log(error) + return error + } +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts new file mode 100644 index 0000000..2fca163 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroRemoveService.ts @@ -0,0 +1,10 @@ +import GTBTipoLogradouroRemoveData from "../../_data/GTBTipoLogradouro/GTBTipoLogradouroRemoveData"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; + +export default async function GTBTipoLogradouroRemoveService(data: GTBTipoLogradouroInterface) { + + const response = await GTBTipoLogradouroRemoveData(data); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts new file mode 100644 index 0000000..ce514bc --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_tipologradouro/GTBTipoLogradouroSaveService.ts @@ -0,0 +1,12 @@ +import GTBTipoLogradouroSaveData from "../../_data/GTBTipoLogradouro/GTBTipoLogradouroSaveData"; +import { GTBTipoLogradouroInterface } from "../../_interfaces/GTBTipoLogradouroInterface"; + +export default async function GTBTipoLogradouroSaveService(data: GTBTipoLogradouroInterface) { + + const response = await GTBTipoLogradouroSaveData(data); + + console.log('GTBTipoLogradouroSaveData', response) + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts new file mode 100644 index 0000000..f70eea2 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts @@ -0,0 +1,10 @@ +import TCensecDeleteData from "../../_data/TCensec/TCensecDeleteData"; +import TCensecInterface from "../../_interfaces/TCensecInterface"; + +export default async function TCensecDeleteService(data: TCensecInterface) { + + const response = await TCensecDeleteData(data); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts new file mode 100644 index 0000000..1e37031 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts @@ -0,0 +1,9 @@ +import TCensecIndexData from "../../_data/TCensec/TCensecIndexData"; + +export default async function TCensecIndexService() { + + const response = await TCensecIndexData(); + + return response; + +} \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts new file mode 100644 index 0000000..0240cb8 --- /dev/null +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts @@ -0,0 +1,10 @@ +import TCensecSaveData from "../../_data/TCensec/TCensecSaveData"; +import TCensecInterface from "../../_interfaces/TCensecInterface"; + +export default async function TCensecSaveService(data: TCensecInterface) { + + const response = await TCensecSaveData(data); + + return response; + +} \ No newline at end of file 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..5dc31bb --- /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/(protected)/layout.tsx b/src/app/(protected)/layout.tsx index 1ab8b42..982240e 100644 --- a/src/app/(protected)/layout.tsx +++ b/src/app/(protected)/layout.tsx @@ -49,7 +49,7 @@ export default function RootLayout({ -
+
( + ({ text, textLoading, loading = false, className, disabled, ...props }, ref) => { + return ( + + ); + } +); + +LoadingButton.displayName = "LoadingButton"; + +export default LoadingButton; \ No newline at end of file diff --git a/src/app/_components/loadingButton/LoadingButtonProps.ts b/src/app/_components/loadingButton/LoadingButtonProps.ts new file mode 100644 index 0000000..195f683 --- /dev/null +++ b/src/app/_components/loadingButton/LoadingButtonProps.ts @@ -0,0 +1,7 @@ +import { Button } from "@/components/ui/button"; + +export default interface LoadingButtonProps extends React.ComponentProps { + text: string; + textLoading: string; + loading?: boolean; +} \ 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}

- diff --git a/src/app/_response/response.tsx b/src/app/_response/response.tsx index 033c585..94c0d0a 100644 --- a/src/app/_response/response.tsx +++ b/src/app/_response/response.tsx @@ -19,6 +19,7 @@ export default function Response() { useEffect(() => { switch (Number(response?.status)) { + case 201: toast.success(response.message); break; @@ -29,6 +30,12 @@ export default function Response() { }); break; + case 600: + toast.error(response.error, { + description: response.message + }); + break; + default: if (response.status !== 0 && response.status !== 200 && response.status !== 201) { toast.warning(JSON.stringify(response)); diff --git a/src/components/MainEditor.tsx b/src/components/MainEditor.tsx new file mode 100644 index 0000000..ab19f59 --- /dev/null +++ b/src/components/MainEditor.tsx @@ -0,0 +1,132 @@ +import React from 'react'; +import { Editor } from '@tinymce/tinymce-react'; + +// 1. Define as propriedades que nosso componente vai receber +interface MainEditorProps { + initialValue: string; + onEditorChange: (content: string) => void; + margins: { + top: string; + bottom: string; + left: string; + right: string; + }; + size: { + width: number; + height: number; + } +} + +const MainEditor: React.FC = ({ initialValue, onEditorChange, margins, size }) => { + + + return ( +
+ { + const customTemplates = [ + { + title: 'Qualificação das Partes (Casamento)', + description: 'Insere o bloco de qualificação para contraentes.', + content: `

QUALIFICAÇÃO DOS CONTRAENTES: Ele, brasileiro, solteiro, maior, [Profissão], portador da CI nº [RG], inscrito no CPF sob o nº [CPF], residente e domiciliado em [Endereço]. Ela, brasileira, solteira, maior, [Profissão], portadora da CI nº [RG], inscrita no CPF sob o nº [CPF], residente e domiciliada em [Endereço].


` + }, + { + title: 'Cláusula de Regime de Bens', + description: 'Cláusula padrão de Comunhão Parcial de Bens.', + content: '

O regime de bens adotado é o da Comunhão Parcial de Bens, nos termos dos artigos 1.658 e seguintes do Código Civil brasileiro.


' + }, + { + title: 'Cláusula de Encerramento (Selo)', + description: 'Texto final com espaço para o selo digital.', + content: '

O referido é verdade e dou fé. Emitida nesta data. Selo Digital de Fiscalização: [Número do Selo]

' + } + ]; + editor.ui.registry.addMenuButton('customTemplates', { + text: 'Modelos', // O texto que aparecerá no botão + fetch: (callback: any) => { + const items = customTemplates.map(template => ({ + type: 'menuitem', + text: template.title, + onAction: () => { + // 3. Ação que acontece ao clicar no item do menu: insere o conteúdo + editor.insertContent(template.content); + } + })); + callback(items); + } + }); + }, + quickbars_selection_toolbar: 'bold italic underline | fontfamily | fontsize | quicklink blockquote | quicklink', + quickbars_insert_toolbar: 'bold italic underline fontfamily fontsize quicklink blockquote quicklink quickimage quicktable hr', + quickbars_image_toolbar: 'alignleft aligncenter alignright | rotateleft rotateright | imageoptions', + fontsize_formats: '4pt 5pt 6pt 7pt 8pt 9pt 10pt 12pt 14pt 16pt 18pt 20pt 22pt 24pt 26pt 28pt 30pt 32pt 34pt 36pt', + font_family_formats: ` Times New Roman=Times New Roman, Times, serif; Arial=Arial, Helvetica, sans-serif; Calibri=Calibri, sans-serif; Courier New=Courier New, Courier, monospace; Georgia=Georgia, serif; Verdana=Verdana, Geneva, sans-serif;`, + fullscreen_native: true, + content_style: ` + body { + font-family: 'Times New Roman', Times, serif; + font-size: 12pt; + background: #fff; + margin: ${margins.top}cm ${margins.right}cm ${margins.bottom}cm ${margins.left}cm; + } + .mce-pagebreak { /* Estiliza a linha da quebra de página no editor */ + border-top: 1px dashed #bbb; + width: 100%; + margin-top: 15px; + cursor: default; + } + + .borda-superior { + border-top: 1px solid #000; + padding-top: 5px; + margin-top: 5px; + } + .borda-inferior { + border-bottom: 1px solid #000; + padding-bottom: 5px; + margin-bottom: 5px; + } + ` + }} + /> +
+ ); +}; + +export default MainEditor; \ No newline at end of file diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx index ed96420..aa0e027 100644 --- a/src/components/app-sidebar.tsx +++ b/src/components/app-sidebar.tsx @@ -18,22 +18,21 @@ import { import { NavMain } from "@/components/nav-main" import { NavProjects } from "@/components/nav-projects" import { NavUser } from "@/components/nav-user" -import { TeamSwitcher } from "@/components/team-switcher" import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, SidebarRail, } from "@/components/ui/sidebar" +import useGUsuarioGetJWTHook from "@/hooks/auth/useGUsuarioGetJWTHook" + // This is sample data. const data = { - user: { - name: "shadcn", - email: "m@example.com", - avatar: "/avatars/shadcn.jpg", - }, teams: [ { name: "Acme Inc", @@ -93,9 +92,53 @@ const data = { title: "Profissões", url: "/cadastros/profissoes/", }, + { + title: "Regimes/Bens", + url: "/cadastros/regime-bens/", + }, + { + title: "Tipos de Logradouros", + url: "/cadastros/tipo-logradouro" + }, + { + title: "Bairro", + url: "/cadastros/bairro" + }, + { + title: "Estado Civil", + url: "/cadastros/estado-civil" + }, + { + title: "Tipo de Medida", + url: "/cadastros/medida-tipo" + }, + { + title: "Natureza Litígio (Censec)", + url: "/cadastros/censec-natureza-litigio" + }, + { + title: "Pessoas", + url: "/cadastros/pessoas/complementos/", + }, + { + title: "Regimes/Bens", + url: "/cadastros/regime-bens/", + }, { title: "Regimes/Comunhão", url: "/cadastros/regime-comunhao/", + }, + { + title: "Minuta", + url: "/cadastros/minuta/", + }, + { + title: "Regimes/Comunhão", + url: "/cadastros/regime-comunhao/", + }, + { + title: "Censec/Centrais", + url: "/cadastros/censec/", } ], }, @@ -166,19 +209,75 @@ const data = { } export function AppSidebar({ ...props }: React.ComponentProps) { + + const { userAuthenticated } = useGUsuarioGetJWTHook(); + return ( + + - + + + + + + + + + +
+ + + +
+ +
+ + + + Orius Tecnologia + + + + + + 25.9.1 + + + +
+ +
+ +
+ +
+ +
+
+ + + + - + + {userAuthenticated?.data ? ( + + ) : ( + "Carregando..." + )} + + +
+ ) } diff --git a/src/components/login-form.tsx b/src/components/login-form.tsx index 602127c..c1b7aeb 100644 --- a/src/components/login-form.tsx +++ b/src/components/login-form.tsx @@ -2,30 +2,29 @@ import Image from "next/image"; import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { GUsuarioSchema } from "@/app/(protected)/(administrativo)/_schemas/GUsuarioSchema" import z from "zod" import { zodResolver } from "@hookform/resolvers/zod" -import GUsuarioLoginService from "@/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogin" +import { GUsuarioLoginService } from "@/app/(protected)/(administrativo)/_services/g_usuario/GUsuarioLogin" import { useForm } from "react-hook-form" +import { useState } from "react" import { Form, FormControl, - FormDescription, FormField, FormItem, FormLabel, FormMessage } from "./ui/form" +import LoadingButton from "@/app/_components/loadingButton/LoadingButton"; +import { Button } from "./ui/button"; type FormValues = z.infer -export function LoginForm({ - className, - ...props -}: React.ComponentProps<"div">) { +export function LoginForm({ className, ...props }: React.ComponentProps<"div">) { + const [loading, setLoading] = useState(false); const form = useForm({ resolver: zodResolver(GUsuarioSchema), @@ -35,134 +34,74 @@ export function LoginForm({ }, }); - async function onSubmit(values: FormValues) { - const data = await GUsuarioLoginService(values); + // onSubmit agora recebe o evento do form através do handleSubmit + const onSubmit = async (values: FormValues) => { + setLoading(true); + await GUsuarioLoginService(values); + setLoading(false); } return ( -
- - -
+ - - -
- -
- -

- - Bem vindo de volta! - -

- -

- - Entre na sua conta Orius Tecnologia. - -

- -
- -
- - ( - - - - Login - - - - - - - - )} - /> - -
- -
- - ( - - - - Senha - - - - - - - - )} - /> - -
- +
+

Bem vindo de volta!

+

+ Entre na sua conta Orius Tecnologia. +

- + ( + + Login + + + + + + )} + /> -
+ ( + + Senha + + + + + + )} + /> + {/* Botão de loading */} + + +
- Ou entre em contato - -
- - -
-
@@ -174,18 +113,12 @@ export function LoginForm({ className="object-contain dark:brightness-[0.2] dark:grayscale" />
- - -
- - Ao clicar você concordar com Nossos termos de serviços{" "}e Políticas de Privacidade. - +
+ Ao clicar você concorda com Nossos termos de serviços e Políticas de Privacidade.
-
- ) } diff --git a/src/components/nav-main.tsx b/src/components/nav-main.tsx index c7d45b5..a622c89 100644 --- a/src/components/nav-main.tsx +++ b/src/components/nav-main.tsx @@ -34,41 +34,85 @@ export function NavMain({ }[] }) { return ( + - Platform + + + + Platform + + + + {items.map((item) => ( + + + + + {item.icon && } - {item.title} + + + + {item.title} + + + + + + + + {item.items?.map((subItem) => ( + + + - {subItem.title} + + + + {subItem.title} + + + + + + ))} + + + + + ))} + + + ) } diff --git a/src/components/nav-user.tsx b/src/components/nav-user.tsx index 3d6d9f8..6b16114 100644 --- a/src/components/nav-user.tsx +++ b/src/components/nav-user.tsx @@ -1,14 +1,10 @@ "use client" import { - BadgeCheck, - Bell, ChevronsUpDown, - CreditCard, LogOut, Sparkles, } from "lucide-react" - import { Avatar, AvatarFallback, @@ -30,85 +26,192 @@ import { useSidebar, } from "@/components/ui/sidebar" +import GUsuarioAuthenticatedInterface from "@/interfaces/GUsuarioAuthenticatedInterface" +import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog" +import { useGUsuarioLogoutHook } from "@/app/(protected)/(administrativo)/_hooks/g_usuario/useGUsuarioLogoutHook" +import { use, useCallback, useState } from "react" + export function NavUser({ - user, + + user + }: { - user: { - name: string - email: string - avatar: string - } + + user: GUsuarioAuthenticatedInterface + }) { - const { isMobile } = useSidebar() + + // Hook para encerrar sessão + const { logoutUsuario } = useGUsuarioLogoutHook(); + + // Controle de exibição do formulário de confirmação + const [isConfirmOpen, setIsConfirmOpen] = useState(false); + + const { isMobile } = useSidebar(); + + // Manipulação de formulário de confirmação + const handleConfirmOpen = useCallback(async () => { + + setIsConfirmOpen(true); + + }, []); + + const handleLogoutConfirm = useCallback(async () => { + + logoutUsuario(); + + }, []); + + const handleLogoutCancel = useCallback(async () => { + + setIsConfirmOpen(false); + + }, []) + + if (!user) { + + return 'Carregando...'; + + } return ( - - - - - - - - CN - -
- {user.name} - {user.email} -
- -
-
- - -
+ + <> + + + + + + + + + + - - CN + + + + + + {user.sigla} + + + +
- {user.name} - {user.email} + + + + {user.nome} + + + + + + {user.email} + + +
-
-
- - - - - Upgrade to Pro + + + + + + + + + + + +
+ + + + + + + + {user.sigla} + + + + + +
+ + + + {user.nome} + + + + + + {user.email} + + + +
+ +
+ +
+ + + + + + + + + + Configurações + + + + + + + + handleConfirmOpen()}> + + + + Log out + -
- - - - - Account - - - - Billing - - - - Notifications - - - - - - Log out - -
-
-
-
+ + + + + + + + + + {/* Modal de confirmação */} + handleLogoutConfirm()} + onCancel={() => handleLogoutCancel()} + /> + + + ) } diff --git a/src/hooks/auth/useGUsuarioGetJWTHook.ts b/src/hooks/auth/useGUsuarioGetJWTHook.ts new file mode 100644 index 0000000..4d60499 --- /dev/null +++ b/src/hooks/auth/useGUsuarioGetJWTHook.ts @@ -0,0 +1,71 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { jwtDecode } from "jwt-decode"; +import CookiesGet from "../../actions/cookies/CookiesGet"; +import GetSigla from "@/actions/text/GetSigla"; +import GUsuarioAuthenticatedInterface from "@/interfaces/GUsuarioAuthenticatedInterface"; + +interface JwtPayload { + id: string; + iat: number; + exp: number; + data?: GUsuarioAuthenticatedInterface; +} + +export default function useGUsuarioGetJWTHook() { + + const [userAuthenticated, setUserAuthenticated] = useState(null); + + useEffect(() => { + + async function fetchToken() { + + try { + + // Executa a serve action para obtem o token, salvo em cookies + const token = await CookiesGet("access_token"); + + // Verifica se o token esta preenchido + if (!token) { + + console.error("Não foi localizado dados dentro do token"); + + // Encerra a aplicação + return; + } + + // Decodifica os dados do JWT + const decoded = jwtDecode(token); + + // Se existir campo data e for string, corrige aspas simples + if (decoded.data && typeof decoded.data === "string") { + + // Decodifica os dados enviado via json + decoded.data = JSON.parse(decoded.data) + + if (decoded.data) { + + // Gera Sigla para o nome + decoded.data.sigla = GetSigla(decoded.data.nome || ""); + }; + + } + + // Armazena os dados decodificados + setUserAuthenticated(decoded); + + } catch (error) { + + console.error("Erro ao buscar token", error); + + } + } + + // Busca o TOken + fetchToken(); + + }, []); + + return { userAuthenticated }; +} diff --git a/src/interfaces/GUsuarioAuthenticatedInterface.ts b/src/interfaces/GUsuarioAuthenticatedInterface.ts new file mode 100644 index 0000000..346c06d --- /dev/null +++ b/src/interfaces/GUsuarioAuthenticatedInterface.ts @@ -0,0 +1,7 @@ +export default interface GUsuarioAuthenticatedInterface { + usuario_id?: number; + login?: string; + nome?: string; + email?: string; + sigla?: string; +} \ No newline at end of file