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.

14 changes: 14 additions & 0 deletions Backend/add_func/quota.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
let science1 = [5,6,6,7,5,7,6,6,7,5];
let science2 = [5,6,6,7,5,7,6,6,7,5];
let math1 =[12,12,8,8,8,12]

function quota(sub){
if(sub==="science1"){
return science1;
}if(sub==="science2"){
return science2;
}if(sub==="math-1")
return math1
}

module.exports=quota;
9 changes: 9 additions & 0 deletions Backend/add_func/sumarr.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
function sumarr(arr){
let l = arr.length;
let sum=0;
for(let i =0; i<l;i++){
sum+=arr[i];
}
return sum;
}
module.exports= sumarr;
134 changes: 0 additions & 134 deletions Backend/app.js

This file was deleted.

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

async function call(question, number , name , sub,arr){
let l=question.length;
let qp =[];
let limit = quota(sub);
arr_a=arr;
for(let i=0;i<l;i++ ){
if(sumarr(limit)==0){
limit = quota(sub);
}
await pickQuestions(question[i], number[i], qp, name[i], limit , sub, arr_a);
}

return qp.reverse();
}

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

async function generateqp(sub) {



let {question,number,name}=await pp(sub);

let sourceArray= await Question.find({ subject: sub});

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


return qp;
}

module.exports = generateqp;
19 changes: 19 additions & 0 deletions Backend/functions/paper_pattern/paper_pattern.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
async function pp(sub) {

if(sub==="science1" || sub ==="science2"){
question=['5m','3m','2m','gr','obj','MCQ'];
number = [2,8,5,3,5,5];
name = ["Answer The Following","Answer The Following","Answer The Following","GIVE REASON", "OBJ","MCQ"];
}

if(sub==="math-1" || sub ==="math-1"){
question=['5','4','3b','3a','2b','2a','1b','1a'];
number = [2,3,4,2,5,3,4,4];
name = ["Answer The Following","Answer The Following","Answer The Following","ACTIVITY","Answer The Following","ACTIVITY", "OBJ","MCQ"];

}

return {question,number,name}
}

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

async function pickQuestions(type, count, qp ,name, quota,sub ,arr) {


const sourceArray = arr.filter(q => q.questionType === type );

let n =0;
let limit = [...quota];

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){
await qp.push(qs);
limit[qs.chapter-1] -= qs.marks;
sourceArray.splice(j, 1);
n+=1;
}



}
await qp.push(name);
}
module.exports= pickQuestions;
56 changes: 56 additions & 0 deletions Backend/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
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/css')));
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("science1")
cqp = qp;
res.render("index.ejs", { question: qp })
})

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

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

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

const data = JSON.parse(fs.readFileSync('../activity.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/autopaper');
}

async function enterdata() {
try {
await Question.deleteMany({ subject: "Mathematics - I"});
await Question.insertMany(data);

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

} catch (err) {
console.error(err);
}
}

enterdata();
14 changes: 10 additions & 4 deletions Backend/modles/Questions.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,24 @@ 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','1a','1b','2a','2b','3a','3b','4','5'], 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