Skip to content

Commit 516da73

Browse files
authored
Merge branch 'demo-bn-19-07' into ft-chat
2 parents da839b9 + f85074f commit 516da73

16 files changed

+194
-31
lines changed

Diff for: package-lock.json

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: src/controllers/orderController.ts

+63
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Request, Response } from "express";
22
import Order from "../database/models/order";
33
import { findVendorByUserId } from "../services/orderStatus";
4+
import Product from "../database/models/product";
45

56
const allowedStatuses = ["pending", "delivered", "cancelled"];
67

@@ -61,6 +62,42 @@ export const modifyOrderStatus = async (req: Request, res: Response) => {
6162
};
6263

6364

65+
66+
export const getAllOrders = async (req:Request, res: Response) => {
67+
try{
68+
const userId = (req as any).token.id;
69+
const vendorId = req.params.vendorId;
70+
71+
let orders: any;
72+
73+
if(vendorId){
74+
const allOrders: any = await Order.findAll({
75+
include: [{ model: Product, as: 'products' }]
76+
});
77+
78+
if(allOrders.length === 0){
79+
return res.status(404).json({ message: "No orders found" });
80+
}
81+
82+
orders = allOrders.filter(order =>
83+
order.products.some(product => product.vendorId === vendorId)
84+
)
85+
86+
87+
} else {
88+
orders = await Order.findAll({ where: { userId }})
89+
90+
}
91+
92+
93+
return res.status(200).json(orders);
94+
} catch(error: any){
95+
console.error(error);
96+
return res.status(500).json({ error: error.message})
97+
}
98+
}
99+
100+
64101
export const getAllOrder = async (req: Request, res: Response) => {
65102
try {
66103
const response = await Order.findAll();
@@ -86,4 +123,30 @@ export const getOrder = async(req: Request, res: Response) => {
86123
}
87124
}
88125

126+
export const getSellerOrder = async (req: Request, res: Response) => {
127+
try {
128+
const vendorId = req.params.vendorId;
129+
const orders: any = await Order.findAll();
130+
if (!orders) {
131+
return res.status(404).json({ message: "No order found" });
132+
}
133+
134+
const products: any[] = [];
135+
for (const order of orders) {
136+
for (const data of order.products) {
137+
const single_product = await Product.findOne({
138+
where: { productId: data.productId },
139+
});
140+
if (single_product?.vendorId === vendorId) {
141+
products.push(order);
142+
}
143+
}
144+
}
145+
146+
res.status(200).send(products);
147+
} catch (error) {
148+
console.log(error);
149+
res.status(500).json({ message: "Internal error server" });
150+
}
151+
};
89152

Diff for: src/controllers/product.controller.ts

+23-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
import { Request, Response } from "express";
2-
3-
import { saveProduct, searchProducts, getAllProducts, getProductById, fetchSimilarProducts } from "../services/productService";
2+
import {
3+
saveProduct,
4+
searchProducts,
5+
getAllProducts,
6+
} from "../services/productService";
47
import Product from "../database/models/product";
5-
import { checkVendorModifyPermission, checkVendorPermission } from "../services/PermisionService";
6-
import { PRODUCT_ADDED, PRODUCT_REMOVED, PRODUCT_UPDATED, productLifecycleEmitter } from "../helpers/events";
8+
import CartItem from "../database/models/cartitem";
9+
import {
10+
checkVendorModifyPermission,
11+
checkVendorPermission,
12+
} from "../services/PermisionService";
13+
import {
14+
PRODUCT_ADDED,
15+
PRODUCT_REMOVED,
16+
PRODUCT_UPDATED,
17+
productLifecycleEmitter,
18+
} from "../helpers/events";
19+
import { Op } from "sequelize";
20+
import { ParsedQs } from "qs";
721
import Vendor from "../database/models/vendor";
822
import { request } from "http";
9-
import CartItem from "../database/models/cartitem";
23+
import { getProductById } from "../services/productService";
24+
import { fetchSimilarProducts } from "../services/productService";
25+
1026

1127
export const createProduct = async (req: Request, res: Response) => {
1228
try {
@@ -57,7 +73,7 @@ export const createProduct = async (req: Request, res: Response) => {
5773
if (!save) {
5874
return res.status(500).json({ error: "Failed to save data" });
5975
}
60-
76+
6177
productLifecycleEmitter.emit(PRODUCT_ADDED, data);
6278

6379
return res.status(201).json({ message: "Product Created", data: save });
@@ -93,7 +109,7 @@ export const similarProducts = async (req: Request, res: Response) => {
93109

94110
return res.status(404).json({ error: "Product not found" });
95111
}
96-
console.log("hhhhhggggggggghhhhh",product)
112+
97113
const category = product.category;
98114
const similarProducts = await fetchSimilarProducts(productId, category);
99115

Diff for: src/controllers/roles.controller.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ export const approveVendor = async (req: Request, res: Response) => {
1818
// Reject Vendor's Request
1919
export const rejectVendor = async (req: Request, res: Response) => {
2020
const { userId } = req.params;
21+
const { message } = req.body;
2122
try {
22-
const result = await rejectVendorRequest(userId);
23+
const result = await rejectVendorRequest(userId, message);
2324
res.status(result.status).json({ message: result.message });
2425
} catch (error) {
2526
return res.status(500).json({ message: "Internal Server Error", error });

Diff for: src/controllers/user.controller.ts

+35
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,41 @@ export const deleteUser = async (req: Request, res: Response) => {
238238
}
239239
};
240240

241+
242+
export const findUser = async (req: Request, res: Response) => {
243+
const userId = req.params.id;
244+
try {
245+
const user = await User.findOne({where: {userId: userId}});
246+
res.status(200).json(user);
247+
} catch (error: any) {
248+
if (error.message === "user not found") {
249+
res.status(404).json({ error: "User not found" });
250+
} else {
251+
res.status(500).json({ error: "Internal server error" });
252+
}
253+
}
254+
};
255+
256+
export const allUsers = async (req: Request, res: Response) => {
257+
try {
258+
const users = await User.findAll()
259+
res.status(200).json(users);
260+
} catch (error: any) {
261+
res.status(500).json({ error: error.message });
262+
}
263+
}
264+
265+
266+
export const allVendors = async (req: Request, res: Response) => {
267+
try {
268+
const sellers = await User.findAll({where: {role: 'vendor'}})
269+
res.status(200).json(sellers);
270+
} catch (error: any) {
271+
res.status(500).json({ error: error.message });
272+
}
273+
}
274+
275+
241276
export const editUser = async (req: Request, res: Response) => {
242277
const { name, email, profile } = req.body;
243278
const userId = req.params.id;

Diff for: src/controllers/vendor.controller.ts

+19
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,22 @@ export const vendorOrder = async (req: Request, res: Response) => {
130130
res.status(500).json({ error: "Internal Server Error" });
131131
}
132132
};
133+
134+
export const allRequests = async (req: Request, res: Response) => {
135+
try {
136+
const sellers = await Vendor.findAll({where: {status: 'pending'}})
137+
res.status(200).json(sellers);
138+
} catch (error: any) {
139+
res.status(500).json({ error: error.message });
140+
}
141+
}
142+
143+
export const allStores = async (req: Request, res: Response) => {
144+
try {
145+
const stores = await Vendor.findAll({ where: { status: 'approved' } })
146+
res.status(200).json(stores)
147+
148+
} catch (error:any) {
149+
res.status(500).json({error: error.message})
150+
}
151+
}

Diff for: src/database/config/config.js

-1
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,3 @@ const config = {
3434
};
3535

3636
module.exports = config;
37-

Diff for: src/database/config/db.config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const connectSequelize: Sequelize = new Sequelize(getURL(), {
3333
logging: false,
3434
});
3535

36+
3637
export default connectSequelize;
3738

3839

Diff for: src/database/seeders/20240522075149-seed-orders.js

-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ module.exports = {
3636
productName: product.name,
3737
status: "pending",
3838
quantity: 3,
39-
4039
},
4140
]),
4241
createdAt: new Date(),

Diff for: src/helpers/generateToken.ts

+19-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
import jwt from 'jsonwebtoken';
22
import User from '../database/models/user';
33
import dotenv from 'dotenv';
4+
import Vendor from '../database/models/vendor';
45

56
dotenv.config();
67

78
const generateToken = async (userData: User) => {
8-
return jwt.sign({
9+
const vendor = await Vendor.findOne({
10+
where: { userId: userData?.userId },
11+
});
12+
const vendorId = vendor ? vendor.vendorId : null;
13+
14+
return jwt.sign(
15+
{
916
role: userData.role,
1017
email: userData.email,
1118
id: userData.userId,
12-
password:userData.password
13-
}, "crafters1234", {
14-
expiresIn: '1d'
15-
});
16-
}
17-
18-
export { generateToken };
19+
vendor: vendorId,
20+
password: userData.password,
21+
},
22+
"crafters1234",
23+
{
24+
expiresIn: "1d",
25+
}
26+
);
27+
};
28+
29+
export { generateToken };
1930

2031

Diff for: src/index.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ app.use(cors({
5757
credentials: true
5858
}
5959
));
60+
6061
app.use(cookieParser());
6162
app.use((req, res, next) => {
6263
if (req.originalUrl === '/webhook') {
@@ -103,16 +104,12 @@ app.use("/admin", adminRoute);
103104
app.use("/", cartroute);
104105
app.use("/", wishlistroute);
105106
app.use("/", TwoFaRoute);
106-
107107
app.use("/", chatRouter);
108-
109108
app.use('/', messageRoutes);
110109
app.use("/", messageRoutes);
111-
112110
app.use("/", analyticRoute);
113111

114112

115-
116113
cron.schedule("0 0 * * *", () => {
117114
checkExpiredProducts();
118115
});

Diff for: src/routes/order.route.ts

+5
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ import {
33
getAllOrder,
44
modifyOrderStatus,
55
getOrder,
6+
getAllOrders,
7+
getSellerOrder
68
} from "../controllers/orderController";
79
import { VerifyAccessToken } from "../middleware/verfiyToken";
810
import {
911
getOrderStatus,
1012
updateOrderStatus,
1113
} from "../controllers/orderStatus.controller";
14+
1215
const router = express.Router();
1316

1417
router.put(
@@ -26,5 +29,7 @@ router.put(
2629

2730
router.get("/order/getAllOrder", getAllOrder);
2831
router.get("/order/getOrder/:orderId", getOrder);
32+
router.get("/orders", VerifyAccessToken, getAllOrders);
33+
router.get("/order/getSellerOrder/:vendorId", getSellerOrder);
2934

3035
export default router;

Diff for: src/routes/product.route.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import {
77
createProduct,
88
readAllProducts,
99
viewProducts,
10-
1110
similarProducts,
12-
getPopularProduct
11+
getPopularProduct
1312

1413
} from "../controllers/product.controller";
1514
import { VerifyAccessToken } from "../middleware/verfiyToken";
15+
1616
const router = express.Router();
1717

1818
router.post("/create/product/:id", VerifyAccessToken, createProduct);
@@ -25,6 +25,7 @@ router.get("/products/search", searchProduct);
2525
router.get("/products/vendor/:id", VerifyAccessToken, viewProducts);
2626
router.put("/updateProduct/:id", VerifyAccessToken, updateProduct);
2727
router.delete("/deleteProduct/:id", VerifyAccessToken, deleteProduct);
28+
router.get("/popular-product", getPopularProduct)
2829

2930

3031
export default router;

Diff for: src/routes/user.route.ts

+6
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import { twoFAController } from "./../middleware/2fa.middleware";
33
import express,{Request,Response} from "express";
44
import {
55
Welcome,
6+
allUsers,
7+
allVendors,
68
deleteUser,
79
editUser,
10+
findUser,
811
login,
912
register,
1013
updatePassword,
@@ -20,6 +23,9 @@ const route = express.Router();
2023

2124
route.get("/", Welcome);
2225

26+
route.get("/finduser/:id", findUser)
27+
route.get("/allusers", allUsers)
28+
route.get("/allvendors", allVendors)
2329
route.post("/register", register);
2430
route.patch("/updateuser/:id", editUser);
2531
route.patch("/updatepassword/:id", updatePassword);

Diff for: src/routes/vendor.route.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import express from "express"
22
const route = express.Router()
3-
import { deletingVendor, editVendor, registerVendor, selectVendorInfo, vendorOrder } from "../controllers/vendor.controller"
3+
4+
import { allRequests, allStores, deletingVendor, editVendor, registerVendor,selectVendorInfo, vendorOrder } from "../controllers/vendor.controller"
45
import { viewProducts } from "../controllers/product.controller"
56
import { VerifyAccessToken } from "../middleware/verfiyToken"
67
import { selectFeedback, selectReview, view_vendor_feedback } from "../controllers/review.controller"
78

8-
9+
route.get('/allstores', allStores)
10+
route.get('/allrequests', allRequests)
911
route.post('/requestVendor', registerVendor)
1012
route.delete('/deleteVendor/:id',VerifyAccessToken,deletingVendor)
1113
route.get('/vendorProduct/:id', viewProducts)

0 commit comments

Comments
 (0)