refactor: update assignment update logic to include recipientId and handle movements

This commit is contained in:
2025-11-12 19:13:05 +01:00
parent 90de682cec
commit 3db1ddce23
2 changed files with 59 additions and 16 deletions
+51 -16
View File
@@ -129,7 +129,7 @@ export async function updateAssignment(formData: UpdateAssignmentFormType) {
}
try {
const { id, itemId, assetId, quantity } = validatedFields.data
const { id, recipientId, itemId, assetId, quantity } = validatedFields.data
const assignment = await prisma.assignment.findUnique({
where: { id },
@@ -154,12 +154,12 @@ export async function updateAssignment(formData: UpdateAssignmentFormType) {
}
}
if (item.stock < quantity) {
return {
success: false,
errors: { quantity: ["Item does not have enough stock"] },
}
}
// if (item.stock < quantity) {
// return {
// success: false,
// errors: { quantity: ["Item does not have enough stock"] },
// }
// }
}
if (assetId) {
@@ -187,16 +187,51 @@ export async function updateAssignment(formData: UpdateAssignmentFormType) {
}
}
await prisma.assignment.update({
where: { id },
data: {
...validatedFields.data,
itemId,
assetId,
const createdBy = await getAuthenticatedUserId()
if (assignment.recipientId !== recipientId) {
await MovementService.create({
type: "RETURN",
quantity: assignment.quantity || 1,
itemId: assignment.itemId || undefined,
assetId: assignment.assetId || undefined,
recipientId: assignment.recipientId || undefined,
assignmentId: id,
})
await MovementService.create({
type: "ASSIGNMENT",
quantity,
returnDate: new Date(),
},
})
itemId,
assetId: assetId || undefined,
recipientId,
assignmentId: id,
})
await prisma.assignment.update({
data: {
...validatedFields.data,
createdBy,
recipientId,
itemId,
assetId,
quantity,
returnDate: null,
},
where: { id },
})
} else {
await prisma.assignment.update({
where: { id },
data: {
...validatedFields.data,
itemId,
assetId,
quantity,
returnDate: new Date(),
},
})
}
revalidatePath("/assignments")