UNPKG

@wepublish/api

Version:
95 lines 3.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.markInvoiceAsPaid = exports.updateInvoice = exports.createInvoice = exports.deleteInvoiceById = void 0; const tslib_1 = require("tslib"); const permissions_1 = require("../permissions"); const api_1 = require("../../../../permissions-api/src"); const deleteInvoiceById = (id, authenticate, invoice) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanDeleteInvoice, roles); return invoice.delete({ where: { id } }); }); exports.deleteInvoiceById = deleteInvoiceById; const createInvoice = (_a, authenticate, invoice) => { var { items } = _a, input = tslib_1.__rest(_a, ["items"]); const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanCreateInvoice, roles); return invoice.create({ data: Object.assign(Object.assign({}, input), { items: { create: items } }), include: { items: true } }); }; exports.createInvoice = createInvoice; const updateInvoice = (id, _a, authenticate, invoice) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { var { items } = _a, input = tslib_1.__rest(_a, ["items"]); const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanCreateInvoice, roles); return invoice.update({ where: { id }, data: Object.assign(Object.assign({}, input), { items: { deleteMany: { invoiceId: { equals: id } }, createMany: { data: items } } }), include: { items: true } }); }); exports.updateInvoice = updateInvoice; const markInvoiceAsPaid = (id, authenticate, userSession, prismaClient) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanCreateInvoice, roles); const session = userSession(); const invoice = yield prismaClient.invoice.findUnique({ where: { id }, include: { subscriptionPeriods: true } }); if (!invoice) { throw new Error('Invoice not found'); } // Should not happen since an invoice is limited to one subscription if (invoice.subscriptionPeriods.length !== 1) { throw new Error('Not one period is linked to the invoice'); } if (!invoice.subscriptionID) { throw new Error('Invoice has no subscriptionID'); } yield prismaClient.subscription.update({ where: { id: invoice.subscriptionID }, data: { paidUntil: invoice.subscriptionPeriods[0].endsAt } }); return prismaClient.invoice.update({ where: { id }, data: { manuallySetAsPaidByUserId: session.user.id, paidAt: new Date() }, include: { items: true } }); }); exports.markInvoiceAsPaid = markInvoiceAsPaid; //# sourceMappingURL=invoice.private-mutation.js.map