'use server'; import { safeFetchApi } from '@/lib/fetch.api'; import { ApiResponseSchema, InventoryTable, productMutate, // editInventory, productApiResponseSchema, getProduct } from '../schemas/inventory'; import { auth } from '@/lib/auth'; export const getInventoryAction = 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( ApiResponseSchema, `/products/inventory?${searchParams}`, 'GET' ); if (error) { console.error(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 getAllProducts = async (params: { page?: number; limit?: number; search?: string; sortBy?: string; sortOrder?: 'asc' | 'desc'; }) => { const session = await auth() 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 id = session?.user.id const [error, response] = await safeFetchApi( productApiResponseSchema, `/products/store?${searchParams}`, 'GET' ); if (error) { console.error('Errorrrrr:', error.details); throw new Error(error.message); } 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 getProductById = async (id: number) => { const [error, data] = await safeFetchApi( getProduct, `/products/id/${id}`, 'GET', ); if (error) { console.error('❌ Error en la API:', error); throw new Error(error.message); } return data; }; export const createProductAction = async (payload: InventoryTable) => { const session = await auth() const userId = session?.user?.id const { id, ...payloadWithoutId } = payload; payloadWithoutId.userId = userId const [error, data] = await safeFetchApi( productMutate, '/products', 'POST', payloadWithoutId, ); if (error) { console.error(error); throw new Error('Error al crear el producto'); } return payloadWithoutId; }; export const updateUserAction = async (payload: InventoryTable) => { try { const { id, ...payloadWithoutId } = payload; const [error, data] = await safeFetchApi( productMutate, `/products/${id}`, 'PATCH', payloadWithoutId, ); if (error) { console.error(error); throw new Error(error?.message || 'Error al actualizar el producto'); } return data; } catch (error) { console.error(error); } } export const deleteProductAction = async (id: Number) => { const [error] = await safeFetchApi( productMutate, `/products/${id}`, 'DELETE' ) console.log(error); if (error) throw new Error(error.message || 'Error al eliminar el usuario') return true; }