fix: complete document when all recipients are CC

This commit is contained in:
Catalin Pit
2024-04-23 14:24:58 +03:00
parent 0eee570781
commit 4d5365bddc
4 changed files with 5 additions and 38 deletions

View File

@ -8,7 +8,6 @@ import {
DO_NOT_INVALIDATE_QUERY_ON_MUTATION, DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
SKIP_QUERY_BATCH_META, SKIP_QUERY_BATCH_META,
} from '@documenso/lib/constants/trpc'; } from '@documenso/lib/constants/trpc';
import { DocumentStatus, RecipientRole } from '@documenso/prisma/client';
import type { DocumentWithDetails } from '@documenso/prisma/types/document'; import type { DocumentWithDetails } from '@documenso/prisma/types/document';
import { trpc } from '@documenso/trpc/react'; import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils'; import { cn } from '@documenso/ui/lib/utils';
@ -69,10 +68,6 @@ export const EditDocumentForm = ({
const { Recipient: recipients, Field: fields } = document; const { Recipient: recipients, Field: fields } = document;
const allRecipientsAreCC = recipients.every((recipient) => recipient.role === RecipientRole.CC);
const { mutateAsync: updateDocumentStatus } = trpc.document.updateDocument.useMutation();
const { mutateAsync: setSettingsForDocument } = trpc.document.setSettingsForDocument.useMutation({ const { mutateAsync: setSettingsForDocument } = trpc.document.setSettingsForDocument.useMutation({
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION, ...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
onSuccess: (newData) => { onSuccess: (newData) => {
@ -254,13 +249,6 @@ export const EditDocumentForm = ({
const onAddSubjectFormSubmit = async (data: TAddSubjectFormSchema) => { const onAddSubjectFormSubmit = async (data: TAddSubjectFormSchema) => {
const { subject, message } = data.meta; const { subject, message } = data.meta;
try { try {
if (allRecipientsAreCC) {
await updateDocumentStatus({
documentId: document.id,
data: { status: DocumentStatus.COMPLETED },
});
}
await sendDocument({ await sendDocument({
documentId: document.id, documentId: document.id,
teamId: team?.id, teamId: team?.id,

View File

@ -211,6 +211,10 @@ export const sendDocument = async ({
}), }),
); );
const allRecipientsAreCC = document.Recipient.every(
(recipient) => recipient.role === RecipientRole.CC,
);
const updatedDocument = await prisma.$transaction(async (tx) => { const updatedDocument = await prisma.$transaction(async (tx) => {
if (document.status === DocumentStatus.DRAFT) { if (document.status === DocumentStatus.DRAFT) {
await tx.documentAuditLog.create({ await tx.documentAuditLog.create({
@ -229,7 +233,7 @@ export const sendDocument = async ({
id: documentId, id: documentId,
}, },
data: { data: {
status: DocumentStatus.PENDING, status: allRecipientsAreCC ? DocumentStatus.COMPLETED : DocumentStatus.PENDING,
}, },
include: { include: {
Recipient: true, Recipient: true,

View File

@ -16,7 +16,6 @@ import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/
import { resendDocument } from '@documenso/lib/server-only/document/resend-document'; import { resendDocument } from '@documenso/lib/server-only/document/resend-document';
import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword'; import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword';
import { sendDocument } from '@documenso/lib/server-only/document/send-document'; import { sendDocument } from '@documenso/lib/server-only/document/send-document';
import { updateDocument } from '@documenso/lib/server-only/document/update-document';
import { updateDocumentSettings } from '@documenso/lib/server-only/document/update-document-settings'; import { updateDocumentSettings } from '@documenso/lib/server-only/document/update-document-settings';
import { updateTitle } from '@documenso/lib/server-only/document/update-title'; import { updateTitle } from '@documenso/lib/server-only/document/update-title';
import { symmetricEncrypt } from '@documenso/lib/universal/crypto'; import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
@ -37,7 +36,6 @@ import {
ZSetPasswordForDocumentMutationSchema, ZSetPasswordForDocumentMutationSchema,
ZSetSettingsForDocumentMutationSchema, ZSetSettingsForDocumentMutationSchema,
ZSetTitleForDocumentMutationSchema, ZSetTitleForDocumentMutationSchema,
ZUpdateDocumentMutationSchema,
} from './schema'; } from './schema';
export const documentRouter = router({ export const documentRouter = router({
@ -134,23 +132,6 @@ export const documentRouter = router({
} }
}), }),
updateDocument: authenticatedProcedure
.input(ZUpdateDocumentMutationSchema)
.mutation(async ({ input, ctx }) => {
try {
const { documentId, data } = input;
await updateDocument({ documentId, data, userId: ctx.user.id });
} catch (err) {
console.error(err);
throw new TRPCError({
code: 'BAD_REQUEST',
message: 'We were unable to delete this document. Please try again later.',
});
}
}),
deleteDocument: authenticatedProcedure deleteDocument: authenticatedProcedure
.input(ZDeleteDocumentMutationSchema) .input(ZDeleteDocumentMutationSchema)
.mutation(async ({ input, ctx }) => { .mutation(async ({ input, ctx }) => {

View File

@ -48,12 +48,6 @@ export const ZCreateDocumentMutationSchema = z.object({
teamId: z.number().optional(), teamId: z.number().optional(),
}); });
export const ZUpdateDocumentMutationSchema = z.object({
documentId: z.number().min(1),
teamId: z.number().optional(),
data: z.any(),
});
export type TCreateDocumentMutationSchema = z.infer<typeof ZCreateDocumentMutationSchema>; export type TCreateDocumentMutationSchema = z.infer<typeof ZCreateDocumentMutationSchema>;
export const ZSetSettingsForDocumentMutationSchema = z.object({ export const ZSetSettingsForDocumentMutationSchema = z.object({