Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
8db062d
feat: add survey responses router
Ahtaxam Sep 5, 2022
f2c423c
feat: add survey responses route controller
Ahtaxam Sep 5, 2022
90435b3
feat: add responses end point
Ahtaxam Sep 5, 2022
cc862a8
feat: add route for download file
Ahtaxam Sep 6, 2022
e0ef6ab
feat: controller function for router to write file and send
Ahtaxam Sep 6, 2022
8704543
feat: add csv file
Ahtaxam Sep 6, 2022
8d8bfcc
feat: add end point to download file
Ahtaxam Sep 6, 2022
1652417
refactor: made changes
Ahtaxam Sep 7, 2022
06c34f5
feat: route to get user detail wo filled survey
Ahtaxam Sep 7, 2022
8aa55a3
refactor: rename variable
Ahtaxam Sep 7, 2022
2e8a1a2
feat: rename file
Ahtaxam Sep 7, 2022
db072bc
delete file
Ahtaxam Sep 7, 2022
75dc93b
refactor: rename made changes
Ahtaxam Sep 7, 2022
1952676
feat: controller function to get user detail
Ahtaxam Sep 7, 2022
2fd572b
refactor: made changes
Ahtaxam Sep 7, 2022
0aed925
refactor: made changes
Ahtaxam Sep 7, 2022
885eb01
feat: add endpoint for userDetails
Ahtaxam Sep 7, 2022
328b8c8
refactor: made changes
Ahtaxam Sep 8, 2022
0b158a2
improve: made changes
Ahtaxam Sep 8, 2022
8530125
refactor: made changes
Ahtaxam Sep 8, 2022
6c3ff9b
chore: add folder to gitignore
Ahtaxam Sep 9, 2022
9a29940
feat: add vercel file
Ahtaxam Sep 9, 2022
f08410f
feat: add production route
Ahtaxam Sep 9, 2022
a64b7e2
added build
Ahtaxam Sep 9, 2022
67922f8
fix vercel issue
Ahtaxam Sep 9, 2022
652ee8c
fix vercel 2.0
Ahtaxam Sep 9, 2022
b7f5779
fix vercel 3.0
Ahtaxam Sep 9, 2022
c806844
fix vercel 4
Ahtaxam Sep 9, 2022
9fb0089
refactor: made changes
Ahtaxam Sep 11, 2022
27c2474
add vercel.json
Ahtaxam Sep 11, 2022
ec73788
made changes
Ahtaxam Sep 11, 2022
75b84a4
fix vercel
Ahtaxam Sep 11, 2022
6f5a979
refactor: made changes
Ahtaxam Sep 11, 2022
a3f19c2
fix vercel 2
Ahtaxam Sep 11, 2022
62c531a
fix vercel
Ahtaxam Sep 12, 2022
718f09f
refactor: updated repo
Ahtaxam Sep 12, 2022
fae46ee
refactor: made changes
Ahtaxam Sep 12, 2022
ef0b1ef
fix vercel 2
Ahtaxam Sep 12, 2022
04a202b
refactor: delete file
Ahtaxam Sep 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
node_modules
package-lock.json
.env
.env
assets
7 changes: 7 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ const loginuUser = require("./router/Auth");
const createSurvey = require("./router/survey");
const joinSurvey = require("./router/joinSurvey");
const showOtherSurveys = require("./router/otherSurveys");
const surveyResponses = require("./router/surveyResponses");
const download = require("./router/report");
const responseDetail = require("./router/responseDetail");
const port = process.env.PORT || 8000;
const url = process.env.DBURL;
const cors = require("cors");
Expand All @@ -35,6 +38,10 @@ app.use("/login", loginuUser);
app.use("/survey", isAuth, createSurvey);
app.use("/join", isAuth, joinSurvey);
app.use("/otherSurveys", isAuth, showOtherSurveys);
app.use("/responses", isAuth, surveyResponses);
app.use("/download", download);
app.use("/responsedetail", responseDetail);

app.listen(port, () => {
console.log(`Server is listning on port ${port}`);
});
4 changes: 4 additions & 0 deletions assets/report.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
select any one option from given options.,choose maximum options from given options.,what is your name ?,where are you living ?,Your Phone No ?,what is your age ?,
Lahore ,pqr abc ,ali ,lahore ,6 ,12 ,
Multan ,pqr ,fd ,d ,4 ,1 ,
Multan ,xyz abc ,ali ,sdsa ,3 ,1 ,
6 changes: 3 additions & 3 deletions controller/joinSurvey.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const Survey = require("../models/survey");
const response = require("../models/joinSurvey");
const Responses = require("../models/responses");
const joi = require("joi");
const { ObjectId } = require("mongoose").Types;

