Skip to content

Commit ab4fe4d

Browse files
committed
Delete course for teacher add.
1 parent b6c3dca commit ab4fe4d

File tree

7 files changed

+65
-3
lines changed

7 files changed

+65
-3
lines changed

app.js

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const mongoose = require('mongoose');
33
const session = require('express-session');
44
const MongoStore = require('connect-mongo');
55
const flash = require('connect-flash');
6+
const methodOverride = require('method-override');
67
const pageRoute = require('./routes/pageRoute');
78
const courseRoute = require('./routes/courseRoute');
89
const categoryRoute = require('./routes/categoryRoute');
@@ -44,6 +45,9 @@ app.use((req, res, next) => {
4445
res.locals.flashMessages= req.flash();
4546
next();
4647
})
48+
app.use(methodOverride('_method',
49+
{methods: ['POST', 'GET'],
50+
}));
4751

4852
const port = process.env.PORT || 3000;
4953

controllers/courseController.js

+14
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,18 @@ exports.releaseCourse = async (req, res) => {
111111
error,
112112
});
113113
}
114+
};
115+
116+
exports.deleteCourse = async (req, res) => {
117+
try {
118+
const course = await Course.findOneAndRemove({slug: req.params.slug});
119+
req.flash("error", `${course.name} has been removed successfully`);
120+
res.status(200).redirect('/users/dashboard');
121+
122+
} catch (error) {
123+
res.status(400).json({
124+
status: 'fail',
125+
error,
126+
});
127+
}
114128
};

models/User.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const UserSchema = new Schema({
3030

3131
UserSchema.pre('save', function(next) {
3232
const user = this;
33-
if (!this.isModified('password')) return next();
33+
if (!this.isModified('password')) return next(); // if password is not modified, skip the function
3434
bcrypt.hash(user.password, 10,(error, hash) => {
3535
user.password = hash;
3636
next();

package-lock.json

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

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"express": "^4.17.3",
2222
"express-session": "^1.17.2",
2323
"express-validator": "^6.14.0",
24+
"method-override": "^3.0.0",
2425
"mongoose": "^5.13.8",
2526
"nodemailer": "^6.7.3",
2627
"slugify": "^1.6.5"

routes/courseRoute.js

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const router = express.Router();
77
router.route('/').post(roleMiddleware(["teacher", "admin"]), courseController.createCourse); // http://localhost:3000/courses
88
router.route('/').get(courseController.getAllCourses);
99
router.route('/:slug').get(courseController.getCourse);
10+
router.route('/:slug').delete(courseController.deleteCourse);
1011
router.route('/enroll').post(courseController.enrollCourse);
1112
router.route('/release').post(courseController.releaseCourse);
1213

views/dashboard.ejs

+23-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
</div>
3232
<div class="course-br">
3333
<div class="course-title">
34-
<h2><a href="/courses/<%= user.courses[i].slug %>" title=""><%= user.courses[i].name %> </a></h2>
34+
<h2><a href="course-single.html" title=""><%= user.courses[i].name %> </a></h2>
3535
</div>
3636
<div class="course-desc">
3737
<p><%= user.courses[i].description %> </p>
@@ -59,6 +59,19 @@
5959
<div id="overviews" class="section wb">
6060
<div class="container">
6161
<div class="row">
62+
<% if (flashMessages) { %>
63+
<% if (flashMessages.success) { %>
64+
<div class="alert alert-success">
65+
<%= flashMessages.success %>
66+
</div>
67+
68+
<% } else if (flashMessages.error) { %>
69+
<div class="alert alert-danger">
70+
<%= flashMessages.error %>
71+
</div>
72+
<% } %>
73+
74+
<% } %>
6275
<!-- Modal Button -->
6376
<div class="col-lg-12 text-center ">
6477
<button class="btn btn-lg btn-warning rounded-0 text-white" href="#"
@@ -87,6 +100,14 @@
87100
<div class="course-desc">
88101
<p><%= courses[i].description %> </p>
89102
</div>
103+
<div class="clearfix">
104+
<ul style="list-style-type: none;">
105+
<li style="float: left;"><button class="btn btn-primary rounded-0 text-white"><span>UPDATE</span></button></li>
106+
<li style="float: right;"><a href="/courses/<%= courses[i].slug %>?_method=DELETE"
107+
onclick="return confirm('ARE YOU SURE')"
108+
class="btn btn-danger rounded-0 text-white"><span>DELETE</span></a></li>
109+
</ul>
110+
</div>
90111
</div>
91112
</div>
92113
</div><!-- end col -->
@@ -149,4 +170,4 @@
149170
<% } %>
150171
<% } %>
151172

152-
<%- include('partials/_footer'); %>
173+
<%- include('partials/_footer'); %>

0 commit comments

Comments
 (0)