Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 0 additions & 2 deletions Backend/.env

This file was deleted.

1 change: 1 addition & 0 deletions Backend/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
node_modules
.env
8 changes: 0 additions & 8 deletions Backend/Config/db.js

This file was deleted.

134 changes: 0 additions & 134 deletions Backend/app.js

This file was deleted.

17 changes: 17 additions & 0 deletions Backend/functions/call.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
let pickQuestions = require('./questionPicker');
let quota=require("../quota/quota.js")

async function call(question, number , name ){
let l=question.length;
let qp =[];

let limit = quota();

for(let i=0;i<l;i++ ){
await pickQuestions(question[i], number[i], qp, name[i], limit);
}

return qp.reverse();
}

module.exports=call;
16 changes: 16 additions & 0 deletions Backend/functions/generatepaper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const Question = require('../modles/questions');
let pickQuestions = require('./questionPicker');
const call =require("./call.js")

async function generateqp() {

let question=['5m','3m','2m','gr','obj','MCQ'];
let number = [2,8,5,3,5,5];
let name = ["Answer The Following","Answer The Following","Answer The Following","GIVE REASON", "OBJ","MCQ"];

let qp = await call(question,number,name);

return qp;
}

module.exports = generateqp;
24 changes: 24 additions & 0 deletions Backend/functions/questionPicker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const Question = require('../modles/questions');

async function pickQuestions(type, count, qp ,name, limit) {
let sourceArray = await Question.find({ questionType: type});
let n =0;

while(n < count ){
let l = sourceArray.length;
let j = Math.floor(Math.random() * l);
let qs = sourceArray[j];

let k =sourceArray[j].marks
let lim = limit[sourceArray[j].chapter-1];
if(k <= lim){
qp.push(qs);
sourceArray.splice(j, 1);
n+=1;
limit[qs.chapter-1] -= qs.marks;
}
}
qp.push(name);

}
module.exports= pickQuestions;
50 changes: 50 additions & 0 deletions Backend/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
const express = require('express');
const Question = require('./modles/questions');
const app = express();
const mongoose = require("mongoose");
const ejs= require("ejs");
const path = require("path");
const ejsMate = require("ejs-mate");

const generateqp = require("./functions/generatepaper.js");
const home = require("./routes/home.js");
const about = require("./routes/about.js");
const contact = require("./routes/contact.js");

app.engine("ejs", ejsMate);
app.set("view engine","ejs")
app.set("views",path.join(__dirname,'./views/ejs'))
app.use(express.static(path.join(__dirname,'./public')));
app.use(express.json())
app.use(express.urlencoded({ extended: true }))

main().then(()=>{
console.log("connected")
}).catch((err)=>{
console.log(err)
})

async function main() {
await mongoose.connect('mongodb://127.0.0.1:27017/autopaper');
}

app.use("/", home);
app.use("/about", about);
app.use("/contact", contact);

let cqp = [];

app.get("/paper",async (req,res)=>{
let qp = await generateqp()
cqp = qp;
res.render("index.ejs", { question: qp })
})

app.get("/download", async (req, res)=>{
let qp = cqp;
res.render("download.ejs", { question: qp });
})

app.listen(8080,()=>{
console.log("done")
})
29 changes: 29 additions & 0 deletions Backend/init/init.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const mongoose = require('mongoose');
const fs = require('fs');
const Question = require('../modles/Questions');

const data = JSON.parse(fs.readFileSync('../unit4_apm.json', 'utf-8'));

main().then(()=>{
console.log('Connected to MongoDB');
}).catch((err)=>{
console.log(err);
})

async function main() {
await mongoose.disconnect();
await mongoose.connect('mongodb://localhost:27017/autopap');
}

async function enterdata() {
try {
// await Question.deleteMany({});
await Question.insertMany(data);

console.log(` ${data.length} questions inserted successfully!`);

} catch (err) {
console.error(err);
}
}
enterdata();
13 changes: 9 additions & 4 deletions Backend/modles/Questions.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,23 @@ const mongoose = require('mongoose')

const questionSchema = new mongoose.Schema({
questionText: { type: String, required: true },
questionType: { type: String, enum: ['MCQ', 'short', 'long', 'numerical'], required: true },
questionType: { type: String, enum: ['MCQ','obj', 'gr','1m', '2m', '3m','5m'], required: true },
options: [String], // only filled for MCQ
answer: { type: String },
subject: { type: String, required: true },
chapter: { type: String },
chapter: { type: Number, required: true },
grade: { type: Number, required: true },
difficulty: { type: String, enum: ['easy', 'medium', 'hard'], required: true },
marks: { type: Number, required: true },
category:{type:Number},
createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
institutionId: { type: mongoose.Schema.Types.ObjectId, ref: 'Institution' },
hasImage : {type: String, required: true},
image:{type: String},
}, {
timestamps: true,
})

module.exports = mongoose.model('Question', questionSchema)
module.exports = mongoose.model('Question', questionSchema, 'questions');



Loading