UNPKG

@tomei/customer-base

Version:

Tomei Customer Base Package

61 lines 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomerBaseSyncService = void 0; const sequelize_1 = require("sequelize"); const registered_system_enum_1 = require("../../enum/registered-system.enum"); const models_1 = require("../../models"); class CustomerBaseSyncService { constructor(writer, syncLogger) { this.writer = writer; this.syncLogger = syncLogger; } async getTargetSystems(sourceSystemCode) { try { const systems = await models_1.CustomerRegisteredSystemModel.findAll({ where: { IsActiveYN: registered_system_enum_1.IsSystemActiveEnum.Y, WantsSyncYN: registered_system_enum_1.IsSystemWantsSyncEnum.Y, SystemCode: { [sequelize_1.Op.not]: sourceSystemCode }, }, attributes: ['SystemCode'], }); return systems.map((s) => s.SystemCode); } catch (err) { console.error('[CustomerBaseSyncService.getTargetSystems] failed', { sourceSystemCode, error: err === null || err === void 0 ? void 0 : err.message, }); throw err; } } async sync(customer, triggeredBy, eventType, dbTransaction) { var _a; const ctx = { CustomerId: customer.CustomerId, SourceSystemCode: customer.getSourceSystemCode(), TriggeredBy: triggeredBy, EventType: eventType, }; try { const addr = (_a = customer.getAddress) === null || _a === void 0 ? void 0 : _a.call(customer); const payload = Object.assign(Object.assign({}, customer.getSyncPayload()), { Address: addr ? [addr] : [] }); await this.writer.write(payload, dbTransaction); const targetSystemCodes = await this.getTargetSystems(ctx.SourceSystemCode); await this.syncLogger.logSyncTargets({ CustomerId: ctx.CustomerId, SourceSystemCode: ctx.SourceSystemCode, TargetSystemCodes: targetSystemCodes, TriggeredBy: triggeredBy, EventType: eventType, dbTransaction, }); } catch (err) { console.error('[CustomerBaseSyncService.sync] failed', Object.assign(Object.assign({}, ctx), { error: err === null || err === void 0 ? void 0 : err.message })); throw err; } } } exports.CustomerBaseSyncService = CustomerBaseSyncService; //# sourceMappingURL=customer-base-sync-service.js.map