[VDU-4] feat(implementando): endpoint para buscar usuário por email

This commit is contained in:
= 2025-10-13 09:59:43 -03:00
parent a8eb911832
commit c92e903c3c
6 changed files with 120 additions and 1 deletions

View file

@ -0,0 +1,22 @@
'use client';
import { useState } from 'react';
import { UserInterface } from '../../interfaces/User/UserInterface';
import { UserReadService } from '../../services/User/UserReadService';
import { useResponse } from '@/shared/components/response/ResponseContext';
export const useGUserReadHooks = () => {
const { setResponse } = useResponse();
const [User, setUser] = useState<UserInterface>();
const fetchUser = async (User: UserInterface) => {
const response = await UserReadService(User.user_id);
setUser(response.data);
setResponse(response);
};
return { User, fetchUser };
};

View file

@ -0,0 +1,22 @@
'use client';
import { useState } from 'react';
import { UserInterface } from '../../interfaces/User/UserInterface';
import { UserSaveService } from '../../services/User/UserSaveService';
import { useResponse } from '@/shared/components/response/ResponseContext';
export const useGUserSaveHook = () => {
const { setResponse } = useResponse();
const [User, setUser] = useState<UserInterface>();
const saveUser = async (User: any) => {
const response = await UserSaveService(User);
setUser(response.data);
setResponse(response);
};
return { User, saveUser };
};

View file

@ -0,0 +1,25 @@
'use client';
import { useState } from 'react';
import { UserInterface } from '../../interfaces/User/UserInterface';
import { UserIndexByEmailService } from '../../services/User/UserIndexByEmailService';
import { useResponse } from '@/shared/components/response/ResponseContext';
export const useUserIndexByEmailHook = () => {
const { setResponse } = useResponse();
const [user, setUser] = useState<UserInterface | null>(null);
const fetchUserByEmail = async (email: string) => {
try {
const response = await UserIndexByEmailService(email);
setUser(response.data);
setResponse(response);
} catch (error) {
console.error("Erro ao buscar usuário por Email:", error);
}
};
return { user, fetchUserByEmail };
};

View file

@ -0,0 +1,27 @@
'use client';
import { useState } from 'react';
import { UserInterface } from '../../interfaces/User/UserInterface';
import { UserIndexByIDService } from '../../services/User/UserIndexByIDService';
import { useResponse } from '@/shared/components/response/ResponseContext';
export const useUserIndexByIdHook = () => {
const { setResponse } = useResponse();
const [user, setUser] = useState<UserInterface | null>(null);
const fetchUserById = async (userId: number) => {
try {
const response = await UserIndexByIDService(userId);
setUser(response.data);
setResponse(response);
} catch (error) {
// O withClientErrorHandler já deve tratar o erro e formatar a 'response',
// mas um catch local pode ser útil para lógicas adicionais se necessário.
console.error("Erro ao buscar usuário por ID:", error);
}
};
return { user, fetchUserById };
};

View file

@ -0,0 +1,23 @@
'use client';
import { useState } from 'react';
import { UserInterface } from '../../interfaces/User/UserInterface';
import { UserIndexService } from '../../services/User/UserIndexService';
import { useResponse } from '@/shared/components/response/ResponseContext';
export const useUserIndexHook = () => {
const { setResponse } = useResponse();
const [usuarios, setUsuarios] = useState<UserInterface[] | null>(null);
const fetchUsuarios = async () => {
const response = await UserIndexService();
setUsuarios(response.data);
// Define os dados do componente de resposta (toast, modal, etc)
setResponse(response);
};
return { usuarios, fetchUsuarios };
};

View file

@ -9,4 +9,4 @@ async function executeUserSave(form: any) {
}
export const UserSave = withClientErrorHandler(executeUserSave)
export const UserSaveService = withClientErrorHandler(executeUserSave)