first version

This commit is contained in:
2025-11-12 15:30:12 +01:00
commit f668b6f006
161 changed files with 31955 additions and 0 deletions
+107
View File
@@ -0,0 +1,107 @@
import { Prisma } from "@/generated/prisma/client"
import { paginate } from "@/lib/paginate"
import prisma from "@/lib/prisma"
import { CreateAssignmentFormType } from "@/lib/schemas/assignment.schemas"
import { Assignment, AssignmentWithRecipientItemAsset } from "@/lib/types"
import { getAuthenticatedUserId } from "./auth.service"
export const AssignmentService = {
findAllWithRecipient: async ({
page,
pageSize,
search,
}: {
page?: number
pageSize?: number
search?: string
}) => {
return paginate<AssignmentWithRecipientItemAsset>({
model: prisma.assignment,
page,
pageSize,
where: {
returnDate: {
equals: null,
},
...(search
? {
OR: [
{
recipient: {
firstName: { contains: search, mode: "insensitive" },
},
},
{
recipient: {
lastName: { contains: search, mode: "insensitive" },
},
},
],
}
: {}),
},
include: {
recipient: true,
item: true,
asset: true,
},
orderBy: {
createdAt: "desc",
},
})
},
findById: async (
id: string,
): Promise<AssignmentWithRecipientItemAsset | null> => {
return prisma.assignment.findUnique({
where: { id },
include: {
recipient: true,
item: true,
asset: true,
},
})
},
findAllByRecipient: async (
recipientId: string,
): Promise<AssignmentWithRecipientItemAsset[]> => {
return prisma.assignment.findMany({
where: { recipientId },
include: {
recipient: true,
item: true,
asset: true,
},
})
},
create: async (data: CreateAssignmentFormType): Promise<Assignment> => {
return prisma.assignment.create({
data: {
...data,
createdBy: await getAuthenticatedUserId(),
},
})
},
delete: async (id: string): Promise<Assignment> => {
return prisma.assignment.update({
where: { id },
data: {
returnDate: new Date(),
recipientId: null,
quantity: null,
assetId: null,
itemId: null,
},
})
},
update: async (
id: string,
data: Prisma.AssignmentUpdateInput,
): Promise<Assignment> => {
return prisma.assignment.update({
where: { id },
data,
})
},
}