Skip to content

Commit 5fe61bf

Browse files
authored
Merge pull request #12 from Property-Search-Engine/feat/employee-bookings-interaction
Employee-Booking Interaction
2 parents 39f3358 + ac56a12 commit 5fe61bf

File tree

4 files changed

+56
-21
lines changed

4 files changed

+56
-21
lines changed

src/controllers/bookings-controller.js

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,38 @@ async function updateBookingAddress(req, res, next) {
7474
next(err);
7575
}
7676
}
77-
78-
module.exports = { getBookings, bookProperty, cancelBooking, updateBookingAddress };
77+
async function getBookingsByEmployeeId(req, res, next) {
78+
const { eid } = req.params;
79+
try {
80+
const bookings = await db.Bookings
81+
.find({ employeeId: eid })
82+
.select("-__v -contactInfo")
83+
.sort({ createdAt: -1 })
84+
.lean()
85+
.exec();
86+
res.status(200).send({
87+
data: bookings,
88+
error: null
89+
});
90+
} catch (err) {
91+
next(err);
92+
}
93+
}
94+
async function setStatus(req, res, next) {
95+
const { propertyId } = req.params;
96+
const { status } = req.body;
97+
try {
98+
const booking = await db.Bookings
99+
.findByIdAndUpdate(propertyId, { status }, { new: true })
100+
.select("-__v -contactInfo")
101+
.lean()
102+
.exec();
103+
res.status(200).send({
104+
data: booking,
105+
error: null
106+
});
107+
} catch (err) {
108+
next(err);
109+
}
110+
}
111+
module.exports = { getBookings, bookProperty, cancelBooking, updateBookingAddress, getBookingsByEmployeeId, setStatus };

src/middleware/stsauth-middleware.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/middleware/validators/bookings-validator.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ const updateBookingAddressSchema = Joi.object({
1515
state: Joi.string().trim().required(),
1616
country: Joi.string().trim().required(),
1717
});
18+
const setStatusSchema = Joi.object({
19+
status: Joi.string().trim().required().valid("pending", "rejected", "accepted"),
20+
});
1821

1922
async function validateNewBooking(req, res, next) {
2023
try {
@@ -33,5 +36,13 @@ async function validateUpdateBookingAddress(req, res, next) {
3336
next({ statusCode: 400, message: err.details });
3437
}
3538
}
39+
async function validateSetStatus(req, res, next) {
40+
try {
41+
req.body = await setStatusSchema.validateAsync(req.body);
42+
next();
43+
} catch (err) {
44+
next({ statusCode: 400, message: err.details });
45+
}
46+
}
3647

37-
module.exports = { validateNewBooking, validateUpdateBookingAddress };
48+
module.exports = { validateNewBooking, validateUpdateBookingAddress, validateSetStatus };

src/routes/bookings-routes.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
const { Router } = require("express");
22
const auth = require("../middleware/auth-middleware");
33
const validateJWT = require("../middleware/jwt-middleware");
4-
const { validateNewBooking, validateUpdateBookingAddress } = require("../middleware/validators/bookings-validator");
4+
const { validateNewBooking, validateUpdateBookingAddress, validateSetStatus } = require("../middleware/validators/bookings-validator");
55

66
const bookingsRouter = Router();
77

88
const {
99
getBookings,
1010
cancelBooking,
1111
bookProperty,
12-
updateBookingAddress
12+
updateBookingAddress,
13+
getBookingsByEmployeeId,
14+
setStatus
1315
} = require("../controllers/bookings-controller");
1416

1517
bookingsRouter.post("/", auth(), validateNewBooking, bookProperty);
1618
bookingsRouter.delete("/:propertyId", auth(), cancelBooking);
1719
bookingsRouter.get("/all", auth(), getBookings);
18-
bookingsRouter.patch("/:propertyId", validateUpdateBookingAddress, updateBookingAddress);
20+
bookingsRouter.get("/employees/:eid", validateJWT, getBookingsByEmployeeId);
21+
22+
bookingsRouter.post("/:propertyId", validateJWT, validateSetStatus, setStatus);
23+
24+
bookingsRouter.patch("/:propertyId", validateJWT, validateUpdateBookingAddress, updateBookingAddress);
1925

2026
module.exports = bookingsRouter;

0 commit comments

Comments
 (0)