Vista (intefaz y bd), esquema y endpoints de store agregados

This commit is contained in:
2025-07-02 15:10:54 -04:00
parent f5962efb8b
commit 365cbd0d7a
19 changed files with 1909 additions and 76 deletions

View File

@@ -9,6 +9,7 @@ import {
FormLabel,
FormMessage,
} from '@repo/shadcn/form';
import { Textarea } from '@repo/shadcn/textarea';
import { Input } from '@repo/shadcn/input';
import { useForm } from 'react-hook-form';
import { useCreateUser } from "@/feactures/inventory/hooks/use-mutation";
@@ -83,20 +84,6 @@ export function CreateForm({
)}
/>
<FormField
control={form.control}
name="description"
render={({ field }) => (
<FormItem>
<FormLabel>Descripción</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="price"
@@ -113,6 +100,21 @@ export function CreateForm({
)}
/>
<FormField
control={form.control}
name="description"
render={({ field }) => (
<FormItem className='col-span-2'>
<FormLabel>Descripción</FormLabel>
<FormControl>
{/* <Input {...field} /> */}
<Textarea {...field} className="resize-none"/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="stock"

View File

@@ -3,7 +3,7 @@
import { DataTable } from '@repo/shadcn/table/data-table';
import { DataTableSkeleton } from '@repo/shadcn/table/data-table-skeleton';
import { columns } from './product-tables/columns';
import { useProductQuery } from '../../hooks/use-query-users';
import { useProductQuery } from '../../hooks/use-query-products';
interface SurveysAdminListProps {
initialPage: number;

View File

@@ -13,6 +13,7 @@ import { Input } from '@repo/shadcn/input';
import { useForm } from 'react-hook-form';
import { useUpdateUser } from "@/feactures/inventory/hooks/use-mutation";
import { editInventory, formDataInput, EditInventory } from '@/feactures/inventory/schemas/inventory'; // Renombrado EditInventory para claridad
import { Textarea } from '@repo/shadcn/components/ui/textarea';
interface UpdateFormProps {
onSuccess?: () => void;
@@ -87,19 +88,7 @@ export function UpdateForm({
)}
/>
<FormField
control={form.control}
name="description"
render={({ field }) => (
<FormItem>
<FormLabel>Descripción</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
@@ -116,6 +105,21 @@ export function UpdateForm({
)}
/>
<FormField
control={form.control}
name="description"
render={({ field }) => (
<FormItem className='col-span-2'>
<FormLabel>Descripción</FormLabel>
<FormControl>
{/* <Input {...field} /> */}
<Textarea {...field} className="resize-none"/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="stock"

View File

@@ -17,7 +17,7 @@ export function UsersHeader() {
description="Gestione aquí los productos que usted registre en la plataforma"
/>
<Button onClick={() => setOpen(true)} size="sm">
<Plus className="mr-2 h-4 w-4" /> Agregar Producto
<Plus className="h-4 w-4" /><span className='hidden md:inline'>Agregar Producto</span>
</Button>
</div>

View File

@@ -0,0 +1,71 @@
// Este componente maneja la lista de encuestas en el panel de administración
// Funcionalidades:
// - Muestra todas las encuestas en una tabla
// - Permite editar encuestas existentes
// - Permite eliminar encuestas con confirmación
// - Muestra el estado (publicada/borrador), fechas y conteo de respuestas
'use client';
import { Button } from '@repo/shadcn/button';
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from '@repo/shadcn/card';
import { useRouter } from 'next/navigation';
// import { useSurveysForUserQuery } from '@/feactures/surveys/hooks/use-query-surveys';
import { useAllProductQuery } from '@/feactures/inventory/hooks/use-query-products';
import { allProducts } from '../../schemas/inventory';
import { Badge } from '@repo/shadcn/badge';
import { BadgeCheck } from 'lucide-react';
export function SurveyList() {
const router = useRouter();
const {data: produts} = useAllProductQuery()
const handleRespond = (surveyId: number) => {
router.push(`/dashboard/productos/${surveyId}`);
};
// console.log(produts?.data)
return (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{produts?.meta.totalPages === 0 ? (
<div className="col-span-full text-center py-10">
<p className="text-muted-foreground">No hay productos disponibles en este momento.</p>
</div>
) : (
produts?.data.map((data: allProducts) => (
<Card key={data.id} className="flex flex-col">
<CardHeader>
<CardTitle>{data.title}</CardTitle>
<CardDescription>{data.description}</CardDescription>
</CardHeader>
<CardContent className="flex-grow">
<div className="space-y-2 text-sm">
<div className="flex justify-between">
<img src="/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII" alt="" />
</div>
</div>
</CardContent>
<CardFooter className="flex justify-center">
<Button
className="w-full"
onClick={() => handleRespond(Number(data.id))}
>
Ver
</Button>
</CardFooter>
</Card>
))
)}
</div>
);
}