UNPKG

medusa-bonuses-plugin

Version:

medusa-bonuses-plugin is a Medusa plugin that adds bonus program to Medusa ecommerce stores.

111 lines 9.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class CustomerSubscriber { constructor({ manager, eventBusService, customerService, bonusService }) { this.handleCustomerCreated = async (data) => { const { id } = data; try { const customer = await this.customerService_.retrieve(id); // Создаем бонусный счет для нового клиента await this.bonusService_.createBonusAccount(customer.id, { metadata: { created_at_registration: true, customer_email: customer.email, has_account: customer.has_account || false, creation_source: 'customer_registration' } }); console.log(`Bonus account created for customer: ${customer.id}`); await this.eventBus_.emit("bonus.account.created", { customer_id: customer.id }); } catch (error) { console.error("Failed to create bonus account:", error); await this.eventBus_.emit("bonus.account.create_failed", { customer_id: id, error: error.message }); } }; this.handleCustomerVerified = async (data) => { const { id } = data; try { const customer = await this.customerService_.retrieve(id); // Пытаемся получить бонусный счет, создаем если не существует let bonusAccount; try { bonusAccount = await this.bonusService_.getBonusAccount(id); } catch (error) { // Если счет не найден, создаем его bonusAccount = await this.bonusService_.createBonusAccount(id, { metadata: { created_at_verification: true, customer_email: customer.email, has_account: customer.has_account || false } }); } // Обновляем метаданные бонусного счета await this.bonusService_.updateBonusAccount(id, { metadata: { ...bonusAccount.metadata, email_verified: true, verified_at: new Date() } }); } catch (error) { console.error("Failed to update bonus account after verification:", error); } }; this.handleCustomerUpdated = async (data) => { var _a; const { id } = data; try { const customer = await this.customerService_.retrieve(id); // Пытаемся получить бонусный счет, создаем если не существует let bonusAccount; try { bonusAccount = await this.bonusService_.getBonusAccount(id); } catch (error) { // Если счет не найден, создаем его bonusAccount = await this.bonusService_.createBonusAccount(id, { metadata: { created_at_update: true, customer_email: customer.email, has_account: customer.has_account || false } }); return; } // Обновляем метаданные при изменении важных данных клиента if (customer.email !== ((_a = bonusAccount.metadata) === null || _a === void 0 ? void 0 : _a.customer_email)) { await this.bonusService_.updateBonusAccount(id, { metadata: { ...bonusAccount.metadata, customer_email: customer.email, email_updated_at: new Date() } }); } } catch (error) { console.error("Failed to sync bonus account with customer update:", error); } }; this.manager_ = manager; this.customerService_ = customerService; this.bonusService_ = bonusService; this.eventBus_ = eventBusService; // Подписываемся на создание клиента this.eventBus_.subscribe("customer.created", this.handleCustomerCreated.bind(this)); // Подписываемся на подтверждение email клиента this.eventBus_.subscribe("customer.password_reset", this.handleCustomerVerified.bind(this)); this.eventBus_.subscribe("customer.updated", this.handleCustomerUpdated.bind(this)); } } exports.default = CustomerSubscriber; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3Vic2NyaWJlcnMvY3VzdG9tZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFNLGtCQUFrQjtJQU10QixZQUFZLEVBQ1YsT0FBTyxFQUNQLGVBQWUsRUFDZixlQUFlLEVBQ2YsWUFBWSxFQUNiO1FBY0QsMEJBQXFCLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUE7WUFFbkIsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFFekQsMkNBQTJDO2dCQUMzQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtvQkFDdkQsUUFBUSxFQUFFO3dCQUNSLHVCQUF1QixFQUFFLElBQUk7d0JBQzdCLGNBQWMsRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDOUIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSzt3QkFDMUMsZUFBZSxFQUFFLHVCQUF1QjtxQkFDekM7aUJBQ0YsQ0FBQyxDQUFBO2dCQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2dCQUVqRSxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO29CQUNqRCxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUU7aUJBQ3pCLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUE7Z0JBQ3ZELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENB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