mirror of
https://github.com/documenso/documenso.git
synced 2025-11-21 04:01:45 +10:00
128 lines
3.6 KiB
TypeScript
128 lines
3.6 KiB
TypeScript
import { EnvelopeType } from '@prisma/client';
|
|
|
|
import { getEnvelopeWhereInput } from '@documenso/lib/server-only/envelope/get-envelope-by-id';
|
|
import {
|
|
mapSecondaryIdToTemplateId,
|
|
mapTemplateIdToSecondaryId,
|
|
} from '@documenso/lib/utils/envelope';
|
|
import { mapFieldToLegacyField } from '@documenso/lib/utils/fields';
|
|
import { mapRecipientToLegacyRecipient } from '@documenso/lib/utils/recipients';
|
|
import { prisma } from '@documenso/prisma';
|
|
|
|
import { authenticatedProcedure } from '../trpc';
|
|
import {
|
|
ZGetTemplatesByIdsRequestSchema,
|
|
ZGetTemplatesByIdsResponseSchema,
|
|
getTemplatesByIdsMeta,
|
|
} from './get-templates-by-ids.types';
|
|
|
|
export const getTemplatesByIdsRoute = authenticatedProcedure
|
|
.meta(getTemplatesByIdsMeta)
|
|
.input(ZGetTemplatesByIdsRequestSchema)
|
|
.output(ZGetTemplatesByIdsResponseSchema)
|
|
.mutation(async ({ input, ctx }) => {
|
|
const { teamId, user } = ctx;
|
|
const { templateIds } = input;
|
|
|
|
ctx.logger.info({
|
|
input: {
|
|
templateIds,
|
|
},
|
|
});
|
|
|
|
const { envelopeWhereInput } = await getEnvelopeWhereInput({
|
|
id: {
|
|
type: 'templateId',
|
|
id: templateIds[0],
|
|
},
|
|
userId: user.id,
|
|
teamId,
|
|
type: EnvelopeType.TEMPLATE,
|
|
});
|
|
|
|
const envelopeOrInput = envelopeWhereInput.OR!;
|
|
|
|
const secondaryIds = templateIds.map((templateId) => mapTemplateIdToSecondaryId(templateId));
|
|
|
|
const envelopes = await prisma.envelope.findMany({
|
|
where: {
|
|
type: EnvelopeType.TEMPLATE,
|
|
secondaryId: {
|
|
in: secondaryIds,
|
|
},
|
|
OR: envelopeOrInput,
|
|
},
|
|
include: {
|
|
recipients: {
|
|
orderBy: {
|
|
id: 'asc',
|
|
},
|
|
},
|
|
fields: true,
|
|
team: {
|
|
select: {
|
|
id: true,
|
|
url: true,
|
|
},
|
|
},
|
|
documentMeta: {
|
|
select: {
|
|
signingOrder: true,
|
|
distributionMethod: true,
|
|
},
|
|
},
|
|
directLink: {
|
|
select: {
|
|
token: true,
|
|
enabled: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
return envelopes.map((envelope) => {
|
|
const legacyTemplateId = mapSecondaryIdToTemplateId(envelope.secondaryId);
|
|
|
|
return {
|
|
id: legacyTemplateId,
|
|
envelopeId: envelope.id,
|
|
type: envelope.templateType,
|
|
visibility: envelope.visibility,
|
|
externalId: envelope.externalId,
|
|
title: envelope.title,
|
|
userId: envelope.userId,
|
|
teamId: envelope.teamId,
|
|
authOptions: envelope.authOptions,
|
|
createdAt: envelope.createdAt,
|
|
updatedAt: envelope.updatedAt,
|
|
publicTitle: envelope.publicTitle,
|
|
publicDescription: envelope.publicDescription,
|
|
folderId: envelope.folderId,
|
|
useLegacyFieldInsertion: envelope.useLegacyFieldInsertion,
|
|
team: envelope.team
|
|
? {
|
|
id: envelope.team.id,
|
|
url: envelope.team.url,
|
|
}
|
|
: null,
|
|
fields: envelope.fields.map((field) => mapFieldToLegacyField(field, envelope)),
|
|
recipients: envelope.recipients.map((recipient) =>
|
|
mapRecipientToLegacyRecipient(recipient, envelope),
|
|
),
|
|
templateMeta: envelope.documentMeta
|
|
? {
|
|
signingOrder: envelope.documentMeta.signingOrder,
|
|
distributionMethod: envelope.documentMeta.distributionMethod,
|
|
}
|
|
: null,
|
|
directLink: envelope.directLink
|
|
? {
|
|
token: envelope.directLink.token,
|
|
enabled: envelope.directLink.enabled,
|
|
}
|
|
: null,
|
|
templateDocumentDataId: '', // Backwards compatibility.
|
|
};
|
|
});
|
|
});
|