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