UNPKG

@wepublish/api

Version:
110 lines 4.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DashboardInvoiceService = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const client_1 = require("@prisma/client"); const assert_1 = require("assert"); let DashboardInvoiceService = exports.DashboardInvoiceService = class DashboardInvoiceService { constructor(prisma) { this.prisma = prisma; } expectedRevenue(start, end) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const data = yield this.prisma.invoice.findMany({ where: { OR: [ { dueAt: { gte: start, lt: end } }, { paidAt: { gte: start, lt: end } } ], canceledAt: null, manuallySetAsPaidByUserId: null }, orderBy: { dueAt: 'desc' }, include: { items: true, subscription: { select: { memberPlan: { select: { name: true } } } } } }); return data.map(({ items, subscription, dueAt, paidAt }) => { var _a; const amount = items.reduce((sum, item) => sum + item.amount * item.quantity, 0); return { paidAt: paidAt !== null && paidAt !== void 0 ? paidAt : undefined, dueAt, memberPlan: (_a = subscription === null || subscription === void 0 ? void 0 : subscription.memberPlan) === null || _a === void 0 ? void 0 : _a.name, amount }; }); }); } revenue(start, end) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const data = yield this.prisma.invoice.findMany({ where: { paidAt: { gte: start, lt: end }, manuallySetAsPaidByUserId: null }, orderBy: { paidAt: 'desc' }, include: { items: { select: { quantity: true, amount: true } }, subscription: { select: { memberPlan: { select: { name: true } } } } } }); return data.map(({ items, subscription, dueAt, paidAt }) => { var _a; (0, assert_1.ok)(paidAt); const amount = items.reduce((sum, item) => sum + item.amount * item.quantity, 0); return { paidAt, dueAt, memberPlan: (_a = subscription === null || subscription === void 0 ? void 0 : subscription.memberPlan) === null || _a === void 0 ? void 0 : _a.name, amount }; }); }); } }; exports.DashboardInvoiceService = DashboardInvoiceService = tslib_1.__decorate([ (0, common_1.Injectable)(), tslib_1.__metadata("design:paramtypes", [client_1.PrismaClient]) ], DashboardInvoiceService); //# sourceMappingURL=dashboard-invoice.service.js.map