'use server'; import { safeFetchApi } from '@/lib/fetch.api'; import { CreateUser, surveysApiResponseSchema, UpdateUser, UsersMutate, } from '../schemas/users'; import { auth } from '@/lib/auth'; export const getProfileAction = async () => { const session = await auth(); const id = session?.user?.id; const [error, response] = await safeFetchApi( UsersMutate, `/users/${id}`, 'GET', ); if (error) throw new Error(error.message); return response; }; export const updateProfileAction = async (payload: UpdateUser) => { const { id, ...payloadWithoutId } = payload; const [error, data] = await safeFetchApi( UsersMutate, `/users/profile/${id}`, 'PATCH', payloadWithoutId, ); if (error) { if (error.message === 'Email already exists') { throw new Error('Ese correo ya está en uso'); } // console.error('Error:', error); throw new Error('Error al crear el usuario'); } return data; }; export const getUsersAction = async (params: { page?: number; limit?: number; search?: string; sortBy?: string; sortOrder?: 'asc' | 'desc'; }) => { const searchParams = new URLSearchParams({ page: (params.page || 1).toString(), limit: (params.limit || 10).toString(), ...(params.search && { search: params.search }), ...(params.sortBy && { sortBy: params.sortBy }), ...(params.sortOrder && { sortOrder: params.sortOrder }), }); const [error, response] = await safeFetchApi( surveysApiResponseSchema, `/users?${searchParams}`, 'GET', ); if (error) throw new Error(error.message); // const transformedData = response?.data ? transformSurvey(response?.data) : undefined; return { data: response?.data || [], meta: response?.meta || { page: 1, limit: 10, totalCount: 0, totalPages: 1, hasNextPage: false, hasPreviousPage: false, nextPage: null, previousPage: null, }, }; }; export const createUserAction = async (payload: CreateUser) => { const { id, confirmPassword, ...payloadWithoutId } = payload; const [error, data] = await safeFetchApi( UsersMutate, '/users', 'POST', payloadWithoutId, ); if (error) { if (error.message === 'Username already exists') { throw new Error('Ese usuario ya existe'); } if (error.message === 'Email already exists') { throw new Error('Ese correo ya está en uso'); } // console.error('Error:', error); throw new Error('Error al crear el usuario'); } return payloadWithoutId; }; export const updateUserAction = async (payload: UpdateUser) => { try { const { id, ...payloadWithoutId } = payload; const [error, data] = await safeFetchApi( UsersMutate, `/users/${id}`, 'PATCH', payloadWithoutId, ); // console.log(data); if (error) { console.error(error); throw new Error(error?.message || 'Error al actualizar el usuario'); } return data; } catch (error) { console.error(error); } }; export const deleteUserAction = async (id: Number) => { const [error] = await safeFetchApi(UsersMutate, `/users/${id}`, 'DELETE'); console.log(error); // if (error) throw new Error(error.message || 'Error al eliminar el usuario') return true; };