diff --git a/src/app/(protected)/(administrativo)/administrativo/financeiro/periodos/page.tsx b/src/app/(protected)/(administrativo)/administrativo/financeiro/periodos/page.tsx new file mode 100644 index 0000000..3efdeff --- /dev/null +++ b/src/app/(protected)/(administrativo)/administrativo/financeiro/periodos/page.tsx @@ -0,0 +1,9 @@ +import GEmolumentoPeriodoIndex from "@/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoIndex"; + +export default function GEmolumentoPeriodoPage() { + + return ( + + ); + +} \ No newline at end of file diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx index 58ca0e3..82ee6ed 100644 --- a/src/components/app-sidebar.tsx +++ b/src/components/app-sidebar.tsx @@ -160,6 +160,10 @@ const data = { { title: "Cartório", url: "/administrativo/cartorio", + }, + { + title: "Financeiro/Periodo", + url: "/administrativo/financeiro/periodos", } ], diff --git a/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoColumns.tsx b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoColumns.tsx new file mode 100644 index 0000000..c3ac402 --- /dev/null +++ b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoColumns.tsx @@ -0,0 +1,86 @@ +import { ColumnDef } from '@tanstack/react-table'; +import { EllipsisIcon, PencilIcon, Trash2Icon } from 'lucide-react'; + +import { Button } from '@/components/ui/button'; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu'; +import GetCapitalize from '@/shared/actions/text/GetCapitalize'; +import { SortableHeader } from '@/shared/components/dataTable/SortableHeader'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; +import { FormatDateTime } from '@/shared/actions/dateTime/FormatDateTime'; + +export default function GEmolumentoPeriodoColumns( + onEdit: (item: GEmolumentoPeriodoInterface, isEditingFormStatus: boolean) => void, + onDelete: (item: GEmolumentoPeriodoInterface, isEditingFormStatus: boolean) => void, +): ColumnDef[] { + return [ + // ID + { + accessorKey: 'emolumento_periodo_id', + header: ({ column }) => SortableHeader('ID', column), + cell: ({ row }) => Number(row.getValue('emolumento_periodo_id')), + enableSorting: true, + }, + + // Descrição + { + accessorKey: 'descricao', + header: ({ column }) => SortableHeader('Descrição', column), + cell: ({ row }) => GetCapitalize(String(row.getValue('descricao') || '')), + }, + + // Descrição + { + accessorKey: 'data_inicial', + header: ({ column }) => SortableHeader('Data Inicial', column), + cell: ({ row }) => FormatDateTime(String(row.getValue('data_inicial') || '')), + }, + + // Ações + { + id: 'actions', + header: 'Ações', + cell: ({ row }) => { + const natureza = row.original; + + return ( + + + + + + + + onEdit(natureza, true)}> + + Editar + + + + + onDelete(natureza, true)} + > + + Remover + + + + + ); + }, + enableSorting: false, + enableHiding: false, + }, + ]; +} diff --git a/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoForm.tsx b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoForm.tsx new file mode 100644 index 0000000..351b4e1 --- /dev/null +++ b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoForm.tsx @@ -0,0 +1,110 @@ +'use client'; + +import React, { useEffect } from 'react'; + +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 { ResetFormIfData } from '@/shared/actions/form/ResetFormIfData'; +import LoadingButton from '@/shared/components/loadingButton/LoadingButton'; + +import { useGEmolumentoPeriodoFormHook } from '../../hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoFormHook'; +import { GEmolumentoPeriodoFormInterface } from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoFormInterface'; + +/** + * Formulário de cadastro/edição de Natureza + * Baseado nos campos da tabela G_NATUREZA + */ +export default function GEmolumentoPeriodoForm({ + isOpen, + data, + onClose, + onSave, + buttonIsLoading, +}: GEmolumentoPeriodoFormInterface) { + const form = useGEmolumentoPeriodoFormHook({}); + + // Atualiza o formulário quando recebe dados para edição + useEffect(() => { + ResetFormIfData(form, data); + }, [data, form]); + + function onError(error: any) { + console.log('Erro no formulário:', error); + } + + return ( + { + if (!open) onClose(null, false); + }} + > + + + Formulário de Gramática + + Formulário de Gramática + + + {/* Formulário principal */} +
+ + {/* GRID MOBILE FIRST */} +
+ {/* Palavra */} +
+ ( + + Palavra + + + + + + )} + /> +
+
+ {/* Rodapé */} + + + + + + +
+ +
+
+ ); +} diff --git a/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoIndex.tsx b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoIndex.tsx new file mode 100644 index 0000000..66f0c28 --- /dev/null +++ b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoIndex.tsx @@ -0,0 +1,161 @@ +'use client'; + +import { useEffect, useState, useCallback } from 'react'; + + +import { useGEmolumentoPeriodoDeleteHook } from '@/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoDeleteHook'; +import { useGEmolumentoPeriodoIndexHook } from '@/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoIndexHook'; +import { useGEmolumentoPeriodoSaveHook } from '@/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoSaveHook'; +import GEmolumentoPeriodoInterface from '@/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; +import ConfirmDialog from '@/shared/components/confirmDialog/ConfirmDialog'; +import { useConfirmDialog } from '@/shared/components/confirmDialog/useConfirmDialog'; +import Loading from '@/shared/components/loading/loading'; +import Header from '@/shared/components/structure/Header'; + +import GEmolumentoPeriodoForm from './GEmolumentoPeriodoForm'; +import GEmolumentoPeriodoTable from './GEmolumentoPeriodoTable'; + +export default function GEmolumentoPeriodoIndex() { + + // Controle de estado do botão + const [buttonIsLoading, setButtonIsLoading] = useState(false); + + // Hooks para leitura e salvamento + const { gEmolumentoPeriodo, indexGEmolumentoPeriodo } = useGEmolumentoPeriodoIndexHook(); + const { saveGEmolumentoPeriodo } = useGEmolumentoPeriodoSaveHook(); + const { deleteGEmolumentoPeriodo } = useGEmolumentoPeriodoDeleteHook(); + + // Estados + const [selectedData, setSelectedData] = 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, handleCancel } = useConfirmDialog(); + + /** + * Abre o formulário no modo de edição ou criação + */ + const handleOpenForm = useCallback((data: GEmolumentoPeriodoInterface | null) => { + setSelectedData(data); + setIsFormOpen(true); + }, []); + + /** + * Fecha o formulário e limpa o andamento selecionado + */ + const handleCloseForm = useCallback(() => { + setSelectedData(null); + setIsFormOpen(false); + }, []); + + /** + * Salva os dados do formulário + */ + const handleSave = useCallback( + async (formData: GEmolumentoPeriodoInterface) => { + // Coloca o botão em estado de loading + setButtonIsLoading(true); + + // Aguarda salvar o registro + await saveGEmolumentoPeriodo(formData); + + // Remove o botão em estado de loading + setButtonIsLoading(false); + + // Atualiza a lista de dados + indexGEmolumentoPeriodo(); + }, + [saveGEmolumentoPeriodo, indexGEmolumentoPeriodo, handleCloseForm], + ); + + /** + * Quando o usuário clica em "remover" na tabela + */ + const handleConfirmDelete = useCallback( + (item: GEmolumentoPeriodoInterface) => { + // 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 deleteGEmolumentoPeriodo(itemToDelete); + + // Atualiza a lista + await indexGEmolumentoPeriodo(); + + // Limpa o item selecionado + setItemToDelete(null); + + // Fecha o modal + handleCancel(); + }, [itemToDelete, indexGEmolumentoPeriodo, handleCancel]); + + /** + * Busca inicial dos dados + */ + useEffect(() => { + indexGEmolumentoPeriodo(); + }, []); + + /** + * Tela de loading enquanto carrega os dados + */ + if (gEmolumentoPeriodo?.length == 0) { + return ; + } + + return ( +
+ {/* Cabeçalho */} +
{ + handleOpenForm(null); + }} + /> + {/* Tabela de andamentos */} + + {/* Modal de confirmação */} + {isConfirmOpen && ( + + )} + {/* Formulário de criação/edição */} + {isFormOpen && ( + + )} +
+ ); +} diff --git a/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoTable.tsx b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoTable.tsx new file mode 100644 index 0000000..b00e957 --- /dev/null +++ b/src/packages/administrativo/components/GEmolumentoPeriodo/GEmolumentoPeriodoTable.tsx @@ -0,0 +1,23 @@ +'use client'; + +import { DataTable } from '@/shared/components/dataTable/DataTable'; + +import GEmolumentoPeriodoColumns from './GEmolumentoPeriodoColumns'; +import GEmolumentoPeriodoTableInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoTableInterface'; + +/** + * Componente principal da tabela de Naturezas + */ +export default function GEmolumentoPeriodoTable({ data, onEdit, onDelete }: GEmolumentoPeriodoTableInterface) { + const columns = GEmolumentoPeriodoColumns(onEdit, onDelete); + return ( +
+ +
+ ); +} diff --git a/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteData.ts b/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteData.ts new file mode 100644 index 0000000..59ebdb2 --- /dev/null +++ b/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteData.ts @@ -0,0 +1,17 @@ +import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; +import API from '@/shared/services/api/Api'; +import { Methods } from '@/shared/services/api/enums/ApiMethodEnum'; +import ApiResponseInterface from '@/shared/services/api/interfaces/ApiResponseInterface'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; + +async function executeGEmolumentoPeriodoDeleteData(data: GEmolumentoPeriodoInterface): Promise { + const api = new API(); + + return api.send({ + method: Methods.DELETE, + endpoint: `administrativo/g_emolumento_periodo/${data.emolumento_periodo_id}`, + }); +} + +export const GEmolumentoPeriodoDeleteData = withClientErrorHandler(executeGEmolumentoPeriodoDeleteData); diff --git a/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoIndexData.ts b/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoIndexData.ts new file mode 100644 index 0000000..caa1669 --- /dev/null +++ b/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoIndexData.ts @@ -0,0 +1,15 @@ +import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; +import API from '@/shared/services/api/Api'; +import { Methods } from '@/shared/services/api/enums/ApiMethodEnum'; +import ApiResponseInterface from '@/shared/services/api/interfaces/ApiResponseInterface'; + +async function executeGEmolumentoPeriodoIndexData(): Promise { + const api = new API(); + + return api.send({ + method: Methods.GET, + endpoint: `administrativo/g_emolumento_periodo/`, + }); +} + +export const GEmolumentoPeriodoIndexData = withClientErrorHandler(executeGEmolumentoPeriodoIndexData); diff --git a/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoSaveData.ts b/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoSaveData.ts new file mode 100644 index 0000000..e594eca --- /dev/null +++ b/src/packages/administrativo/data/GEmolumentoPeriodo/GEmolumentoPeriodoSaveData.ts @@ -0,0 +1,23 @@ +import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; +import API from '@/shared/services/api/Api'; +import { Methods } from '@/shared/services/api/enums/ApiMethodEnum'; +import ApiResponseInterface from '@/shared/services/api/interfaces/ApiResponseInterface'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; + +async function executeGEmolumentoPeriodoSaveData(data: GEmolumentoPeriodoInterface): Promise { + // Verifica se existe ID para decidir se é atualização (PUT) ou criação (POST) + const isUpdate = Boolean(data.emolumento_periodo_id); + + // Instancia o cliente da API + const api = new API(); + + // Executa a requisição para a API com o método apropriado e envia os dados no corpo + return api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, // PUT se atualizar, POST se criar + endpoint: `administrativo/g_emolumento_periodo/${data.emolumento_periodo_id || ''}`, // endpoint dinâmico + body: data, // payload enviado para a API + }); +} + +export const GEmolumentoPeriodoSaveData = withClientErrorHandler(executeGEmolumentoPeriodoSaveData); diff --git a/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoDeleteHook.ts b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoDeleteHook.ts new file mode 100644 index 0000000..0fdf581 --- /dev/null +++ b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoDeleteHook.ts @@ -0,0 +1,21 @@ +import { useState } from 'react'; + +import { useResponse } from '@/shared/components/response/ResponseContext'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; +import { GEmolumentoPeriodoDeleteService } from '../../services/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteService'; + +export const useGEmolumentoPeriodoDeleteHook = () => { + const { setResponse } = useResponse(); + + const [gGramatica, setGEmolumentoPeriodo] = useState(); + + const deleteGEmolumentoPeriodo = async (data: GEmolumentoPeriodoInterface) => { + const response = await GEmolumentoPeriodoDeleteService(data); + + setGEmolumentoPeriodo(data); + setResponse(response); + }; + + return { gGramatica, deleteGEmolumentoPeriodo }; +}; diff --git a/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoFormHook.ts b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoFormHook.ts new file mode 100644 index 0000000..c661fbb --- /dev/null +++ b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoFormHook.ts @@ -0,0 +1,14 @@ +import { zodResolver } from '@hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; + +import { GEmolumentoPeriodoFormValues, GEmolumentoPeriodoSchema } from '../../schemas/GEmolumentoPeriodo/GEmolumentoPeriodoSchema'; + +export function useGEmolumentoPeriodoFormHook(defaults?: Partial) { + return useForm({ + resolver: zodResolver(GEmolumentoPeriodoSchema), + defaultValues: { + emolumento_periodo_id: 0, + ...defaults, + }, + }); +} diff --git a/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoIndexHook.ts b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoIndexHook.ts new file mode 100644 index 0000000..6f4ab92 --- /dev/null +++ b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoIndexHook.ts @@ -0,0 +1,27 @@ +'use client'; + +import { useState } from 'react'; + +import { useResponse } from '@/shared/components/response/ResponseContext'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; +import { GEmolumentoPeriodoIndexService } from '../../services/GEmolumentoPeriodo/GEmolumentoPeriodoIndexService'; + +export const useGEmolumentoPeriodoIndexHook = () => { + const { setResponse } = useResponse(); + + const [gEmolumentoPeriodo, setGEmolumentoPeriodo] = useState([]); + + const indexGEmolumentoPeriodo = async () => { + const response = await GEmolumentoPeriodoIndexService(); + // Armazena os dados consultados + setGEmolumentoPeriodo(response.data); + // Define a resposta (toast, modal, feedback, etc.) + setResponse(response); + }; + + return { + gEmolumentoPeriodo, + indexGEmolumentoPeriodo, + }; +}; diff --git a/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoSaveHook.ts b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoSaveHook.ts new file mode 100644 index 0000000..7fb4690 --- /dev/null +++ b/src/packages/administrativo/hooks/GEmolumentoPeriodo/useGEmolumentoPeriodoSaveHook.ts @@ -0,0 +1,35 @@ +'use client'; + +import { useState } from 'react'; + +import { useResponse } from '@/shared/components/response/ResponseContext'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; +import { GEmolumentoPeriodoSaveService } from '../../services/GEmolumentoPeriodo/GEmolumentoPeriodoSaveService'; + +export const useGEmolumentoPeriodoSaveHook = () => { + const { setResponse } = useResponse(); + + const [gGramatica, setGEmolumentoPeriodo] = useState(null); + + // controla se o formulário está aberto ou fechado + const [isOpen, setIsOpen] = useState(false); + + const saveGEmolumentoPeriodo = async (data: GEmolumentoPeriodoInterface) => { + const response = await GEmolumentoPeriodoSaveService(data); + + // Armazena os dados da resposta + setGEmolumentoPeriodo(response.data); + + // Define os dados da resposta (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 { gGramatica, saveGEmolumentoPeriodo, isOpen, setIsOpen }; +}; diff --git a/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoFormInterface.ts b/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoFormInterface.ts new file mode 100644 index 0000000..b0f5128 --- /dev/null +++ b/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoFormInterface.ts @@ -0,0 +1,9 @@ +import { GEmolumentoPeriodoFormValues } from '../../schemas/GEmolumentoPeriodo/GEmolumentoPeriodoSchema'; + +export interface GEmolumentoPeriodoFormInterface { + isOpen: boolean; + data: GEmolumentoPeriodoFormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: GEmolumentoPeriodoFormValues) => void; + buttonIsLoading: boolean; +} diff --git a/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface.ts b/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface.ts new file mode 100644 index 0000000..687cc11 --- /dev/null +++ b/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface.ts @@ -0,0 +1,6 @@ +export default interface GEmolumentoPeriodoInterface { + emolumento_periodo_id?: number, + descricao?: string, + situacao?: string, + data_inicial?: string, +} \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoTableInterface.ts b/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoTableInterface.ts new file mode 100644 index 0000000..bfeecad --- /dev/null +++ b/src/packages/administrativo/interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoTableInterface.ts @@ -0,0 +1,7 @@ +import GEmolumentoPeriodoInterface from './GEmolumentoPeriodoInterface'; + +export default interface GEmolumentoPeriodoTableInterface { + data?: GEmolumentoPeriodoInterface[]; + onEdit: (item: GEmolumentoPeriodoInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: GEmolumentoPeriodoInterface, isEditingFormStatus: boolean) => void; +} diff --git a/src/packages/administrativo/schemas/GEmolumentoPeriodo/GEmolumentoPeriodoSchema.ts b/src/packages/administrativo/schemas/GEmolumentoPeriodo/GEmolumentoPeriodoSchema.ts new file mode 100644 index 0000000..425660e --- /dev/null +++ b/src/packages/administrativo/schemas/GEmolumentoPeriodo/GEmolumentoPeriodoSchema.ts @@ -0,0 +1,10 @@ +import z from "zod"; + +export const GEmolumentoPeriodoSchema = z.object({ + emolumento_periodo_id: z.number().optional(), + descricao: z.string().optional(), + situacao: z.string().optional(), + data_inicial: z.string().optional(), +}); + +export type GEmolumentoPeriodoFormValues = z.infer; \ No newline at end of file diff --git a/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteService.ts b/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteService.ts new file mode 100644 index 0000000..890f4eb --- /dev/null +++ b/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteService.ts @@ -0,0 +1,14 @@ + +import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; +import { GEmolumentoPeriodoDeleteData } from '../../data/GEmolumentoPeriodo/GEmolumentoPeriodoDeleteData'; + +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; + + +async function executeGEmolumentoPeriodoDeleteService(data: GEmolumentoPeriodoInterface) { + const response = await GEmolumentoPeriodoDeleteData(data); + + return response; +} + +export const GEmolumentoPeriodoDeleteService = withClientErrorHandler(executeGEmolumentoPeriodoDeleteService); diff --git a/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoIndexService.ts b/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoIndexService.ts new file mode 100644 index 0000000..77706be --- /dev/null +++ b/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoIndexService.ts @@ -0,0 +1,11 @@ +import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; + +import { GEmolumentoPeriodoIndexData } from '../../data/GEmolumentoPeriodo/GEmolumentoPeriodoIndexData'; + +export default async function executeGEmolumentoPeriodoIndexService() { + const response = await GEmolumentoPeriodoIndexData(); + + return response; +} + +export const GEmolumentoPeriodoIndexService = withClientErrorHandler(executeGEmolumentoPeriodoIndexService); diff --git a/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoSaveService.ts b/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoSaveService.ts new file mode 100644 index 0000000..dc84098 --- /dev/null +++ b/src/packages/administrativo/services/GEmolumentoPeriodo/GEmolumentoPeriodoSaveService.ts @@ -0,0 +1,12 @@ +import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; + +import { GEmolumentoPeriodoSaveData } from '../../data/GEmolumentoPeriodo/GEmolumentoPeriodoSaveData'; +import GEmolumentoPeriodoInterface from '../../interfaces/GEmolumentoPeriodo/GEmolumentoPeriodoInterface'; + +async function executeGEmolumentoPeriodoSaveService(data: GEmolumentoPeriodoInterface) { + const response = await GEmolumentoPeriodoSaveData(data); + + return response; +} + +export const GEmolumentoPeriodoSaveService = withClientErrorHandler(executeGEmolumentoPeriodoSaveService);