@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
32 lines • 2.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.POST = POST;
const utils_1 = require("@medusajs/framework/utils");
const error_handler_1 = require("../../../../../utils/error-handler");
const response_handler_1 = require("../../../../../utils/response-handler");
// POST /admin/loyalty-points/bulk/credit — kicks off an async bulk loyalty-points credit from
// a CSV. The heavy work (download -> parse -> resolve customer -> credit -> error CSV -> feed
// notification) runs in the `loyalty.bulk_import` subscriber; this route just validates,
// emits the event, and returns.
async function POST(req, res) {
try {
const userService = req.scope.resolve(utils_1.Modules.USER);
const eventBus = req.scope.resolve(utils_1.Modules.EVENT_BUS);
const userId = req.auth_context.actor_id;
const user = await userService.retrieveUser(userId);
await eventBus.emit({
name: "loyalty.bulk_import",
data: {
s3_url: req.validatedBody.s3_url,
requested_by_id: userId,
requested_by_name: [user.first_name, user.last_name].filter(Boolean).join(" ") ||
user.email,
},
});
(0, response_handler_1.sendSuccessResponse)(res, { success: true }, "Loyalty import initiated. You will be notified via feed when complete.");
}
catch (error) {
(0, error_handler_1.handleError)(error, res);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2xveWFsdHktcG9pbnRzL2J1bGsvY3JlZGl0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0Esb0JBOEJDO0FBeENELHFEQUFvRDtBQUVwRCxzRUFBaUU7QUFDakUsNEVBQTRFO0FBRzVFLDhGQUE4RjtBQUM5Riw4RkFBOEY7QUFDOUYseUZBQXlGO0FBQ3pGLGdDQUFnQztBQUN6QixLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUF1RCxFQUN2RCxHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEIsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTTtnQkFDaEMsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLGlCQUFpQixFQUNmLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQzNELElBQUksQ0FBQyxLQUFLO2FBQ2I7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFBLHNDQUFtQixFQUNqQixHQUFHLEVBQ0gsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQ2pCLHdFQUF3RSxDQUN6RSxDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDIn0=