Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5ab411f
OM-489: cree las validaciones zod para delivery
Benjakr04 Apr 28, 2026
c7e883b
OM-489: cree las validaciones zod para delivery
Benjakr04 Apr 28, 2026
abac5d3
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
a99396e
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
942c59e
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
f263823
OM-489: he creado delivery.controller.js
Benjakr04 Apr 28, 2026
46a88a2
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
b99d299
OM-489: ya esta el back de Delivery
Benjakr04 Apr 28, 2026
eb20e4a
OM-489: ya esta el back de Delivery
Benjakr04 Apr 28, 2026
362a22e
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
4b254a1
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
c0369ec
OM-489: ya esta el back de Delivery
Benjakr04 Apr 28, 2026
eb63589
OM-489: guardando estado de trabajo
Benjakr04 Apr 28, 2026
7c289bf
Merge branch 'dev' of https://github.com/CrisNAC/BackendMarketplace i…
Benjakr04 Apr 28, 2026
5ce5be8
OM-489: Implementar módulo completo de deliveries con assignments y r…
Benjakr04 Apr 28, 2026
e808a92
OM-489: arregle algunas cosas que me dijo CR
Benjakr04 Apr 28, 2026
d972fbe
OM-489: arregle algunas cosas que me dijo CR
Benjakr04 Apr 28, 2026
7cc3be6
OM-489: FIX 2
Benjakr04 Apr 28, 2026
3361613
OM-489: FIX 3
Benjakr04 Apr 28, 2026
a8eb97f
OM-489: FIX 4
Benjakr04 Apr 28, 2026
2e28af4
OM-489: FIX 5
Benjakr04 Apr 28, 2026
9f8d04b
OM-489: FIX 6
Benjakr04 Apr 28, 2026
b7f9ef4
OM-489: FIX 7
Benjakr04 Apr 29, 2026
a3669ee
OM-489: FIX 8
Benjakr04 Apr 29, 2026
1a7bf95
OM-489: FIX 9
Benjakr04 Apr 29, 2026
c2252d3
OM-489: FIX 10
Benjakr04 Apr 29, 2026
06a471a
OM-489: ya pasaron todos los tests
Benjakr04 Apr 29, 2026
bafd926
OM-489: ya pasaron todos los tests, e hice un pequeño cambio para pap…
Benjakr04 Apr 29, 2026
1c4cc76
OM-489: ya pasaron todos los tests, e hice un pequeño cambio para pap…
Benjakr04 Apr 29, 2026
ff3b63e
OM-489: ya pasaron todos los tests, e hice un pequeño cambio para pap…
Benjakr04 Apr 29, 2026
be0dcab
OM-489: correccion de rutas recomendada por Code Rabbit
Benjakr04 Apr 29, 2026
a94cdfd
OM-489: correccion de rutas recomendada por Code Rabbit
Benjakr04 Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterEnum
ALTER TYPE "AssignmentStatus" ADD VALUE 'DELIVERED';
1 change: 1 addition & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ enum AssignmentStatus {
PENDING
ACCEPTED
REJECTED
DELIVERED
}

//------------------------------------PEDIDOS----------------------------------------
Expand Down
10 changes: 8 additions & 2 deletions src/app.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//app.js
import { validateEnv } from './config/env.config.js'
validateEnv() // Si falta algo, el servidor no arranca
import express from "express";
Expand All @@ -17,7 +18,8 @@ import userRoutes from "./modules/users/users/routes/users.routes.js";
import addressRoutes from "./modules/users/addresses/routes/addresses.routes.js";
import sessionRoutes from "./modules/session/routes/session.routes.js";
import userProductReviewRoutes from "./modules/users/product-review/product-review.routes.js";
import deliveryRoutes from "./modules/deliveries/delivery.routes.js";
import deliveryRoutes from "./modules/delivery/delivery/delivery.routes.js";
import assignmentRoutes from "./modules/delivery/delivery-assignments/delivery-assignments.routes.js";

import productReportRoutes from "./modules/global/reports/product/product-report.routes.js";
import reviewReportRoutes from "./modules/global/reports/review/review-report.routes.js";
Expand Down Expand Up @@ -89,9 +91,13 @@ app.use("/api/users", addressRoutes);
app.use("/api/users", wishlistRoutes);
app.use("/api/users", cartRoutes);
app.use("/api/users", userOrderRouter);
app.use("/api/deliveries", deliveryRoutes);
app.use('/api/session', sessionRoutes);

