import { CollectionConfig } from "payload"; const HoldRequests: CollectionConfig = { slug: 'holdRequests', fields: [ { name: 'copy', type: 'relationship', relationTo: 'copies', filterOptions: ({ data }) => { return { book: { equals: data.book }, } } }, { name: 'book', type: 'relationship', relationTo: 'books', required: true, }, { name: 'repository', type: 'relationship', relationTo: 'repositories', }, { name: 'userRequested', type: 'relationship', relationTo: 'users', required: true, }, { name: 'dateRequested', type: 'date', }, { name: 'isHolding', type: 'checkbox', hooks: { beforeValidate: [({ data, originalDoc }) => { if (data?.isHolding && !data.copy) return originalDoc }] } }, { name: 'holdingUntilDate', type: 'date', }, { name: 'isRejected', type: 'checkbox', }, { name: 'isCheckedOut', type: 'checkbox', hooks: { beforeValidate: [({ data, originalDoc }) => { if (originalDoc.isCheckedOut) return originalDoc if (data?.isCheckedOut && !originalDoc.copy) return originalDoc if (originalDoc.isCheckedOut && !data?.isCheckedOut) return originalDoc }], afterChange: [({ value, data, req }) => { if (value) { req.payload.create({ collection: 'checkouts', data: { user: data?.userRequested, copy: data?.copy, } }) return data } }] } } ], } export default HoldRequests