Skip to content
3 changes: 2 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ const cors = require("cors");
const bcryptjs = require("bcryptjs");
require("dotenv").config();
require("./db/connectionDB");
require('./models/User')
require('./models/Survey')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be /survey. Filename case should match always.

const authRoutes = require("./routes/auth");
const surveyRoutes = require("./routes/survey");

const app = express();

app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(cors());
Expand Down
6 changes: 6 additions & 0 deletions middlewares/requireCredits.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = (req, res, next) => {
if (!req.user.credits <1) {
return res.status(403).send({ error: " You do Not have enough Credits!" });
}
next();
};
8 changes: 8 additions & 0 deletions middlewares/requireLogin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module.exports = (req, res, next) => {
if (!req.user) {
return res.status(401).send({ error: 'You must log in!' });
}

next();
};

8 changes: 8 additions & 0 deletions models/recipient.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const mongoose = require("mongoose");
const { Schema } = mongoose;
const recipientSchema = new Schema({
email: String,
responded: { type: Boolean, default: false },
});

module.exports = recipientSchema;
61 changes: 35 additions & 26 deletions models/survey.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@

const mongoose=require('mongoose')

const surveySchema=mongoose.Schema({
title:{
type:String
},
type:{
type:String
},

questionsSet:[
{
ques:{
type: String
},
ans:{
type: [Boolean]
}
}
]

})
//created the survey api now
const Survey = mongoose.model("Survey",surveySchema)
module.exports={Survey}
const mongoose = require("mongoose");
const recipientSchema= require('./recipient')
const surveySchema = mongoose.Schema({
title: {
type: String,
},
category: {
type: String,
},
body: {
type: String,
},
subject: {
type: String,
},
recipients:[
recipientSchema
],
yes: {
type: Number,
default: 0,
},
No: {
type: Number,
default: 0,
},
_user:{
type:mongoose.Schema.Types.ObjectId,
ref:'User'
},
dateSent: Date,
lastResponded: Date
});
const Survey = mongoose.models.Survey||mongoose.model("Survey", surveySchema);
module.exports = { Survey };
5 changes: 1 addition & 4 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
const mongoose = require("mongoose");

const userSchema = mongoose.Schema({
username: {
type: String,
required: true,
max: 64,
},
password: {
type: String,
Expand All @@ -30,6 +28,5 @@ const userSchema = mongoose.Schema({
default: null,
},
});

const User = mongoose.model("User", userSchema);
const User = mongoose.models.User || mongoose.model("User", userSchema);
module.exports = { User };
26 changes: 21 additions & 5 deletions routes/survey.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
const express = require("express");
const { createSurvey } = require("../controllers/survey");
const router = express.Router();
const mongoose = require("mongoose");
const requireLogin = require("../middlewares/requireLogin");
const requireCredits = require("../middlewares/requireCredits");
const { Survey } = require("../models/survey");

router.post("/createsurvey", createSurvey);

module.exports = router;
module.exports = (app) => {
app.post("api/surveys", requireLogin, requireCredits, (req, res) => {
const { title, category, body, recipients } = req.body;
const survey = new Survey({
title,
category,
subject,
body,
recipients: recipients
.split(",")
.map((email) => ({ email: email.trim() })),
_user: req.user.id,
dateSent: Date.now(),
});
survey.save();
});
};