// Rutas de deliveries
app.use("/api/deliveries", deliveryRoutes);
app.use("/api/assignments", assignmentRoutes);


// Rutas de pedidos
app.use("/api/orders", orderRouter);

Expand Down
26 changes: 0 additions & 26 deletions src/modules/deliveries/delivery.controller.js

This file was deleted.

65 changes: 0 additions & 65 deletions src/modules/deliveries/delivery.routes.js

This file was deleted.

62 changes: 0 additions & 62 deletions src/modules/deliveries/delivery.service.js

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
//delivery.assignments.controller.js
import { ZodError } from 'zod';
import { createAssignmentSchema } from './delivery-assignments.validation.js';
import {
createAssignmentService,
getAssignmentByIdService,
getOrderAssignmentsService,
getDeliveryAssignmentsService,
getDeliveryPendingAssignmentsService,
getAcceptedAssignmentService,
completeAssignmentService
} from './delivery-assignments.service.js';
Comment thread
coderabbitai[bot] marked this conversation as resolved.

// Crear asignación
export const createAssignment = async (req, res) => {
try {
const validData = createAssignmentSchema.parse(req.body);
const result = await createAssignmentService(validData);
res.status(201).json(result);
} catch (error) {
if (error instanceof ZodError) {
return res.status(400).json({
error: { code: 400, message: "Datos inválidos", details: error.issues }
});
}
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};

// Obtener asignación por ID
export const getAssignmentById = async (req, res) => {
try {
const { id } = req.params;

const assignmentId = Number.parseInt(id, 10);
if (Number.isNaN(assignmentId)) {
return res.status(400).json({
error: { code: 400, message: "ID inválido" }
});
}

const result = await getAssignmentByIdService(assignmentId);
res.json(result);
} catch (error) {
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};

// Obtener asignaciones de un pedido
export const getOrderAssignments = async (req, res) => {
try {
const { orderId } = req.params;

const orderIdNum = Number.parseInt(orderId, 10);
if (Number.isNaN(orderIdNum)) {
return res.status(400).json({
error: { code: 400, message: "ID inválido" }
});
}

const result = await getOrderAssignmentsService(orderIdNum);
res.json(result);
} catch (error) {
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};

// Obtener asignaciones de un delivery
export const getDeliveryAssignments = async (req, res) => {
try {
const { deliveryId } = req.params;
const { status } = req.query;

const deliveryIdNum = Number.parseInt(deliveryId, 10);
if (Number.isNaN(deliveryIdNum)) {
return res.status(400).json({
error: { code: 400, message: "ID inválido" }
});
}

// Validar status contra enum
const validStatuses = ["PENDING", "ACCEPTED", "REJECTED", "DELIVERED"];
if (status && !validStatuses.includes(status)) {
return res.status(400).json({
error: { code: 400, message: `Status inválido. Debe ser uno de: ${validStatuses.join(", ")}` }
});
}

const result = await getDeliveryAssignmentsService(deliveryIdNum, status || null);
res.json(result);
} catch (error) {
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};

// Obtener asignaciones PENDING de un delivery
export const getDeliveryPendingAssignments = async (req, res) => {
try {
const { deliveryId } = req.params;

const deliveryIdNum = Number.parseInt(deliveryId, 10);
if (Number.isNaN(deliveryIdNum)) {
return res.status(400).json({
error: { code: 400, message: "ID inválido" }
});
}

const result = await getDeliveryPendingAssignmentsService(deliveryIdNum);
res.json(result);
} catch (error) {
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};

// Obtener la asignación aceptada de un pedido
export const getAcceptedAssignment = async (req, res) => {
try {
const { orderId } = req.params;

const orderIdNum = Number.parseInt(orderId, 10);
if (Number.isNaN(orderIdNum)) {
return res.status(400).json({
error: { code: 400, message: "ID inválido" }
});
}

const result = await getAcceptedAssignmentService(orderIdNum);
res.json(result);
} catch (error) {
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};

// Completar asignación (marcar como entregado)
export const completeAssignment = async (req, res) => {
try {
const { id } = req.params;

const assignmentId = Number.parseInt(id, 10);
if (Number.isNaN(assignmentId)) {
return res.status(400).json({
error: { code: 400, message: "ID inválido" }
});
}

// Pasar id_user autenticado al service
const result = await completeAssignmentService(assignmentId, req.user.id_user);
res.json(result);
} catch (error) {
return res.status(error.status || 500).json({
error: { code: error.status || 500, message: error.message }
});
}
};
Loading
Loading