diff --git a/Utils/jwtToken.js b/Utils/jwtToken.js
index 9ac872c..4193dec 100644
--- a/Utils/jwtToken.js
+++ b/Utils/jwtToken.js
@@ -16,6 +16,7 @@ const sendToken = (user, statusCode, res) => {
success: true,
userId: user._id,
+
// userName: user.name,
// userEmail: user.email,
// userPhone: user.phone,
diff --git a/app.js b/app.js
index 6adea88..074ed9c 100644
--- a/app.js
+++ b/app.js
@@ -164,13 +164,14 @@ import AffiliateRoute from "./resources/Affiliate&Coupon/Affiliate/AffiliateRout
//Blog Routes
import BlogRoute from "./resources/Blog/BlogRoute.js";
// Panel Routes
-import PanelRoute from "./resources/Panels/PanelRoutes.js"
+import PanelRoute from "./resources/Panels/PanelRoutes.js";
//Coupon Routes
import CouponRoute from "./resources/Affiliate&Coupon/Coupon/CouponRoute.js";
//short urls
// import ShortUrlRouter from "./resources/Businesses/Short_Urls/ShortUrlRoute.js";
//support Ticket
import SupportRouter from "./resources/Supports/supportRoute.js";
+// Point of Sale
app.use("/api/v1/", user);
//Product
@@ -227,7 +228,6 @@ app.use("/api/v1/blog", BlogRoute);
// panels
app.use("/api/panel", PanelRoute);
-
//config specialty
// app.use("/api/config/specialty", SpecialtiesRouter);
//specialties
@@ -237,5 +237,8 @@ app.use("/api/panel", PanelRoute);
//short urls
// app.use("/api/shorturl", ShortUrlRouter);
//Support
+
+// Email CMS
+// app.use("/api", RegisterEmail);
app.use("/api", SupportRouter);
export default app;
diff --git a/package-lock.json b/package-lock.json
index 9bafc1a..a1f5970 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5417,7 +5417,8 @@
"cloudinary-core": {
"version": "2.12.3",
"resolved": "https://registry.npmjs.org/cloudinary-core/-/cloudinary-core-2.12.3.tgz",
- "integrity": "sha512-Ll4eDzcrIVn4zCttMh3Mdi+KNz07p5EEjBT2PQSRx8Eok1lKPt3uBBenOk/w88RKK3B8SFIWcEe/mN4BHQ0p8A=="
+ "integrity": "sha512-Ll4eDzcrIVn4zCttMh3Mdi+KNz07p5EEjBT2PQSRx8Eok1lKPt3uBBenOk/w88RKK3B8SFIWcEe/mN4BHQ0p8A==",
+ "requires": {}
},
"color-convert": {
"version": "2.0.1",
@@ -6660,7 +6661,8 @@
"multer-storage-cloudinary": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/multer-storage-cloudinary/-/multer-storage-cloudinary-4.0.0.tgz",
- "integrity": "sha512-25lm9R6o5dWrHLqLvygNX+kBOxprzpmZdnVKH4+r68WcfCt8XV6xfQaMuAg+kUE5Xmr8mJNA4gE0AcBj9FJyWA=="
+ "integrity": "sha512-25lm9R6o5dWrHLqLvygNX+kBOxprzpmZdnVKH4+r68WcfCt8XV6xfQaMuAg+kUE5Xmr8mJNA4gE0AcBj9FJyWA==",
+ "requires": {}
},
"mute-stream": {
"version": "0.0.8",
@@ -7893,7 +7895,8 @@
"ws": {
"version": "7.4.6",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "requires": {}
},
"xregexp": {
"version": "2.0.0",
diff --git a/resources/Affiliate&Coupon/Affiliate/AffiliateRoute.js b/resources/Affiliate&Coupon/Affiliate/AffiliateRoute.js
index ccf9b66..e2570d1 100644
--- a/resources/Affiliate&Coupon/Affiliate/AffiliateRoute.js
+++ b/resources/Affiliate&Coupon/Affiliate/AffiliateRoute.js
@@ -20,49 +20,49 @@ const router = express.Router();
router.post(
"/create",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
createAffiliate
);
router.get(
"/getall",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
listAllAffiliate
);
router.get(
"/getone/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
getOneAffiliate
);
router.patch(
"/edit/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
editAffiliate
);
router.patch(
"/suspend",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
suspendAffiliate
);
router.post(
"/pay/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
payAffiliate
);
router.get(
"/getpay/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
getOneAffiliateForPay
);
router.get(
"/history/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
affiliatePayHistory
);
diff --git a/resources/Affiliate&Coupon/Coupon/CouponRoute.js b/resources/Affiliate&Coupon/Coupon/CouponRoute.js
index bead939..3c15d0a 100644
--- a/resources/Affiliate&Coupon/Coupon/CouponRoute.js
+++ b/resources/Affiliate&Coupon/Coupon/CouponRoute.js
@@ -20,38 +20,38 @@ const router = express.Router();
router.get(
"/getall",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
listAllCoupon
);
router.patch(
"/create",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
createCoupon
);
router.get(
"/getaffiliate",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
listAffiliateCoupon
);
router.patch(
"/edit/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
editCoupon
);
router.get(
"/getone/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
getOneCoupon
);
router.get("/validcoupon/:coupon", validateCoupon);
router.patch(
"/suspend",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
suspendCoupon
);
router.patch(
@@ -69,7 +69,7 @@ router.patch(
router.get(
"/history/:id",
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
couponPayHistory
);
diff --git a/resources/Banner/BannerRouter.js b/resources/Banner/BannerRouter.js
index cf8d904..5d61bb0 100644
--- a/resources/Banner/BannerRouter.js
+++ b/resources/Banner/BannerRouter.js
@@ -11,13 +11,21 @@ const router = express.Router();
router
.route("/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addBanner);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addBanner);
router.route("/getBanners").get(getBanner);
router
.route("/update/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateBanner);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateBanner
+ );
router
.route("/delete/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteBanner);
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteBanner
+ );
export default router;
diff --git a/resources/Blog/BlogRoute.js b/resources/Blog/BlogRoute.js
index 9efaddc..fcb1b34 100644
--- a/resources/Blog/BlogRoute.js
+++ b/resources/Blog/BlogRoute.js
@@ -1,30 +1,33 @@
import express from "express";
-import { createBlog, getAllBlog, getOneBlog, deleteBlog, deleteImageFromCloudinary, updateBlog } from "./BlogController.js";
+import {
+ createBlog,
+ getAllBlog,
+ getOneBlog,
+ deleteBlog,
+ deleteImageFromCloudinary,
+ updateBlog,
+} from "./BlogController.js";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
const router = express.Router();
router
.route("/create")
- .post(isAuthenticatedUser, authorizeRoles("admin"), createBlog);
-router
- .route("/getallblog")
- .get(getAllBlog);
-router
- .route("/getoneblog/:id")
- .get(getOneBlog);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), createBlog);
+router.route("/getallblog").get(getAllBlog);
+router.route("/getoneblog/:id").get(getOneBlog);
router
.route("/deleteblog/:id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteBlog);
+ .delete(isAuthenticatedUser, authorizeRoles("admin", "Employee"), deleteBlog);
router
.route("/deleteImage/jatinMor/Blog/:public_id")
.delete(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
deleteImageFromCloudinary
);
- router
+router
.route("/updateblog/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateBlog);
+ .patch(isAuthenticatedUser, authorizeRoles("admin", "Employee"), updateBlog);
export default router;
diff --git a/resources/Category/categoryRoutes.js b/resources/Category/categoryRoutes.js
index f8d6068..66c8cc5 100644
--- a/resources/Category/categoryRoutes.js
+++ b/resources/Category/categoryRoutes.js
@@ -10,13 +10,21 @@ const router = express.Router();
router
.route("/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addCategory);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addCategory);
router.route("/getCategories").get(getCategories);
router
.route("/update/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateCategory);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateCategory
+ );
router
.route("/delete/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteCategory);
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteCategory
+ );
export default router;
diff --git a/resources/Content/ContentRoutes.js b/resources/Content/ContentRoutes.js
index 71146c0..8da5e11 100644
--- a/resources/Content/ContentRoutes.js
+++ b/resources/Content/ContentRoutes.js
@@ -14,7 +14,7 @@ import {
updateRefundPolicy,
AddAboutUs,
getAboutUs,
- updateAboutUs
+ updateAboutUs,
} from "./ContentController.js";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
@@ -22,45 +22,69 @@ const router = express.Router();
router
.route("/terms-and-conditions")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddTermsAndConditions);
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ AddTermsAndConditions
+ );
router.route("/terms-and-conditions").get(getTermsAndCondition);
router
.route("/terms-and-condition-update")
.patch(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
updateTermsAndConditions
);
router
.route("/privacy-and-policy")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddPrivacyAndPolicy);
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ AddPrivacyAndPolicy
+ );
router.route("/privacy-and-policy").get(getPrivacyPolicy);
router
.route("/privacy-and-policy-update")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updatePrivacyPolicy);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updatePrivacyPolicy
+ );
router
.route("/shipping-and-policy")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddShipping);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddShipping);
router.route("/shipping-and-policy").get(getShipping);
router
.route("/shipping-and-policy-update")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateShipping);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateShipping
+ );
//refund Policy
router.route("/refund-policy").get(getRefundPolicy);
router
.route("/refund-policy")
- .post(isAuthenticatedUser, authorizeRoles("admin"), RefundPolicy);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), RefundPolicy);
router
.route("/refund-policy-update")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateRefundPolicy);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateRefundPolicy
+ );
//about us
router
.route("/about-us")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddAboutUs);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddAboutUs);
router.route("/about-us").get(getAboutUs);
router
.route("/about-us-update")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateAboutUs);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateAboutUs
+ );
export default router;
diff --git a/resources/Departure/DepartureRoute.js b/resources/Departure/DepartureRoute.js
index 199155e..acb096f 100644
--- a/resources/Departure/DepartureRoute.js
+++ b/resources/Departure/DepartureRoute.js
@@ -1,18 +1,16 @@
-
-import express from 'express'
+import express from "express";
import { AddNewFlight, FindAllFlight } from "./DepartureController.js";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
-const router = express.Router()
-
-router.route("/flight/new").post(isAuthenticatedUser, authorizeRoles("admin"), AddNewFlight)
-router.route("/flight/getAll").get(isAuthenticatedUser, authorizeRoles("admin"), FindAllFlight)
-
-
-
-
+const router = express.Router();
+router
+ .route("/flight/new")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddNewFlight);
+router
+ .route("/flight/getAll")
+ .get(isAuthenticatedUser, authorizeRoles("admin", "Employee"), FindAllFlight);
// router.route("/product/getAll/").get(getAllProduct)
-export default router
\ No newline at end of file
+export default router;
diff --git a/resources/Design/designRouter.js b/resources/Design/designRouter.js
index 6e65b6b..4eba34f 100644
--- a/resources/Design/designRouter.js
+++ b/resources/Design/designRouter.js
@@ -11,14 +11,14 @@
// router
// .route("/add")
-// .post(isAuthenticatedUser, authorizeRoles("admin"), addDesign);
+// .post(isAuthenticatedUser,authorizeRoles("admin", "Employee"), addDesign);
// router.route("/getDesigns").get(getDesign);
// router
// .route("/update/:_id")
-// .patch(isAuthenticatedUser, authorizeRoles("admin"), updateDesign);
+// .patch(isAuthenticatedUser,authorizeRoles("admin", "Employee"), updateDesign);
// router
// .route("/delete/:_id")
-// .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteDesign);
+// .delete(isAuthenticatedUser,authorizeRoles("admin", "Employee"), deleteDesign);
// export default router;
import express from "express";
@@ -61,13 +61,21 @@ const imageStorage = multer.diskStorage({
router
.route("/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addDesign);
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addDesign);
router.route("/getDesigns").get(getDesign);
router
.route("/update/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateDesign);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateDesign
+ );
router
.route("/delete/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteDesign);
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteDesign
+ );
export default router;
diff --git a/resources/EmailCMS/RegisterEmail/RegisterEmailRoutes.js b/resources/EmailCMS/RegisterEmail/RegisterEmailRoutes.js
new file mode 100644
index 0000000..b2270c9
--- /dev/null
+++ b/resources/EmailCMS/RegisterEmail/RegisterEmailRoutes.js
@@ -0,0 +1,21 @@
+import {
+ authorizeRoles,
+ isAuthenticatedUser,
+} from "../../../middlewares/auth.js";
+import {
+ GetRegisterEamilData,
+ RegisterEmailSend,
+} from "./registerEmailController.js";
+import express from "express";
+const router = express.Router();
+
+router
+ .route("/register-email")
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ RegisterEmailSend
+ );
+router.route("/get-email-data").get(GetRegisterEamilData);
+
+export default router;
diff --git a/resources/EmailCMS/RegisterEmail/registerEmailController.js b/resources/EmailCMS/RegisterEmail/registerEmailController.js
new file mode 100644
index 0000000..5b3b61b
--- /dev/null
+++ b/resources/EmailCMS/RegisterEmail/registerEmailController.js
@@ -0,0 +1,64 @@
+import { RegisterEmail } from "./registerEmailModal.js";
+
+export const RegisterEmailSend = async (req, res) => {
+ try {
+ if (!req?.user) return res.status(400).json({ message: "please login !" });
+ // console.log(req?.user)
+
+ req.body.user = req.user._id;
+ const registerEmailFindDoc = await RegisterEmail.find();
+ if (registerEmailFindDoc.length === 0) {
+ const registerEmaildata = await RegisterEmail.create({
+ subject: req.body.subject,
+ description: req.body.description,
+ addedBy: req.user._id,
+ });
+
+ if (registerEmaildata) {
+ return res.status(200).json({
+ success: true,
+ registerEmaildata,
+ message: "Added successfully",
+ });
+ }
+ } else {
+ const updateEmailData = await RegisterEmail.updateOne({
+ subject: req.body.subject,
+ description: req.body.description,
+ addedBy: req.user._id,
+ });
+ if (updateEmailData) {
+ return res.status(200).json({
+ success: true,
+ RegisterEmaildata: updateEmailData,
+ message: "updated successfully ",
+ });
+ }
+ }
+ } catch (error) {
+ res.status(500).json({
+ success: false,
+ message: error.message ? error.message : "Something went Wrong",
+ });
+ }
+};
+
+export const GetRegisterEamilData = async (req, res) => {
+ try {
+ // if (!req?.user) return res.status(400).json({ message: "please login !" });
+ // console.log(req?.user)
+
+ const registerEmaildata = await RegisterEmail.find();
+
+ res.status(200).json({
+ success: true,
+ registerEmaildata,
+ message: "Found successfully ",
+ });
+ } catch (error) {
+ res.status(500).json({
+ success: false,
+ message: error.message ? error.message : "Something went Wrong",
+ });
+ }
+};
diff --git a/resources/EmailCMS/RegisterEmail/registerEmailModal.js b/resources/EmailCMS/RegisterEmail/registerEmailModal.js
new file mode 100644
index 0000000..9efacc8
--- /dev/null
+++ b/resources/EmailCMS/RegisterEmail/registerEmailModal.js
@@ -0,0 +1,26 @@
+import mongoose from "mongoose";
+
+const { Schema, model } = mongoose;
+
+const registerEmailData = new mongoose.Schema(
+ {
+ subject: {
+ type: String,
+ required: [true, "Please Enter title "],
+ },
+ description: {
+ type: String,
+ maxLength: [500, "description cannot exceed 500 characters"],
+ required: [true, "Please Enter description"],
+ },
+ addedBy: {
+ type: mongoose.Schema.ObjectId,
+ ref: "User",
+ required: true,
+ },
+ },
+
+ { timestamps: true, versionKey: false }
+);
+
+export const RegisterEmail = mongoose.model("RegisterEmail", registerEmailData);
diff --git a/resources/Informations/InformationRoute.js b/resources/Informations/InformationRoute.js
index 0dc16da..729dde5 100644
--- a/resources/Informations/InformationRoute.js
+++ b/resources/Informations/InformationRoute.js
@@ -1,18 +1,27 @@
-
-import express from 'express'
+import express from "express";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
-import { AddNewnIformation, FindAllInformation } from './InformationController.js';
-
-const router = express.Router()
-
-router.route("/new").post(isAuthenticatedUser, authorizeRoles("admin"), AddNewnIformation)
-router.route("/getAll").get(isAuthenticatedUser, authorizeRoles("admin"), FindAllInformation)
-
-
-
+import {
+ AddNewnIformation,
+ FindAllInformation,
+} from "./InformationController.js";
+const router = express.Router();
+router
+ .route("/new")
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ AddNewnIformation
+ );
+router
+ .route("/getAll")
+ .get(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ FindAllInformation
+ );
// router.route("/product/getAll/").get(getAllProduct)
-export default router
\ No newline at end of file
+export default router;
diff --git a/resources/LoginImage/LoginImageRoute.js b/resources/LoginImage/LoginImageRoute.js
index 5c75634..27fe392 100644
--- a/resources/LoginImage/LoginImageRoute.js
+++ b/resources/LoginImage/LoginImageRoute.js
@@ -2,18 +2,27 @@ import express from "express";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
// import { addImage, deleteImage, getImage, updateImage } from "./RegistrationImageController.js";
-import { addImage, deleteImage, getImage, updateImage } from "./LoginImageController.js";
+import {
+ addImage,
+ deleteImage,
+ getImage,
+ updateImage,
+} from "./LoginImageController.js";
const router = express.Router();
router
- .route("/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addImage);
+ .route("/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addImage);
router.route("/getImage").get(getImage);
router
- .route("/update/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateImage);
+ .route("/update/:_id")
+ .patch(isAuthenticatedUser, authorizeRoles("admin", "Employee"), updateImage);
router
- .route("/delete/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteImage);
+ .route("/delete/:_id")
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteImage
+ );
export default router;
diff --git a/resources/Orders/PosCheckoutController.js b/resources/Orders/PosCheckoutController.js
new file mode 100644
index 0000000..ee069ad
--- /dev/null
+++ b/resources/Orders/PosCheckoutController.js
@@ -0,0 +1,225 @@
+import { shippingAddress } from "../ShippingAddresses/ShippingAddressModel.js";
+import { Order } from "./orderModel.js";
+
+import sendEmail from "../../Utils/sendEmail.js";
+//generate unique order id
+const generateUniqueOrderId = async () => {
+ const currentYear = new Date().getFullYear();
+ // Find the latest order to get the last serial number
+ const latestOrder = await Order.findOne({}, {}, { sort: { orderID: -1 } });
+ let serialNumber = 1;
+
+ if (latestOrder) {
+ const lastYear = parseInt(latestOrder.orderID.substring(0, 4), 10);
+ if (lastYear === currentYear) {
+ // If the last order was in the current year, increment the serial number
+ serialNumber = parseInt(latestOrder.orderID.substring(4), 10) + 1;
+ }
+ }
+ // Pad the serial number with zeros and concatenate with the current year
+ const paddedSerialNumber = serialNumber.toString().padStart(7, "0");
+ const orderId = `${currentYear}${paddedSerialNumber}`;
+ return orderId;
+};
+
+export const poscreateOrderCheckout = async (req, res) => {
+ try {
+ const { userr, address, cart, subtotal, orderType } = req.body;
+
+ // Perform validation
+ if (cart.length < 1)
+ return res.status(400).json({ message: "Cart is empty!" });
+ if (!address)
+ return res
+ .status(404)
+ .json({ message: "Please select a shipping address!" });
+ if (!subtotal)
+ return res
+ .status(404)
+ .json({ message: "Please provide the product subtotal!" });
+ if (!userr) return res.status(400).json({ message: "User is not defined" });
+
+ // Retrieve shipping address from database
+ let addss = await shippingAddress.findById(address);
+
+ let shipping = {
+ first_Name: addss.first_Name,
+ last_Name: addss?.last_Name,
+ phone_Number: addss?.phone_Number,
+ street: addss?.street,
+ city: addss?.city,
+ state: addss?.state,
+ postalCode: addss?.postalCode,
+ country: addss?.country,
+ company_name: addss?.company_name,
+ gst_number: addss?.gst_number,
+ addressId: address,
+ };
+
+ // Construct order items array
+ const orderItems = cart.map((item) => ({
+ product: item.product._id,
+ name: item.product.name,
+ variant_Name: item.variant.variant_Name,
+ price: Number(item.variant.price),
+ total_price: item.quantity * Number(item.variant.price),
+ image: item.product.image,
+ quantity: item.quantity,
+ gst_amount: Number(
+ (Number(item.variant.price) * item.variant.gst_Id?.tax) / 100
+ )?.toFixed(3),
+ total_gst_amount: Number(
+ Number(item.quantity) *
+ Number((Number(item.variant.price) * item.variant.gst_Id?.tax) / 100)
+ )?.toFixed(3),
+ gst_rate: item.variant.gst_Id?.tax,
+ tax_Name: item.variant?.gst_Id?.name,
+ product_Subtotal: Number(
+ Number(item.quantity * Number(item.variant.price)) +
+ Number(
+ Number(item.quantity) *
+ Number(
+ (Number(item.variant.price) * item.variant.gst_Id?.tax) / 100
+ )
+ )
+ ).toFixed(3),
+ }));
+
+ // Generate a unique order ID
+ const Id = await generateUniqueOrderId();
+
+ // Create the order document
+ const order = await Order.create({
+ orderID: Id,
+ total_amount: subtotal,
+ orderItems,
+ shippingInfo: shipping,
+ user: userr,
+ orderType,
+ paymentMode: "cod",
+ payment_status: "success",
+ isPaid: true,
+ paidAt: new Date().toISOString(),
+ });
+ // console.log(order);
+ // Find the user associated with the order
+ const orderWithUser = await Order.findById(order._id).populate("user");
+
+ if (!orderWithUser) {
+ return res
+ .status(404)
+ .json({ success: false, message: "Order not found" });
+ }
+
+ const user = orderWithUser.user;
+ const userEmail = user.email;
+
+ // Send email after order creation
+ await sendEmail({
+ to: userEmail,
+ from: `${process.env.SEND_EMAIL_FROM}`,
+ subject: `Your Order #${order?.orderID} Confirmation`,
+ html: `
Welcome to Smellika - Let the Shopping Begin!
+ Hi ${
+ order?.shippingInfo?.first_Name
+ },
+
+ Great news! Your order #${
+ order?.orderID
+ } has been confirmed. Here are the details
+Shipping Address : ${
+ order?.shippingInfo?.first_Name
+ } ${order?.shippingInfo?.last_Name} , ${order?.shippingInfo?.street} ${
+ order?.shippingInfo?.city
+ } ${order?.shippingInfo?.state} ${order?.shippingInfo?.country}, PIN-${
+ order?.shippingInfo?.postalCode
+ }, Phone Number: ${order?.shippingInfo?.phone_Number}
+ ${
+ order?.shippingInfo?.company_name
+ ? ",Company Name :" + order?.shippingInfo?.company_name + ""
+ : ""
+ } ${
+ order?.shippingInfo?.gst_number
+ ? ", GST_NO:" + order?.shippingInfo?.gst_number
+ : ""
+ }
+ Order Items :
+
+
+
+ S No. |
+
+ Product Name |
+ Variant |
+
+ Image |
+
+ Quantity |
+ Price |
+ GST Amount |
+
+ SubTotal |
+
+
+
+
+ ${order?.orderItems
+ ?.map(
+ (product, index) => `
+
+ ${
+ index + 1
+ } |
+
+ ${
+ product.name
+ } |
+ ${
+ product?.variant_Name
+ } |
+  |
+
+ ${
+ product.quantity
+ } |
+ ₹${
+ product.price
+ } |
+ ₹${
+ product?.gst_amount
+ } |
+ ₹${
+ product?.product_Subtotal
+ } |
+
+
+ `
+ )
+ .join("")}
+
+ Total Amount : |
+ ₹${
+ order?.total_amount
+ } |
+
+
+
+
+
+ Best regards,
+
+ Team Smellika`,
+ });
+
+ return res.status(201).json({ success: true, order });
+ } catch (error) {
+ console.error("Error creating order:", error);
+ return res
+ .status(500)
+ .json({ success: false, message: "Internal server error" });
+ }
+};
diff --git a/resources/Orders/RazerPayCheckoutController.js b/resources/Orders/RazerPayCheckoutController.js
index 2940c86..a99738f 100644
--- a/resources/Orders/RazerPayCheckoutController.js
+++ b/resources/Orders/RazerPayCheckoutController.js
@@ -31,6 +31,8 @@ const generateUniqueOrderId = async () => {
export const getRzpkey = async (req, res) => {
const { name, email } = req.user;
+ // console.log(name);
+ // console.log(email);
res.status(200).json({
success: true,
key: process.env.RAZERPAY_KEY_ID,
@@ -38,9 +40,36 @@ export const getRzpkey = async (req, res) => {
email,
});
};
+//point of sale order
+export const getRazerpayKey = async (req, res) => {
+ try {
+ const { name, email } = req.params;
+ // console.log("name", name, "email", email);
+ if (!name || !email) {
+ throw new Error("Name and email are required parameters");
+ }
+ res.status(200).json({
+ success: true,
+ key: process.env.RAZERPAY_KEY_ID,
+ name,
+ email,
+ });
+ } catch (error) {
+ console.error("Error in getRzpKey:", error);
+ res
+ .status(500)
+ .json({
+ success: false,
+ message: error.message || "Internal server error",
+ });
+ }
+};
+
export const checkout = async (req, res) => {
try {
- const { address, cart, subtotal } = req.body;
+ const { userr,address, cart, subtotal,orderType } = req.body;
+// console.log(req.body.cart[0].product);
+// console.log(req.body.cart[0].variant);
if (cart.length < 1)
return res.status(400).json({ message: "cart is empty!" });
if (!address)
@@ -55,12 +84,21 @@ export const checkout = async (req, res) => {
amount: Number(req.body.subtotal * 100),
currency: "INR",
};
+ // Determine the user ID
+ let User;
+ if (userr) {
+ User = userr; // Use provided user ID
+ } else {
+ User = req.user._id; // Use authenticated user ID
+ }
+ // console.log(User);
const order = await instance.orders.create(options);
+ // console.log(order);
//save order in database
if (order?.id) {
- const { email } = req.user;
- if (!email)
- return res.status(400).send({ message: "Please enter the email" });
+ // const { email } = req.user;
+ // if (!email)
+ // return res.status(400).send({ message: "Please enter the email" });
let addss = await shippingAddress.findById(address);
let shipping = {
@@ -161,15 +199,16 @@ export const checkout = async (req, res) => {
)?.toFixed(2),
}));
- // console.log("line", lineItems[0]);
+ // console.log("Order", orderItems[0]);
const Id = await generateUniqueOrderId();
const orders = await Order.create({
orderID: Id,
total_amount: subtotal,
orderItems,
shippingInfo: shipping,
- user: req.user._id,
+ user: User,
razorpay_order_id: order?.id,
+ orderType,
});
} else {
return res.status(400).json({
@@ -353,6 +392,167 @@ export const paymentVerification = async (req, res) => {
});
}
};
+
+// point of sale payment varification
+export const pospaymentVerification = async (req, res) => {
+ const { razorpay_order_id, razorpay_payment_id, razorpay_signature } =
+ req.body;
+
+ const body = razorpay_order_id + "|" + razorpay_payment_id;
+
+ const expectedSignature = crypto
+ .createHmac("sha256", process.env.RAZERPAY_SECRET_KEY)
+ .update(body.toString())
+ .digest("hex");
+
+ const isAuthentic = expectedSignature === razorpay_signature;
+
+ if (isAuthentic) {
+ // Database comes here
+ let findSameOrder = await Order.findOne({
+ razorpay_order_id: razorpay_order_id,
+ }).populate({
+ path: "user",
+ select: "name email -_id",
+ });
+ // console.log("findSameOrder", findSameOrder);
+ if (findSameOrder) {
+ (findSameOrder.razorpay_payment_id = razorpay_payment_id), // await Payment.create({
+ (findSameOrder.isPaid = true),
+ (findSameOrder.paidAt = Date.now()),
+ (findSameOrder.razorpay_signature = razorpay_signature);
+ // await Payment.create({
+ findSameOrder.payment_status = "success";
+
+ findSameOrder.orderStatus = "new";
+ await findSameOrder.save();
+ }
+ //send email to customer
+ // console.log("findSameOrder", findSameOrder);
+ await sendEmail({
+ to: `${findSameOrder?.user?.email}`, // Change to your recipient
+
+ from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender
+
+ subject: `Your Order #${findSameOrder?.orderID} Confirmation`,
+ html: ` Welcome to Smellika - Let the Shopping Begin!
+ Hi ${
+ findSameOrder?.shippingInfo?.first_Name
+ },
+
+ Great news! Your order #${
+ findSameOrder?.orderID
+ } has been confirmed. Here are the details
+ Shipping Address : ${
+ findSameOrder?.shippingInfo?.first_Name
+ } ${findSameOrder?.shippingInfo?.last_Name} , ${
+ findSameOrder?.shippingInfo?.street
+ } ${findSameOrder?.shippingInfo?.city} ${
+ findSameOrder?.shippingInfo?.state
+ } ${findSameOrder?.shippingInfo?.country}, PIN-${
+ findSameOrder?.shippingInfo?.postalCode
+ }, Phone Number: ${findSameOrder?.shippingInfo?.phone_Number}
+ ${
+ findSameOrder?.shippingInfo?.company_name
+ ? ",Company Name :" + findSameOrder?.shippingInfo?.company_name + ""
+ : ""
+ } ${
+ findSameOrder?.shippingInfo?.gst_number
+ ? ", GST_NO:" + findSameOrder?.shippingInfo?.gst_number
+ : ""
+ }
+ Order Items :
+
+
+
+ S No. |
+
+ Product Name |
+ Variant |
+
+ Image |
+
+ Quantity |
+ Price |
+ GST Amount |
+
+ SubTotal |
+
+
+
+
+ ${findSameOrder?.orderItems
+ ?.map(
+ (product, index) => `
+
+ ${
+ index + 1
+ } |
+
+ ${
+ product.name
+ } |
+ ${
+ product?.variant_Name
+ } |
+  |
+
+ ${
+ product.quantity
+ } |
+ ₹${
+ product.price
+ } |
+ ₹${
+ product?.gst_amount
+ } |
+ ₹${
+ product?.product_Subtotal
+ } |
+
+
+ `
+ )
+ .join("")}
+
+ Total Amount : |
+ ₹${
+ findSameOrder?.total_amount
+ } |
+
+
+
+
+
+ Best regards,
+
+ Team Smellika`,
+ });
+ // console.log("findSameOrder", findSameOrder);
+
+ // // findSameOrder.razorpay_payment_id=razorpay_payment_id,// await Payment.create({
+ // findOrder.paidAt = new Date(event.data.object.created * 1000);
+ // findOrder.isPaid = true;
+
+ // razorpay_signature: { type: String },
+ // razorpay_order_id,
+ // razorpay_payment_id,
+ // razorpay_signature,
+ // });
+
+ res.redirect(`https://admin.smellika.com/#/pos`);
+ // res.redirect(`http://localhost:3000/#/pos`);
+ } else {
+ res.status(400).json({
+ success: false,
+ });
+ }
+};
+
export const handlePayment = async (req, res) => {
try {
const { email } = req.user;
diff --git a/resources/Orders/orderModel.js b/resources/Orders/orderModel.js
index 1d7a78c..f40d843 100644
--- a/resources/Orders/orderModel.js
+++ b/resources/Orders/orderModel.js
@@ -124,7 +124,11 @@ const orderSchema = new mongoose.Schema(
enum: ["online", "cod"],
default: "online",
},
-
+ orderType: {
+ type: String,
+ enum: ["WebSite", "PointOfSale"],
+ default: "WebSite",
+ },
payment_status: {
type: String,
enum: ["pending", "success", "failed"],
diff --git a/resources/Orders/orderRoute.js b/resources/Orders/orderRoute.js
index 44cfa4b..f6afbb5 100644
--- a/resources/Orders/orderRoute.js
+++ b/resources/Orders/orderRoute.js
@@ -22,12 +22,17 @@ app.use(bodyParser.raw({ type: "application/json" }));
import { handlePayment, webhook } from "./StripeCheckOutController.js";
import {
checkout,
+ getRazerpayKey,
getRzpkey,
paymentVerification,
+ pospaymentVerification,
} from "./RazerPayCheckoutController.js";
+import { poscreateOrderCheckout } from "./PosCheckoutController.js";
const router = express.Router();
//checkout Routes-------------------------//
router.route("/checkout/").post(isAuthenticatedUser, createOrderCheckout);
+//checkout Routes-------------------------//
+router.route("/pos-checkout/").post(isAuthenticatedUser, poscreateOrderCheckout);
router.route("/clientid/get/").get(isAuthenticatedUser, getClientId);
router.route("/:orderID/capture/payment").post(captureOrderPayment);
// ---------------------------------------------------
@@ -46,24 +51,33 @@ router.route("/user/self").get(isAuthenticatedUser, getUserSelf);
//admin route
router
.route("/getAll/:status")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getAllOrder);
+ .get(isAuthenticatedUser, authorizeRoles("admin", "Employee"), getAllOrder);
router
.route("/getAll/")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getOrders);
+ .get(isAuthenticatedUser, authorizeRoles("admin", "Employee"), getOrders);
router.route("/getOne/:id").get(isAuthenticatedUser, getSingleOrder);
router
.route("/change/status/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateOrderStatusById);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateOrderStatusById
+ );
router
.route("/delete/:id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteOneOrder);
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteOneOrder
+ );
//RAZERPAY checkout
+router.route("/getRzpKey/:name/:email").get(isAuthenticatedUser, getRazerpayKey);
router.route("/getRzpKey/").get(isAuthenticatedUser, getRzpkey);
router.route("/Rzpcheckout/").post(isAuthenticatedUser, checkout);
router.route("/paymentverification").post(paymentVerification);
-
+router.route("/pos-paymentverification").post(pospaymentVerification);
// router.route("/product/getAll/").get(getAllProduct)
export default router;
diff --git a/resources/Panels/PanelRoutes.js b/resources/Panels/PanelRoutes.js
index bec781a..5b5cb46 100644
--- a/resources/Panels/PanelRoutes.js
+++ b/resources/Panels/PanelRoutes.js
@@ -1,59 +1,81 @@
import express from "express";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
-import { AddPanel1, AddPanel2, AddPanel3, AddPanel4, deleteImageFromCloudinary, getPanel1, getPanel2, getPanel3, getPanel4, updatePanel1, updatePanel2, updatePanel3, updatePanel4 } from "./PanelController.js";
+import {
+ AddPanel1,
+ AddPanel2,
+ AddPanel3,
+ AddPanel4,
+ deleteImageFromCloudinary,
+ getPanel1,
+ getPanel2,
+ getPanel3,
+ getPanel4,
+ updatePanel1,
+ updatePanel2,
+ updatePanel3,
+ updatePanel4,
+} from "./PanelController.js";
const router = express.Router();
router
- .route("/panel1/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddPanel1);
-router
- .route("/panel1/get")
- .get(getPanel1);
+ .route("/panel1/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddPanel1);
+router.route("/panel1/get").get(getPanel1);
router
- .route("/panel1/update/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updatePanel1);
+ .route("/panel1/update/:id")
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updatePanel1
+ );
router
- .route("/panel2/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddPanel2);
-router
- .route("/panel2/get")
- .get(getPanel2);
+ .route("/panel2/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddPanel2);
+router.route("/panel2/get").get(getPanel2);
router
- .route("/panel2/update/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updatePanel2);
+ .route("/panel2/update/:id")
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updatePanel2
+ );
router
- .route("/panel3/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddPanel3);
-router
- .route("/panel3/get")
- .get(getPanel3);
+ .route("/panel3/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddPanel3);
+router.route("/panel3/get").get(getPanel3);
router
- .route("/panel3/update/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updatePanel3);
+ .route("/panel3/update/:id")
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updatePanel3
+ );
router
- .route("/panel4/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddPanel4);
-router
- .route("/panel4/get")
- .get(getPanel4);
-
-router
- .route("/panel4/update/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updatePanel4);
+ .route("/panel4/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), AddPanel4);
+router.route("/panel4/get").get(getPanel4);
router
- .route("/deleteImage/jatinMor/panel/:public_id")
- .delete(
- isAuthenticatedUser,
- authorizeRoles("admin"),
- deleteImageFromCloudinary
- );
-export default router;
\ No newline at end of file
+ .route("/panel4/update/:id")
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updatePanel4
+ );
+
+router
+ .route("/deleteImage/jatinMor/panel/:public_id")
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteImageFromCloudinary
+ );
+export default router;
diff --git a/resources/Products/ProductRoute.js b/resources/Products/ProductRoute.js
index 2d61bfb..736d1f0 100644
--- a/resources/Products/ProductRoute.js
+++ b/resources/Products/ProductRoute.js
@@ -16,10 +16,18 @@ const router = express.Router();
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
router
.route("/product/create/")
- .post(isAuthenticatedUser, authorizeRoles("admin"), createProduct);
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ createProduct
+ );
router
.route("/product/getAll/admin/")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getAllProductAdmin);
+ .get(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ getAllProductAdmin
+ );
//change Product status
router.route("/product/admin/status/:id").patch(ChangeProductStatus);
@@ -35,15 +43,23 @@ router
router.route("/product/getOne/:id").get(getOneProduct);
router
.route("/product/update/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateProduct);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateProduct
+ );
router
.route("/product/delete/:id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteProduct);
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteProduct
+ );
router
.route("/product/deleteImage/jatinMor/product/:public_id")
.delete(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
deleteImageFromCloudinary
);
router.route("/products/category/:categoryName").get(getProductsByCategory);
diff --git a/resources/RegistrationImage/RegistrationImageRoute.js b/resources/RegistrationImage/RegistrationImageRoute.js
index 9eef3db..09542fa 100644
--- a/resources/RegistrationImage/RegistrationImageRoute.js
+++ b/resources/RegistrationImage/RegistrationImageRoute.js
@@ -1,18 +1,27 @@
import express from "express";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
-import { addImage, deleteImage, getImage, updateImage } from "./RegistrationImageController.js";
+import {
+ addImage,
+ deleteImage,
+ getImage,
+ updateImage,
+} from "./RegistrationImageController.js";
const router = express.Router();
router
- .route("/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addImage);
+ .route("/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addImage);
router.route("/getImage").get(getImage);
router
- .route("/update/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateImage);
+ .route("/update/:_id")
+ .patch(isAuthenticatedUser, authorizeRoles("admin", "Employee"), updateImage);
router
- .route("/delete/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteImage);
+ .route("/delete/:_id")
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteImage
+ );
export default router;
diff --git a/resources/SEO&Analytics/SEORouter.js b/resources/SEO&Analytics/SEORouter.js
index 33bf606..1803570 100644
--- a/resources/SEO&Analytics/SEORouter.js
+++ b/resources/SEO&Analytics/SEORouter.js
@@ -6,7 +6,10 @@ const router = express.Router();
router
.route("/new")
- .post(isAuthenticatedUser, authorizeRoles("admin"), AddNewSeoRequest);
-
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ AddNewSeoRequest
+ );
export default router;
diff --git a/resources/ShippingAddresses/ShippingAddressRoute.js b/resources/ShippingAddresses/ShippingAddressRoute.js
index 0cb1f1a..9ea8bf2 100644
--- a/resources/ShippingAddresses/ShippingAddressRoute.js
+++ b/resources/ShippingAddresses/ShippingAddressRoute.js
@@ -16,7 +16,7 @@ router
.route("/admin/new/:_id")
.post(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
AddshippingAddressByAdmin
);
@@ -28,7 +28,7 @@ router
.route("/user/address/:_id")
.get(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
getSingleUserSippingAddressForAdmin
);
diff --git a/resources/ShopPageImage/ShopPageImageRoute.js b/resources/ShopPageImage/ShopPageImageRoute.js
index 5117e62..5d469ad 100644
--- a/resources/ShopPageImage/ShopPageImageRoute.js
+++ b/resources/ShopPageImage/ShopPageImageRoute.js
@@ -1,20 +1,29 @@
import express from "express";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
-import { addImage, deleteImage, getImage, updateImage } from "./ShopPageImageController.js";
+import {
+ addImage,
+ deleteImage,
+ getImage,
+ updateImage,
+} from "./ShopPageImageController.js";
// import { addImage, deleteImage, getImage, updateImage } from "./RegistrationImageController.js";
// import { addImage, deleteImage, getImage, updateImage } from "./LoginImageController.js";
const router = express.Router();
router
- .route("/add")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addImage);
+ .route("/add")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addImage);
router.route("/getImage").get(getImage);
router
- .route("/update/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateImage);
+ .route("/update/:_id")
+ .patch(isAuthenticatedUser, authorizeRoles("admin", "Employee"), updateImage);
router
- .route("/delete/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteImage);
+ .route("/delete/:_id")
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteImage
+ );
export default router;
diff --git a/resources/Supports/supportRoute.js b/resources/Supports/supportRoute.js
index 3cacdb0..8cd5fda 100644
--- a/resources/Supports/supportRoute.js
+++ b/resources/Supports/supportRoute.js
@@ -1,5 +1,13 @@
import bodyParser from "body-parser";
-import { createSupport, deleteImageFromCloudinary, deleteSupport, getAllSupportTicket, getAllSupportTicketofuser, getOneSupportTicket, updateSupport } from "./supportController.js";
+import {
+ createSupport,
+ deleteImageFromCloudinary,
+ deleteSupport,
+ getAllSupportTicket,
+ getAllSupportTicketofuser,
+ getOneSupportTicket,
+ updateSupport,
+} from "./supportController.js";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
import express from "express";
@@ -10,21 +18,27 @@ app.use(bodyParser.raw({ type: "application/json" }));
const router = express.Router();
//checkout Routes-------------------------//
-router.route("/support/create/").post(isAuthenticatedUser,createSupport);
-router.route("/support/getAll/").get(isAuthenticatedUser, authorizeRoles("admin"),getAllSupportTicket);
-router.route("/support/userticket/").get(isAuthenticatedUser,getAllSupportTicketofuser);
+router.route("/support/create/").post(isAuthenticatedUser, createSupport);
+router
+ .route("/support/getAll/")
+ .get(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ getAllSupportTicket
+ );
+router
+ .route("/support/userticket/")
+ .get(isAuthenticatedUser, getAllSupportTicketofuser);
+router.route("/support/delete/:id").delete(deleteSupport);
+router
+ .route("/support/getOne/:id")
+ .get(isAuthenticatedUser, getOneSupportTicket);
+router.route("/support/update/:id").patch(isAuthenticatedUser, updateSupport);
router
- .route("/support/delete/:id")
- .delete( deleteSupport);
- router.route("/support/getOne/:id").get(isAuthenticatedUser, getOneSupportTicket);
- router
- .route("/support/update/:id")
- .patch(isAuthenticatedUser, updateSupport);
- router
.route("/support/deleteImage/jatinMor/CustomerSupport/:public_id")
.delete(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
deleteImageFromCloudinary
);
// ---------------------------------------------------------
diff --git a/resources/Tax/tax_routes.js b/resources/Tax/tax_routes.js
index 62149bb..7bcae6a 100644
--- a/resources/Tax/tax_routes.js
+++ b/resources/Tax/tax_routes.js
@@ -9,9 +9,15 @@ import {
} from "./tax_controller.js";
const router = Router();
-router.route("/add_tax").post(isAuthenticatedUser, authorizeRoles("admin"), addTax);
-router.route("/update_tax/:id").patch(isAuthenticatedUser, authorizeRoles("admin"), updateTax);
-router.route("/delete_tax/:id").delete(isAuthenticatedUser, authorizeRoles("admin"), deleteTax);
+router
+ .route("/add_tax")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addTax);
+router
+ .route("/update_tax/:id")
+ .patch(isAuthenticatedUser, authorizeRoles("admin", "Employee"), updateTax);
+router
+ .route("/delete_tax/:id")
+ .delete(isAuthenticatedUser, authorizeRoles("admin", "Employee"), deleteTax);
router.route("/view_tax/:id").get(isAuthenticatedUser, getTax);
router.route("/view_tax").get(isAuthenticatedUser, getTaxes);
export default router;
diff --git a/resources/Temple/FranchiseeRoute.js b/resources/Temple/FranchiseeRoute.js
index ced1fb4..03db4d6 100644
--- a/resources/Temple/FranchiseeRoute.js
+++ b/resources/Temple/FranchiseeRoute.js
@@ -1,24 +1,28 @@
import { Router } from "express";
const router = Router();
import {
- addFranchisee,
- getAllFranchisees,
- getFranchiseeById,
- updateFranchisee,
- deleteFranchiseeById,
- getFranchiseeByIdWithoutPopulate,
- getAllFranchiseesPopulated,
- // getAllFranchiseesPopulatedWithOption,
- addProductToFranchisee,
- // addGradeToFranchisee,
- getFranchiseeByIdPopulated,
- FranchiseeLogin,
- franchiseeForgotPassword,
- franchiseeUpdatePassword,
- getFransiDetails,
- EditFranchiseeProfile,
+ addFranchisee,
+ getAllFranchisees,
+ getFranchiseeById,
+ updateFranchisee,
+ deleteFranchiseeById,
+ getFranchiseeByIdWithoutPopulate,
+ getAllFranchiseesPopulated,
+ // getAllFranchiseesPopulatedWithOption,
+ addProductToFranchisee,
+ // addGradeToFranchisee,
+ getFranchiseeByIdPopulated,
+ FranchiseeLogin,
+ franchiseeForgotPassword,
+ franchiseeUpdatePassword,
+ getFransiDetails,
+ EditFranchiseeProfile,
} from "./Franchisee_controller.js";
-import { authorizeRoles, isAuthenticatedUser, isFranchiAuthenticated } from "../../middlewares/auth.js";
+import {
+ authorizeRoles,
+ isAuthenticatedUser,
+ isFranchiAuthenticated,
+} from "../../middlewares/auth.js";
import { FranchiseeVarificationFromAdmin } from "./Franchisee_controller.js";
import { FranchiseePriceLevelProduct } from "./Franchisee_controller.js";
import { createOrder } from "./Franchisee_controller.js";
@@ -29,44 +33,62 @@ import { getAllOrder } from "./Franchisee_controller.js";
router.get("/", getAllFranchisees);
router.get("/withpopulate", isAuthenticatedUser, getAllFranchiseesPopulated);
// router.get("/withpopulate/:option", getAllFranchiseesPopulatedWithOption);
-router.get("/withoutpopulate/:id", isAuthenticatedUser, getFranchiseeByIdWithoutPopulate);
-
-
-
+router.get(
+ "/withoutpopulate/:id",
+ isAuthenticatedUser,
+ getFranchiseeByIdWithoutPopulate
+);
router.get("/:id", isAuthenticatedUser, getFranchiseeById);
router.get("/arrayspopulate/:id", getFranchiseeByIdPopulated);
-router.post("/", isAuthenticatedUser, authorizeRoles("admin"), addFranchisee);
+router.post(
+ "/",
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ addFranchisee
+);
router.patch("/product/:id", isAuthenticatedUser, addProductToFranchisee);
// router.patch("/grade/:id", addGradeToFranchisee);
-router.patch("/:id", isAuthenticatedUser, authorizeRoles("admin"), updateFranchisee);
-router.delete("/:id", isAuthenticatedUser, authorizeRoles("admin"), deleteFranchiseeById);
+router.patch(
+ "/:id",
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateFranchisee
+);
+router.delete(
+ "/:id",
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteFranchiseeById
+);
//varify
-router.get("/admin/verify/:id", isAuthenticatedUser, authorizeRoles("admin"), FranchiseeVarificationFromAdmin);
-
+router.get(
+ "/admin/verify/:id",
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ FranchiseeVarificationFromAdmin
+);
// ---------franchisee Auth ----------------------////////
-franchiseeForgotPassword
+franchiseeForgotPassword;
router.post("/login", FranchiseeLogin);
-router.post("/password/forgot", franchiseeForgotPassword)
+router.post("/password/forgot", franchiseeForgotPassword);
router.get("/getDetails/me", isFranchiAuthenticated, getFransiDetails);
router.patch("/edit/self", isFranchiAuthenticated, EditFranchiseeProfile);
-
-router.route("/password/update").put(isFranchiAuthenticated, franchiseeUpdatePassword);
+router
+ .route("/password/update")
+ .put(isFranchiAuthenticated, franchiseeUpdatePassword);
//fetch product franchisee Wise
-router.route("/product/price_level").get(isFranchiAuthenticated, FranchiseePriceLevelProduct);
+router
+ .route("/product/price_level")
+ .get(isFranchiAuthenticated, FranchiseePriceLevelProduct);
//product order
-router.route("/order/create").post(isFranchiAuthenticated, createOrder)
-router.route("/order/getAll").get(isFranchiAuthenticated, getAllOrder)
-router.route("/order/getOne/:id").get(isFranchiAuthenticated, getSingleOrder)
-router.route("/order/edit/:id").put(isFranchiAuthenticated, EditOrderBeforePayment)
-
-
-
-
-
-
-
+router.route("/order/create").post(isFranchiAuthenticated, createOrder);
+router.route("/order/getAll").get(isFranchiAuthenticated, getAllOrder);
+router.route("/order/getOne/:id").get(isFranchiAuthenticated, getSingleOrder);
+router
+ .route("/order/edit/:id")
+ .put(isFranchiAuthenticated, EditOrderBeforePayment);
export default router;
diff --git a/resources/Testimonials/TestimonialRoute.js b/resources/Testimonials/TestimonialRoute.js
index 9dda39f..71facda 100644
--- a/resources/Testimonials/TestimonialRoute.js
+++ b/resources/Testimonials/TestimonialRoute.js
@@ -12,21 +12,27 @@ import {
const router = express.Router();
router.route("/new").post(isAuthenticatedUser, AddNewTestimonial);
-router
- .route("/getAll")
- .get(FindAllTestimonial);
+router.route("/getAll").get(FindAllTestimonial);
router.route("/getOne/:id").get(isAuthenticatedUser, FindOneTestimonial);
router
.route("/delete/:id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteTestimonial);
- router
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteTestimonial
+ );
+router
.route("/update/:id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updatetesTimonial);
- router
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updatetesTimonial
+ );
+router
.route("/deleteImage/GetSygnal/Testimonial/:public_id")
.delete(
isAuthenticatedUser,
- authorizeRoles("admin"),
+ authorizeRoles("admin", "Employee"),
deleteImageFromCloudinary
);
export default router;
diff --git a/resources/setting/Configration/Config_routes.js b/resources/setting/Configration/Config_routes.js
index 856b27c..9d79df1 100644
--- a/resources/setting/Configration/Config_routes.js
+++ b/resources/setting/Configration/Config_routes.js
@@ -14,8 +14,10 @@ import {
} from "./Config_controller.js";
import { upload } from "../../../Utils/cloudinary.js";
-import { authorizeRoles, isAuthenticatedUser } from "../../../middlewares/auth.js";
-
+import {
+ authorizeRoles,
+ isAuthenticatedUser,
+} from "../../../middlewares/auth.js";
const router = Router();
@@ -25,21 +27,52 @@ const router = Router();
// { name: "Adminlogo", maxCount: 1 },
// ]);
-// router.route("/gst").post(isAuthenticatedUser, authorizeRoles("admin"), addGST);
-router.route("/social").post(isAuthenticatedUser, authorizeRoles("admin"), addSocialMedia);
-router.route("/application/name").post(isAuthenticatedUser, authorizeRoles("admin"), addApplicationName);
-router.route("/copyright/message").post(isAuthenticatedUser, authorizeRoles("admin"), addCopyRightMessage);
+// router.route("/gst").post(isAuthenticatedUser,authorizeRoles("admin", "Employee"), addGST);
+router
+ .route("/social")
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ addSocialMedia
+ );
+router
+ .route("/application/name")
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ addApplicationName
+ );
+router
+ .route("/copyright/message")
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ addCopyRightMessage
+ );
-
-
-router.route("/address").post(isAuthenticatedUser, authorizeRoles("admin"), addAddress);
-// router.route("/scrollText").post(isAuthenticatedUser, authorizeRoles("admin"), addScrollText);
-router.route("/logo").post(isAuthenticatedUser, authorizeRoles("admin"), addLogo);
-router.route("/").get(getConfig).delete(isAuthenticatedUser, authorizeRoles("admin"), deleteConfig)
+router
+ .route("/address")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addAddress);
+// router.route("/scrollText").post(isAuthenticatedUser,authorizeRoles("admin", "Employee"), addScrollText);
+router
+ .route("/logo")
+ .post(isAuthenticatedUser, authorizeRoles("admin", "Employee"), addLogo);
+router
+ .route("/")
+ .get(getConfig)
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteConfig
+ );
router
.route("/termsofuse")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getTermsOfUse)
- .patch(isAuthenticatedUser, authorizeRoles("admin"), addTermsOfUse);
+ .get(isAuthenticatedUser, authorizeRoles("admin", "Employee"), getTermsOfUse)
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ addTermsOfUse
+ );
export default router;
diff --git a/resources/user/userController.js b/resources/user/userController.js
index 1114ec3..b6b39c9 100644
--- a/resources/user/userController.js
+++ b/resources/user/userController.js
@@ -7,10 +7,12 @@ import crypto from "crypto";
import cloudinary from "cloudinary";
import password from "secure-random-password";
import { Order } from "../Orders/orderModel.js";
+import { RegisterEmail } from "../EmailCMS/RegisterEmail/registerEmailModal.js";
+import { Config } from "../setting/Configration/Config_model.js";
// 1.Register a User
export const registerUser = async (req, res) => {
try {
- const { name, email, password, phone } = req.body;
+ const { name, email, password, phone, accessTo, role } = req.body;
// console.log("this is the password ", password, name, req.body);
let findUser = await User.findOne({ email });
@@ -37,30 +39,45 @@ export const registerUser = async (req, res) => {
email,
password,
phone,
+ role,
+ accessTo,
// avatar: {
// public_id: myCloud.public_id,
// url: myCloud.secure_url,
// },
});
+ // const emailData = await RegisterEmail.find();
+ // let emailSubject = emailData[0]?.subject;
+ // let emailDescription = emailData[0]?.description;
+ const config = await Config.find();
+ let appName = config[0]?.appName;
+
await sendEmail({
to: `${email}`, // Change to your recipient
from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender
subject: `Welcome to Smellika - Let the Shopping Begin!`,
- html: ` Welcome to Smellika - Let the Shopping Begin!
+ html: ` Welcome to ${appName} - Let the Shopping Begin!
Hey ${name},
- Welcome to Smellika! We're thrilled to have you on board. Get ready for a world of exclusive deals, exciting products, and seamless shopping experiences. Start exploring now!
+
+
+ Welcome to Smellika - Let the Shopping Begin!
+
- You can login into : https://smellika.com
+ You can login into :${
+ role === "Employee" || role === "admin"
+ ? `https://admin.smellika.com/`
+ : `https://smellika.com`
+ }
Below are your login credentials:
Email: ${email}
Password: ${password}
Happy shopping,
- Team Smellika`,
+ Team ${appName}`,
});
sendToken(user, 201, res);
} catch (e) {
@@ -353,3 +370,81 @@ export const getAllUser = catchAsyncErrors(async (req, res, next) => {
users,
});
});
+export const getAllEmployee = catchAsyncErrors(async (req, res, next) => {
+ // Assuming your User model is imported as 'User'
+ const employee = await User.find({ role: "Employee" });
+
+ res.status(200).json({
+ success: true,
+ employee,
+ });
+});
+export const deleteEmployeeById = catchAsyncErrors(async (req, res, next) => {
+ // console.log("request came here", req.params);
+ // Extract the employee ID from the request parameters
+ const { id } = req.params;
+
+ try {
+ // Find the employee by ID and delete it
+ const deletedEmployee = await User.findByIdAndDelete(id);
+
+ if (!deletedEmployee) {
+ // If the employee with the provided ID is not found, return an error
+ return res.status(404).json({
+ success: false,
+ message: "Employee not found",
+ });
+ }
+
+ // If deletion is successful, return success response
+ res.status(200).json({
+ success: true,
+ message: "Employee deleted successfully",
+ });
+ } catch (error) {
+ // Handle any errors that occur during deletion
+ return res.status(500).json({
+ success: false,
+ message: "Error deleting employee",
+ error: error.message,
+ });
+ }
+});
+// Update employee
+// Import necessary modules and set up your User model
+
+export const updateEmployeeById = catchAsyncErrors(async (req, res, next) => {
+ // Extract the employee ID from the request parameters
+ const { id } = req.params;
+
+ try {
+ // Find the employee by ID and update its fields
+ const updatedEmployee = await User.findByIdAndUpdate(
+ id,
+ { $set: req.body }, // Update fields based on the request body
+ { new: true } // Return the updated document
+ );
+
+ if (!updatedEmployee) {
+ // If the employee with the provided ID is not found, return an error
+ return res.status(404).json({
+ success: false,
+ message: "Employee not found",
+ });
+ }
+
+ // If update is successful, return success response with updated employee data
+ res.status(200).json({
+ success: true,
+ message: "Employee updated successfully",
+ employee: updatedEmployee,
+ });
+ } catch (error) {
+ // Handle any errors that occur during update
+ return res.status(500).json({
+ success: false,
+ message: "Error updating employee",
+ error: error.message,
+ });
+ }
+});
diff --git a/resources/user/userModel.js b/resources/user/userModel.js
index ab83174..65006d3 100644
--- a/resources/user/userModel.js
+++ b/resources/user/userModel.js
@@ -46,6 +46,7 @@ const userSchema = new mongoose.Schema(
type: String,
default: "user",
},
+ accessTo: {},
// createdAt: {
// type: Date,
// default: Date.now,
diff --git a/resources/user/userRoute.js b/resources/user/userRoute.js
index df3bec0..62aac03 100644
--- a/resources/user/userRoute.js
+++ b/resources/user/userRoute.js
@@ -11,6 +11,9 @@ import {
getSingleUser,
getAllUser,
getUserOrderForAdmin,
+ getAllEmployee,
+ deleteEmployeeById,
+ updateEmployeeById,
} from "./userController.js";
import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js";
@@ -30,14 +33,39 @@ router.route("/user/details").get(isAuthenticatedUser, getUserDetails);
router
.route("/admin/users")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getAllUser);
+ .get(isAuthenticatedUser, authorizeRoles("admin", "Employee"), getAllUser);
+router
+ .route("/admin/delete-employee/:id")
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteEmployeeById
+ );
+router
+ .route("/admin/employee")
+ .get(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ getAllEmployee
+ );
+router
+ .route("/admin/update-employee/:id")
+ .put(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateEmployeeById
+ );
router
.route("/admin/users/orders/:id")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getUserOrderForAdmin);
+ .get(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ getUserOrderForAdmin
+ );
router
.route("/admin/user/:id")
- .get(isAuthenticatedUser, authorizeRoles("admin"), getSingleUser);
+ .get(isAuthenticatedUser, authorizeRoles("admin", "Employee"), getSingleUser);
router.route("/user/password/update").put(isAuthenticatedUser, updatePassword);
diff --git a/resources/userAddress/useAddressRoute.js b/resources/userAddress/useAddressRoute.js
index 166aed6..0e04c6e 100644
--- a/resources/userAddress/useAddressRoute.js
+++ b/resources/userAddress/useAddressRoute.js
@@ -12,14 +12,26 @@ const router = express.Router();
router
.route("/addAddress")
- .post(isAuthenticatedUser, authorizeRoles("admin"), addUserAddress);
+ .post(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ addUserAddress
+ );
router.route("/getAddressess").get(getUserAddress);
router.route("/getOneAddress/:_id").get(getOneAddress);
router
.route("/updateAddress/:_id")
- .patch(isAuthenticatedUser, authorizeRoles("admin"), updateAddress);
+ .patch(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ updateAddress
+ );
router
.route("/deleteAddress/:_id")
- .delete(isAuthenticatedUser, authorizeRoles("admin"), deleteUserAddress);
+ .delete(
+ isAuthenticatedUser,
+ authorizeRoles("admin", "Employee"),
+ deleteUserAddress
+ );
export default router;