UNPKG

@wepublish/api

Version:
86 lines 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNewSubscribersPerMonth = exports.getSubscriptionsAsCSV = exports.getAdminSubscriptions = exports.getSubscriptionById = void 0; const tslib_1 = require("tslib"); const api_1 = require("../../../../user-api/src"); const utility_1 = require("../../utility"); const permissions_1 = require("../permissions"); const api_2 = require("../../../../permissions-api/src"); const subscription_queries_1 = require("./subscription.queries"); const date_fns_1 = require("date-fns"); const getSubscriptionById = (id, authenticate, subscription) => { const { roles } = authenticate(); (0, permissions_1.authorise)(api_2.CanGetSubscription, roles); return subscription.findUnique({ where: { id }, include: { deactivation: true, periods: true, properties: true } }); }; exports.getSubscriptionById = getSubscriptionById; const getAdminSubscriptions = (filter, sortedField, order, cursorId, skip, take, authenticate, subscription) => { const { roles } = authenticate(); (0, permissions_1.authorise)(api_2.CanGetSubscriptions, roles); return (0, subscription_queries_1.getSubscriptions)(filter, sortedField, order, cursorId, skip, take, subscription); }; exports.getAdminSubscriptions = getAdminSubscriptions; const getSubscriptionsAsCSV = (filter, authenticate, subscription) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_2.CanGetSubscriptions, roles); (0, permissions_1.authorise)(api_2.CanGetUsers, roles); const subscriptions = yield subscription.findMany({ where: (0, subscription_queries_1.createSubscriptionFilter)(filter), orderBy: { modifiedAt: 'desc' }, include: { deactivation: true, periods: true, properties: true, memberPlan: true, user: { select: api_1.unselectPassword }, paymentMethod: true } }); return (0, utility_1.mapSubscriptionsAsCsv)(subscriptions); }); exports.getSubscriptionsAsCSV = getSubscriptionsAsCSV; const getNewSubscribersPerMonth = (authenticate, subscription, monthsBack) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_2.CanGetSubscriptions, roles); const subscriptions = yield subscription.findMany({ where: { startsAt: { gte: (0, date_fns_1.startOfMonth)((0, date_fns_1.subMonths)(new Date(), monthsBack - 1)) }, AND: { startsAt: { lte: (0, date_fns_1.lastDayOfMonth)(new Date()) } } } }); return getSubscriberCount(subscriptions, monthsBack); }); exports.getNewSubscribersPerMonth = getNewSubscribersPerMonth; const getSubscriberCount = (subscribers, monthsBack) => { const res = []; for (let i = monthsBack - 1; i >= 0; i--) { const count = subscribers.filter(subsc => { return (subsc.startsAt > (0, date_fns_1.startOfMonth)((0, date_fns_1.subMonths)(new Date(), i)) && subsc.startsAt < (0, date_fns_1.lastDayOfMonth)((0, date_fns_1.subMonths)(new Date(), i))); }).length; const month = new Date(); month.setMonth(month.getMonth() - i); res.push({ month: (0, date_fns_1.format)(month, 'MMM-yy'), subscriberCount: count }); } return res; }; //# sourceMappingURL=subscription.private-queries.js.map