diff --git a/src/app/(protected)/administrativo/(user)/usuarios/page.tsx b/src/app/(protected)/administrativo/(user)/usuarios/page.tsx index ee14ae5..e1ebd5c 100644 --- a/src/app/(protected)/administrativo/(user)/usuarios/page.tsx +++ b/src/app/(protected)/administrativo/(user)/usuarios/page.tsx @@ -33,7 +33,7 @@ const initialUser: UserInterface = { position: 'string', status: SituacoesEnum.ATIVO, user_id_create: null, - user_id_update: null + user_id_update: null, } export default function UsersPage() { @@ -70,12 +70,16 @@ export default function UsersPage() { // 4. Função para salvar (criar ou editar) const handleSave = useCallback( async (formData: UserInterface) => { - console.log("form data", formData) + setButtonIsLoading(true); + await saveUser(formData); + setButtonIsLoading(false); + setIsFormOpen(false); - await fetchUsuarios(); // Atualiza a lista de usuários + + fetchUsuarios(); // Atualiza a lista de usuários }, [saveUser, fetchUsuarios, handleCloseForm], ); @@ -104,7 +108,7 @@ export default function UsersPage() { }, []); // 7. Renderização condicional de loading - if (!usuarios) { + if (usuarios?.length == 0) { return ; } diff --git a/src/packages/administrativo/components/User/UserForm.tsx b/src/packages/administrativo/components/User/UserForm.tsx index 1eba3ef..0f650a9 100644 --- a/src/packages/administrativo/components/User/UserForm.tsx +++ b/src/packages/administrativo/components/User/UserForm.tsx @@ -52,15 +52,26 @@ export default function UserForm({ isOpen, data, onClose, onSave, buttonIsLoadin position: 'string', status: SituacoesEnum.ATIVO, user_id_create: null, - user_id_update: null + user_id_update: null, + date_register: new Date().toISOString(), + date_update: null }, }); // Atualiza o formulário quando recebe dados para edição useEffect(() => { if (data) form.reset(data); + console.log("form", form.getValues()) }, [data, form]); + function onError(error: any) { + console.log("error", error) + } + + function submit(response: any) { + console.log("submit", response) + } + return (
- + {/* Nome */} )} /> + + {/* Cargo */} + ( + + Cargo + + + + + + )} + /> + {/* Status */} {/* Campo oculto para o ID */} - + + diff --git a/src/packages/administrativo/data/User/UserSaveData.ts b/src/packages/administrativo/data/User/UserSaveData.ts index 84e1e1e..1f69173 100644 --- a/src/packages/administrativo/data/User/UserSaveData.ts +++ b/src/packages/administrativo/data/User/UserSaveData.ts @@ -5,18 +5,17 @@ import API from '@/shared/services/api/Api'; import { withClientErrorHandler } from '@/withClientErrorHandler/withClientErrorHandler'; import { UserInterface } from '../../interfaces/User/UserInterface'; -async function executeUserSaveData(data: UserInterface) { +async function executeUserSaveData(form: UserInterface) { + const isUpdate = Boolean(form.user_id) const api = new API(); const response = await api.send({ - 'method': data.user_id ? Methods.PUT : Methods.POST, - 'endpoint': `administrativo/user/${data.user_id ? data.user_id : ''}`, - 'body': data + 'method': isUpdate ? Methods.PUT : Methods.POST, + 'endpoint': `administrativo/user/${form.user_id || ''}`, + 'body': form }); - console.log(response.detail) - return response; } diff --git a/src/packages/administrativo/hooks/User/useUserIndexHook.ts b/src/packages/administrativo/hooks/User/useUserIndexHook.ts index 0fe9a24..36c7c62 100644 --- a/src/packages/administrativo/hooks/User/useUserIndexHook.ts +++ b/src/packages/administrativo/hooks/User/useUserIndexHook.ts @@ -8,7 +8,7 @@ import { useResponse } from '@/shared/components/response/ResponseContext'; export const useUserIndexHook = () => { const { setResponse } = useResponse(); - const [usuarios, setUsuarios] = useState(null); + const [usuarios, setUsuarios] = useState([]); const fetchUsuarios = async () => { const response = await UserIndexService(); diff --git a/src/packages/administrativo/hooks/User/useUserSaveHook.ts b/src/packages/administrativo/hooks/User/useUserSaveHook.ts index 2de2a22..e5b0b22 100644 --- a/src/packages/administrativo/hooks/User/useUserSaveHook.ts +++ b/src/packages/administrativo/hooks/User/useUserSaveHook.ts @@ -8,7 +8,7 @@ import { useResponse } from '@/shared/components/response/ResponseContext'; export const useUserSaveHook = () => { const { setResponse } = useResponse(); - const [User, setUser] = useState(); + const [usuarios, setUser] = useState(); const saveUser = async (User: any) => { const response = await UserSaveService(User); @@ -18,5 +18,5 @@ export const useUserSaveHook = () => { setResponse(response); }; - return { User, saveUser }; + return { usuarios, saveUser }; }; diff --git a/src/packages/administrativo/interfaces/User/UserInterface.ts b/src/packages/administrativo/interfaces/User/UserInterface.ts index 11b22ab..f4ff542 100644 --- a/src/packages/administrativo/interfaces/User/UserInterface.ts +++ b/src/packages/administrativo/interfaces/User/UserInterface.ts @@ -8,8 +8,8 @@ export interface UserInterface { position: string; team: string; status: SituacoesEnum; // 'A' ou 'I' - date_register?: Date; - date_update?: Date | null; + date_register?: string; + date_update?: string | null; user_id_create: number | null, user_id_update: number | null } diff --git a/src/packages/administrativo/schemas/User/UserSchema.ts b/src/packages/administrativo/schemas/User/UserSchema.ts index df85e24..c36cf13 100644 --- a/src/packages/administrativo/schemas/User/UserSchema.ts +++ b/src/packages/administrativo/schemas/User/UserSchema.ts @@ -6,11 +6,11 @@ export const UserSchema = z.object({ name: z.string().min(3, { message: "O nome deve ter no mínimo 3 caracteres." }), email: z.email({ message: "Por favor, insira um email válido." }), password: z.string().min(6, { message: "A senha deve ter pelo menos 6 caracteres." }), - position: z.string({message: "Por favor insira position"}), + position: z.string().nullable().optional(), team: z.string().min(1, { message: "A equipe é obrigatória." }), status: z.enum(SituacoesEnum), // 'A' ou 'I' - date_register: z.date().optional(), - date_update: z.date().nullable().optional(), + date_register: z.string().optional(), + date_update: z.string().nullable().optional(), user_id_create: z.number().nullable(), user_id_update: z.number().nullable(), }); diff --git a/src/shared/services/api/Api.ts b/src/shared/services/api/Api.ts index 413244d..ef21d84 100644 --- a/src/shared/services/api/Api.ts +++ b/src/shared/services/api/Api.ts @@ -21,6 +21,8 @@ export default class API { // Define os dados para envio const _data = data; + + try { // Verifica se todos os dados estão corretos this.ApiSchema.url = this.config.api.url;