Expand All @@ -10,7 +10,7 @@ const validateSurveyAccess = async (req, res, next) => {
return res.status(401).json("You can not access this survey");
}

const isFilled = await response.find({
const isFilled = await Responses.find({
surveyId: req.params.id,
userId: req.user._id,
});
Expand Down Expand Up @@ -39,7 +39,7 @@ const submitResponse = async (req, res) => {
};
}),
id = ObjectId(surveyId);
const result = new response({
const result = new Responses({
userId: req.user._id,
surveyId: id,
answers: answer,
Expand Down
43 changes: 43 additions & 0 deletions controller/report.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
const Survey = require("../models/survey");
const Responses = require("../models/responses");
const fs = require("fs");

const report = async (req, res) => {
let path = __dirname;
path = path.replace("controller", "");
path = path + "assets/report.csv";

try {
const survey = await Survey.findById(req.params.id).select(
"questions -_id"
);
const responses = await Responses.find({ surveyId: req.params.id }).select(
"answers.options -_id"
);

const fd = fs.openSync(path, "w");

survey.questions.forEach((question) =>
fs.writeSync(fd, question.title + ",")
);
fs.writeSync(fd, "\n");

for (let i = 0; i < responses.length; i++) {
for (let j = 0; j < responses[i].answers.length; j++) {
if (responses[i].answers[j].options.length >= 2) {
responses[i].answers[j].options =
responses[i].answers[j].options.join(" ");
}
fs.writeSync(fd, responses[i].answers[j].options + " ,");
}
fs.writeSync(fd, "\n");
}
fs.closeSync(fd);

res.status(200).sendFile(path);
} catch (err) {
res.status(500).json(err.message);
}
};

module.exports = report;
13 changes: 13 additions & 0 deletions controller/responseDetail.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const Responses = require("../models/responses");
const { ObjectId } = require("mongoose").Types;

const responseDetail = async (req, res) => {
const person = await Responses
.find({ userId: ObjectId(req.params.id) })
.populate("userId")
.select("name email");

res.status(200).json(person[0].userId);
};

module.exports = responseDetail;
2 changes: 1 addition & 1 deletion controller/survey.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const Survey = require("../models/survey");
const Responses = require("../models/joinSurvey");
const Responses = require("../models/responses");
const jwt = require("jsonwebtoken");
const config = require("../config/config");
const joi = require("joi");
Expand Down
12 changes: 12 additions & 0 deletions controller/surveyResponses.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
const Responses = require("../models/responses");

const surveyResponses = async (req, res) => {
try {
const surveys = await Responses.find({ surveyId: req.params.id });
res.status(200).json(surveys);
} catch (err) {
res.status(400).json("Survey not found");
}
};

module.exports = surveyResponses;
1 change: 0 additions & 1 deletion models/joinSurvey.js → models/responses.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
const { string } = require("joi");
const mongoose = require("mongoose");

const { Schema, ObjectId } = mongoose;
Expand Down
6 changes: 3 additions & 3 deletions router/joinSurvey.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const express = require("express");
const route = express.Router();
const joinSurvey = require("../controller/joinSurvey");
const Responses = require("../controller/joinSurvey");

route.get("/:id", joinSurvey.validateSurveyAccess);
route.post("/", joinSurvey.submitResponse);
route.get("/:id", Responses.validateSurveyAccess);
route.post("/", Responses.submitResponse);

module.exports = route;
7 changes: 7 additions & 0 deletions router/report.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const express = require("express");
const router = express.Router();
const report = require("../controller/report.js");

router.get("/:id", report);

module.exports = router;
7 changes: 7 additions & 0 deletions router/responseDetail.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const express = require("express");
const router = express.Router();
const responseDetail = require("../controller/responseDetail.js");

router.get("/:id", responseDetail);

module.exports = router;
7 changes: 7 additions & 0 deletions router/surveyResponses.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const express = require("express");
const router = express.Router();
const surveyResponses = require("../controller/surveyResponses.js");

router.get("/:id", surveyResponses);

module.exports = router;