filtro em produtos, bug tela de preparo, nome do user nas comandas e itens

This commit is contained in:
2026-07-23 12:50:26 -03:00
parent 14a36b68b5
commit 14e92c91fd
8 changed files with 407 additions and 31 deletions

View File

@@ -42,16 +42,18 @@ export async function listPaymentsController(request: FastifyRequest, reply: Fas
export async function createOrderController(request: FastifyRequest, reply: FastifyReply) {
const data = createOrderSchema.parse(request.body);
const order = await orderService.createOrder(data);
const user = request.user as { id: string };
const order = await orderService.createOrder(data, user.id);
return reply.status(201).send(order);
}
export async function addItemToOrderController(request: FastifyRequest, reply: FastifyReply) {
const { id } = z.object({ id: z.string().uuid() }).parse(request.params);
const data = addItemOrderSchema.parse(request.body);
const user = request.user as { id: string };
try {
const item = await orderService.addItemToOrder(id, data);
const item = await orderService.addItemToOrder(id, data, user.id);
return reply.status(201).send(item);
} catch (error: any) {
return reply.status(400).send({ error: error.message });

View File

@@ -64,26 +64,35 @@ export async function listOrders(filter?: ListOrdersFilter) {
where,
orderBy: { criadoEm: 'desc' },
include: {
usuario: {
select: { id: true, nome: true, email: true },
},
itens: {
include: { produto: true }
include: {
produto: true,
usuario: {
select: { id: true, nome: true },
},
}
},
pagamentos: true,
}
});
}
export async function createOrder(data: CreateOrderInput) {
export async function createOrder(data: CreateOrderInput, usuarioId?: string) {
return prisma.comanda.create({
data: {
identificador: data.identificador,
nomeCliente: data.nomeCliente,
status: 'ABERTA',
total: 0,
usuarioId: usuarioId ?? null,
},
});
}
export async function addItemToOrder(comandaId: string, data: AddItemOrderInput) {
export async function addItemToOrder(comandaId: string, data: AddItemOrderInput, usuarioId?: string) {
const produto = await prisma.produto.findUnique({
where: { id: data.produtoId },
});
@@ -110,6 +119,7 @@ export async function addItemToOrder(comandaId: string, data: AddItemOrderInput)
precoUnitario: produto.preco,
produtoId: data.produtoId,
comandaId: comandaId,
usuarioId: usuarioId ?? null,
status: 'PENDENTE',
},
}),
@@ -140,6 +150,9 @@ export async function listKitchenBarItems(itemCozinha?: boolean, status?: string
include: {
produto: true,
comanda: true,
usuario: {
select: { id: true, nome: true },
},
},
});
}
@@ -320,8 +333,16 @@ export async function updateOrder(comandaId: string, data: UpdateOrderInput) {
where: { id: comandaId },
data: updateData,
include: {
usuario: {
select: { id: true, nome: true, email: true },
},
itens: {
include: { produto: true }
include: {
produto: true,
usuario: {
select: { id: true, nome: true },
},
}
},
pagamentos: true,
}
@@ -360,6 +381,18 @@ export async function deleteItemFromOrder(itemId: string) {
return prisma.comanda.findUnique({
where: { id: item.comandaId },
include: { itens: { include: { produto: true } } },
include: {
itens: {
include: {
produto: true,
usuario: {
select: { id: true, nome: true },
},
}
},
usuario: {
select: { id: true, nome: true, email: true },
},
},
});
}