From 303a9464688e91326ba95a563138dc3c17fe03b4 Mon Sep 17 00:00:00 2001 From: alephseven Date: Tue, 8 Apr 2025 09:24:08 +0530 Subject: [PATCH] Added reset account feature for a user based on category --- .../server/controllers/user-controller.ts | 16 ++++++++++ .../server/routes/index.ts | 12 +++++++ .../server/services/user-service.ts | 32 +++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/plugins/unified-beckn-energy/server/controllers/user-controller.ts b/plugins/unified-beckn-energy/server/controllers/user-controller.ts index 4a4646a2..b5a0361c 100644 --- a/plugins/unified-beckn-energy/server/controllers/user-controller.ts +++ b/plugins/unified-beckn-energy/server/controllers/user-controller.ts @@ -295,4 +295,20 @@ export default ({ strapi }: { strapi: Strapi }) => ({ ctx.badRequest(error.message); } }, + async resetAccount(ctx) { + try { + const userService = strapi + .plugin("unified-beckn-energy") + .service("userService"); + const userId = ctx.state.user?.id; + const { categoryId } = ctx.request.body; + const result = await userService.resetAccount( + userId, + Number(categoryId) + ); + ctx.body = result; + } catch (error) { + ctx.badRequest(error.message); + } + }, }); diff --git a/plugins/unified-beckn-energy/server/routes/index.ts b/plugins/unified-beckn-energy/server/routes/index.ts index 4aa2cb68..040c6931 100644 --- a/plugins/unified-beckn-energy/server/routes/index.ts +++ b/plugins/unified-beckn-energy/server/routes/index.ts @@ -210,6 +210,18 @@ export default [ auth: false } }, + //reset user account by domain + { + method: "POST", + path: "/reset-account", + handler: "userController.resetAccount", + config: { + policies: [], + middlewares: ["plugin::unified-beckn-energy.authMiddleware"], + auth: false + } + }, + //utilities { method: "GET", diff --git a/plugins/unified-beckn-energy/server/services/user-service.ts b/plugins/unified-beckn-energy/server/services/user-service.ts index a940c0f8..ba9f83b1 100644 --- a/plugins/unified-beckn-energy/server/services/user-service.ts +++ b/plugins/unified-beckn-energy/server/services/user-service.ts @@ -1299,5 +1299,37 @@ export default ({ strapi }: { strapi: Strapi }) => ({ }); }); return activeRentals.length > 0; + }, + + async resetAccount(userId: number, categoryId: number) { + try { + + if(!categoryId) { + throw new Error('Category not provided to reset account!'); + } + const orders = await strapi.entityService.findMany('api::order-bap.order-bap', { + filters: { + user: userId, + category: categoryId, + }, + fields: ['id'], + }); + + console.log(`Found ${orders.length} orders to delete`, orders.map((order) => order.id)); + let deletedCount = 0; + + // Delete each order one by one since delete many does not exist in strapi + for (const order of orders) { + await strapi.entityService.delete('api::order-bap.order-bap', order.id); + deletedCount++; + } + + return { + success: true, + deletedCount, + }; + } catch (error) { + throw new Error(`Failed to reset account: ${error.message}`); + } } });