@wepublish/api
Version:
API core for we.publish.
95 lines • 3.25 kB
JavaScript
;
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