UNPKG

@rsc-labs/medusa-store-analytics

Version:
72 lines (71 loc) 3.79 kB
"use strict"; /* * Copyright 2024 RSC-Labs, https://rsoftcon.com/ * * MIT License * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const medusa_1 = require("@medusajs/medusa"); const pdfkit_1 = __importDefault(require("pdfkit")); const sales_template_1 = __importDefault(require("./pdf-templates/sales-template")); const orders_template_1 = __importDefault(require("./pdf-templates/orders-template")); const customers_template_1 = __importDefault(require("./pdf-templates/customers-template")); const common_1 = require("./pdf-templates/common"); const products_template_1 = __importDefault(require("./pdf-templates/products-template")); class ReportsAnalyticsService extends medusa_1.TransactionBaseService { constructor(container) { super(container); this.ordersAnalyticsService = container.ordersAnalyticsService; this.salesAnalyticsService = container.salesAnalyticsService; this.customersAnalyticsService = container.customersAnalyticsService; this.productsAnalyticsService = container.productsAnalyticsService; this.regionService = container.regionService; } async generateReport(orderStatuses, from, to, dateRangeFromCompareTo, dateRangeToCompareTo) { var doc = new pdfkit_1.default(); const buffers = []; doc.on("data", buffers.push.bind(buffers)); (0, common_1.generateReportHeader)(doc, orderStatuses, from, to, dateRangeFromCompareTo, dateRangeToCompareTo); const regions = await this.regionService.list(); // Orders orders_template_1.default.generateHeader(doc); const ordersHistoryResult = await this.ordersAnalyticsService.getOrdersHistory(orderStatuses, from, to, dateRangeFromCompareTo, dateRangeToCompareTo); orders_template_1.default.generateTable(doc, ordersHistoryResult); // Sales doc.addPage(); sales_template_1.default.generateHeader(doc); for (const region of regions) { sales_template_1.default.generateTableTitle(doc, region); const salesAnalyticsResult = await this.salesAnalyticsService.getOrdersSales(orderStatuses, region.currency_code, from, to, dateRangeFromCompareTo, dateRangeToCompareTo); sales_template_1.default.generateTable(doc, salesAnalyticsResult); } // Customers doc.addPage(); customers_template_1.default.generateHeader(doc); const customersHistoryResult = await this.customersAnalyticsService.getHistory(from, to, dateRangeFromCompareTo, dateRangeToCompareTo); customers_template_1.default.generateTable(doc, customersHistoryResult); // Products doc.addPage(); products_template_1.default.generateHeader(doc); const variantsCountPopularityResult = await this.productsAnalyticsService.getTopVariantsByCount(orderStatuses, from, to, dateRangeFromCompareTo, dateRangeToCompareTo); products_template_1.default.generateTable(doc, variantsCountPopularityResult); doc.end(); const bufferPromise = new Promise(resolve => { doc.on("end", () => { const pdfData = Buffer.concat(buffers); resolve(pdfData); }); }); return await bufferPromise; } } exports.default = ReportsAnalyticsService;