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