Skip to content

Worked on email templete #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 19 commits into
base: master
Choose a base branch
from
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();
});
};