feat: implement customer profile management and business application features
- Added customer profile controller with endpoints for retrieving, updating, and deactivating user profiles. - Introduced address model and routes for managing user addresses. - Created business application model and service for handling business applications, including approval and rejection processes. - Developed business contact and credit account models to support business customer functionalities. - Implemented settlement term model for managing payment terms. - Added email templates for business application notifications (approved, rejected, received, and status changes). - Enhanced validation schemas for customer and business inputs to ensure data integrity. - Created unit tests for business application service and validation schemas to ensure functionality and correctness. - Added migration scripts to set up new database tables and columns for customer and business features.
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
const r=require("express").Router(); const c=require("../controllers/address.controller"); const {authenticate}=require("../middleware/auth.middleware"); const validate=require("../middleware/validate.middleware"); const s=require("../validation/customer.schemas");
|
||||
r.use(authenticate); r.get("/",c.list);r.post("/",validate(s.addressCreate),c.create);r.get("/:id",c.get);r.patch("/:id",validate(s.addressUpdate),c.update);r.delete("/:id",c.remove);module.exports=r;
|
||||
@@ -0,0 +1 @@
|
||||
const r=require("express").Router();const c=require("../controllers/business.controller");const {authenticate}=require("../middleware/auth.middleware");const {checkPermission}=require("../middleware/permission.middleware");const validate=require("../middleware/validate.middleware");const s=require("../validation/business.schemas");r.use(authenticate);r.get("/applications",checkPermission("business.applications.read",{custom:true}),c.adminListApplications);r.get("/applications/:id",checkPermission("business.applications.read",{custom:true}),c.adminGetApplication);r.post("/applications/:id/approve",checkPermission("business.applications.review",{custom:true}),c.approve);r.post("/applications/:id/reject",checkPermission("business.applications.review",{custom:true}),validate(s.reject),c.reject);r.get("/accounts",checkPermission("business.accounts.read",{custom:true}),c.adminListBusinesses);r.patch("/accounts/:id/status",checkPermission("business.accounts.update",{custom:true}),validate(s.status),c.setStatus);r.patch("/accounts/:id/credit",checkPermission("business.credit.manage",{custom:true}),validate(s.credit),c.setCredit);r.patch("/accounts/:id/settlement-term",checkPermission("business.settlement.manage",{custom:true}),validate(s.settlement),c.setSettlement);module.exports=r;
|
||||
@@ -0,0 +1 @@
|
||||
const r=require("express").Router();const c=require("../controllers/business.controller");const {authenticate}=require("../middleware/auth.middleware");const validate=require("../middleware/validate.middleware");const s=require("../validation/business.schemas");const customerSchemas=require("../validation/customer.schemas");r.use(authenticate);r.post("/applications",validate(s.application),c.apply);r.get("/applications/me",c.myApplications);r.get("/applications/:id",c.getApplication);r.get("/me",c.getMe);r.patch("/me",validate(s.businessUpdate),c.updateMe);r.post("/me/contacts",validate(s.contact),c.addContact);r.post("/me/addresses",validate(customerSchemas.addressCreate),c.addAddress);module.exports=r;
|
||||
@@ -23,6 +23,9 @@ const notificationRoutes = require("./notification.routes");
|
||||
const adminAuthRoutes = require("./adminAuth.routes");
|
||||
const riderAuthRoutes = require("./riderAuth.routes");
|
||||
const adminUserRoutes = require("./adminUser.routes");
|
||||
const addressRoutes = require("./address.routes");
|
||||
const businessRoutes = require("./business.routes");
|
||||
const adminBusinessRoutes = require("./adminBusiness.routes");
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@@ -38,5 +41,8 @@ router.use("/permissions", permissionRoutes);
|
||||
router.use("/admin/auth", adminAuthRoutes);
|
||||
router.use("/rider/auth", riderAuthRoutes);
|
||||
router.use("/admin/users", adminUserRoutes);
|
||||
router.use("/addresses", addressRoutes);
|
||||
router.use("/business", businessRoutes);
|
||||
router.use("/admin/business", adminBusinessRoutes);
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -24,6 +24,11 @@ const { sensitiveLimiter } = require("../middleware/rateLimit.middleware");
|
||||
const validate = require("../middleware/validate.middleware");
|
||||
const schemas = require("../validation/auth.schemas");
|
||||
const { requireOwnership } = require("../middleware/permission.middleware");
|
||||
const customerProfile = require("../controllers/customerProfile.controller");
|
||||
const customerSchemas = require("../validation/customer.schemas");
|
||||
|
||||
router.get("/me", authenticate, customerProfile.getMe);
|
||||
router.patch("/me", authenticate, validate(customerSchemas.profileUpdate), customerProfile.updateMe);
|
||||
|
||||
router.post("/req-reset-password", sensitiveLimiter, validate(schemas.forgot), authController.forgotPassword);
|
||||
|
||||
|
||||
@@ -18,9 +18,13 @@ const {
|
||||
|
||||
const { authorizedAccountType, checkPermission } = require("../middleware/permission.middleware");
|
||||
const PERMISSIONS = require("../constants/permissions");
|
||||
const customerProfile = require("../controllers/customerProfile.controller");
|
||||
const validate = require("../middleware/validate.middleware");
|
||||
const customerSchemas = require("../validation/customer.schemas");
|
||||
|
||||
router.get("/me", authenticate, userController.getCurrentUser);
|
||||
router.patch("/me", authenticate, userController.updateCurrentUser);
|
||||
router.post("/me/deactivate", authenticate, validate(customerSchemas.deactivate), customerProfile.deactivate);
|
||||
|
||||
|
||||
router.post(
|
||||
|
||||
Reference in New Issue
Block a user