Guest User

Untitled

a guest
Jan 7th, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.15 KB | None | 0 0
  1. var express = require('express');
  2. var mongo = require('mongodb');
  3. var app = express();
  4. var bodyParser = require('body-parser');
  5. var session = require('express-session');
  6. var path = require('path');
  7. var link = require('url');
  8. app.set('views',path.join(__dirname,'views'));
  9. app.set('view engine','ejs');
  10. app.use(express.static(path.join(__dirname,"public")));
  11. app.use(session({
  12. secret : 'qtoquizandotoonline',
  13. resave : false,
  14. saveUninitialized : true
  15. }));
  16.  
  17. var url="mongodb://localhost:27017/online_quiz";
  18.  
  19. app.use(bodyParser.urlencoded({ extended : true }));
  20. app.listen(3000,function(err){
  21. if(err)
  22. {
  23. console.log("Error in listening Port");
  24. }
  25. console.log("listening to port : 3000")
  26. });
  27. app.get('/signin',function(req,res){
  28. if(!req.session.user)
  29. {
  30. res.render('signin');
  31. }
  32. else
  33. {
  34. if(req.session.type=='0')
  35. {
  36. res.redirect('/admin');
  37. }
  38. else if(req.session.type=='1')
  39. {
  40. res.redirect('/faculty');
  41. }
  42. else if(req.session.type=='2')
  43. {
  44. res.redirect('/student');
  45. }
  46. }
  47. });
  48. app.get('/admin',function(req,res){
  49. if(!req.session.user )
  50. {
  51. res.redirect('/');
  52. }
  53. else if(result[0].type=='1')
  54. {
  55. res.redirect('/faculty');
  56. }
  57. else if(result[0].type=='2')
  58. {
  59. res.redirect('/student');
  60. }
  61. else
  62. {
  63. mongo.connect(url,function(err,db) {
  64. if(err)
  65. {
  66. console.log("connection problem");
  67. }
  68.  
  69. var dbo=db.db("online_quiz");
  70. dbo.collection("registered_clg").find({},{projection : { _id : 0, college : 1}}).toArray(function(err,user)
  71. {
  72. console.log(user);
  73. res.render('admin',{info : user});
  74. });
  75. });
  76. }
  77. });
  78. app.get('/',function(req,res){
  79. if(!req.session.user)
  80. {
  81. res.redirect('/signin');
  82. }
  83. else
  84. {
  85. mongo.connect(url,function(err,db){
  86. if(err)
  87. {
  88. throw err;
  89. }
  90. var dbo=db.db("online_quiz");
  91. dbo.collection("credentials").aggregate([{$match : { email : req.session.user}}]).toArray(function(err,result){
  92. if(err)
  93. {
  94. console.log("err");
  95. }
  96. else
  97. {
  98. var type = result[0].type;
  99. var user = result[0].name;
  100. if(type=='0')
  101. {
  102. res.redirect('/admin');
  103. }
  104. else if(type=='1')
  105. {
  106. res.redirect('/faculty');
  107. }
  108. else if(type=='2')
  109. {
  110. res.redirect('/student');
  111. }
  112. }
  113. });
  114. });
  115.  
  116. }
  117. });
  118.  
  119. app.post('/sign_in',function(req,res){
  120.  
  121. mongo.connect(url,function(err,db) {
  122. if(err)
  123. {
  124. console.log("connection problem");
  125. };
  126.  
  127. var dbo=db.db("online_quiz");
  128. dbo.collection("credentials").findOne({email : req.body.email},function(err,user){
  129. if(err)
  130. {
  131. console.log("error");
  132. }
  133. if(!user)
  134. {
  135. res.write("User Does Not Exist..!<br><a href="/">click here to try again</a>")
  136. console.log("user not found");
  137. }
  138. else if(user.password!=req.body.pass)
  139. {
  140. console.log("Wrong password");
  141. res.redirect('/');
  142. }
  143. else
  144. {
  145. req.session.user = req.body.email;
  146. console.log("successful login");
  147.  
  148. dbo.collection("credentials").aggregate([{$match : { email : req.session.user}}]).toArray(function(err,result){
  149. if(err)
  150. {
  151. console.log("err");
  152. }
  153. else
  154. {
  155. req.session.name = result[0].name;
  156. req.session.type = result[0].type;
  157. if(result[0].type=='0')
  158. {
  159. res.redirect('/admin');
  160. }
  161. else if(result[0].type=='1')
  162. {
  163. res.redirect('/faculty');
  164. }
  165. else if(result[0].type=='2')
  166. {
  167. res.redirect('/student');
  168. }
  169. }
  170. });
  171. }
  172. });
  173. });
  174.  
  175. });
  176.  
  177. app.post('/sign_up',function(req,res){
  178.  
  179. var name = req.body.name;
  180.  
  181. var email = req.body.email;
  182.  
  183. var pass = req.body.pass;
  184.  
  185. var repass = req.body.repass;
  186.  
  187. var college = req.body.college;
  188.  
  189. var stream = req.body.stream;
  190.  
  191. var type = "2";
  192.  
  193. var section = req.body.section;
  194.  
  195. var batch = req.body.batch;
  196.  
  197. var data={
  198. "name":name,
  199. "email":email,
  200. "password":pass,
  201. "type" : type,
  202. "section" : section,
  203. "stream" : stream,
  204. "college":college,
  205. "batch":batch
  206. }
  207. mongo.connect(url,function(err,db) {
  208. if(err) throw err;
  209.  
  210. var dbo=db.db("online_quiz");
  211. dbo.collection("credentials").findOne({email : data.email},function(err,user){
  212. if(err)
  213. {
  214. console.log(error);
  215. }
  216. if(user)
  217. {
  218. console.log("user already exit");
  219. res.redirect('/');
  220. }
  221. else
  222. {
  223. dbo.collection("credentials").insertOne(data,function(err,db){
  224. if(err)
  225. {
  226. console.log("error in signup in insertion");
  227. }
  228. else
  229. {
  230. console.log("successfully registered");
  231. res.redirect('/');
  232. }
  233. });
  234. }
  235. });
  236.  
  237. });
  238.  
  239. });
  240.  
  241. app.get('/signup',function(req,res){
  242. if(!req.session.user)
  243. {
  244. mongo.connect(url,function(err,db){
  245. if(err)
  246. {
  247. console.log("error in connecting");
  248. }
  249. else
  250. {
  251. var dbo=db.db("online_quiz");
  252. dbo.collection("registered_clg").find({},{ projection: { _id: 0, college: 1} }).toArray(function(err,result){
  253. if(err)
  254. {
  255. console.log("error in finding array of college in signup");
  256. }
  257. else
  258. {
  259. res.render('signup',{info : result});
  260. }
  261. })
  262. }
  263. });
  264. }
  265. else
  266. {
  267. res.redirect('/');
  268. }
  269. });
  270. app.get('/logout',function(req,res){
  271. if(!req.session.user)
  272. {
  273. res.redirect('/');
  274. }
  275. req.session.destroy();
  276. console.log("You are successfully Logged Out");
  277. res.redirect('/');
  278. });
  279.  
  280. app.post('/add_clg',function(req,res){
  281. if(!req.session.user)
  282. {
  283. res.redirect('/');
  284. }
  285. else
  286. {
  287.  
  288. var college = req.body.college;
  289.  
  290. var domain = req.body.domain;
  291.  
  292. var date = new Date();
  293.  
  294. var sub = req.body.subjects;
  295.  
  296. var subjects = sub.split(",");
  297. var data = {
  298. "college" : college,
  299. "domain" : domain,
  300. "date" : date,
  301. "subjects" : subjects
  302. }
  303. mongo.connect(url,function(err,db){
  304. if(err)
  305. {
  306. res.send("error in connecting");
  307. }
  308. else
  309. {
  310. var dbo=db.db("online_quiz");
  311. dbo.collection("registered_clg").findOne({college : data.college},function(err,user){
  312. if(err)
  313. {
  314. console.log("error in finding college exist or not");
  315. }
  316. else if(user)
  317. {
  318. res.send("This College Already Exist");
  319. }
  320. else if(!user)
  321. {
  322. dbo.collection("registered_clg").insertOne(data,function(err,db){
  323. if(err)
  324. {
  325. res.send("error in registering college");
  326. }
  327. res.send("successfully Submitted!!");
  328. });
  329. }
  330. });
  331.  
  332. }
  333. });
  334. //res.redirect('/admin');
  335. }
  336. });
  337. app.post('/del_clg',function(req,res){
  338. mongo.connect(url,function(err,db){
  339. if(err)
  340. {
  341. res.send("error in connecting");
  342. }
  343. else
  344. {
  345. console.log(req.body.array);
  346. var array = req.body.array;
  347. for(var i=0;i<array.length;i++){
  348.  
  349. var dbo=db.db("online_quiz");
  350.  
  351. dbo.collection("registered_clg").deleteOne({college : array[i]},function(err,user){
  352. if(err)
  353. {
  354. console.log("error in deleting college");
  355. }
  356.  
  357. });
  358. }
  359. res.send("successfully Deleted");
  360. }
  361. });
  362. });
  363. app.post('/create_test',function(req,res){
  364.  
  365. var testname = req.body.testname;
  366. var test_key = req.body.test_key;
  367. var teachername = req.body.teachername;
  368. var email = req.body.email;
  369. var college = req.body.college;
  370. var subject = req.body.subject;
  371. var section = req.body.section;
  372. var start_time = req.body.start_time;
  373. var start_date = req.body.start_date;
  374. var end_time = req.body.end_time;
  375. var end_date = req.body.end_date;
  376.  
  377. var data = {
  378. "testname" : testname,
  379. "test_key" : test_key,
  380. "teachername" : teachername,
  381. "email" : email,
  382. "college" : college,
  383. "subject" : subject,
  384. "section" : section,
  385. "start_time" : start_time,
  386. "start_date" : start_date,
  387. "end_time" : end_time,
  388. "end_date" : end_date
  389. }
  390.  
  391. mongo.connect(url,function(err,db) {
  392. if(err) throw err;
  393.  
  394. var dbo=db.db("online_quiz");
  395. dbo.collection("testTable").findOne({testname : data.testname},function(err,user){
  396. if(err)
  397. {
  398. console.log(error);
  399. }
  400. else if(user)
  401. {
  402. res.send("0");
  403. }
  404. else
  405. {
  406. dbo.collection("testTable").insertOne(data,function(err,db){
  407. if(err)
  408. {
  409. console.log("error in signup in insertion");
  410. }
  411. else
  412. {
  413. res.send("successfully Details Submitted");
  414. }
  415. });
  416. }
  417. });
  418.  
  419. });
  420. });
  421.  
  422. app.get('/faculty',function(req,res){
  423. if(!req.session.user )
  424. {
  425. res.redirect('/');
  426. }
  427. else if(result[0].type=='0')
  428. {
  429. res.redirect('/admin');
  430. }
  431. else if(result[0].type=='2')
  432. {
  433. res.redirect('/student');
  434. }
  435. else
  436. {
  437. mongo.connect(url,function(err,db){
  438. if(err)
  439. {
  440. throw err;
  441. }
  442. else
  443. {
  444. var dbo=db.db("online_quiz");
  445. dbo.collection("credentials").aggregate([{$match : { email : req.session.user}}]).toArray(function(err,result){
  446. if(err)
  447. {
  448. console.log("err");
  449. }
  450. else
  451. {
  452. var college = result[0].college;
  453. dbo.collection("registered_clg").aggregate([{$match : { college : college}}]).toArray(function(err,user){
  454. if(err)
  455. {
  456. console.log("err");
  457. }
  458. else
  459. {
  460.  
  461. var subject = user[0].subjects;
  462.  
  463. res.render('faculty',{
  464. name : req.session.name,
  465. email : req.session.user,
  466. college : college,
  467. subject : subject
  468. });
  469. }
  470. });
  471. }
  472. });
  473. }
  474. });
  475. }
  476. });
  477.  
  478. app.post('/add_question',function(req,res){
  479.  
  480. var testname = req.body.testname;
  481. var college = req.body.college;
  482. var section = req.body.section;
  483. var question = req.body.question;
  484. var option1 = req.body.option1;
  485. var option2 = req.body.option2;
  486. var option3 = req.body.option3;
  487. var option4 = req.body.option4;
  488. var answer = req.body.answer;
  489. var mark = req.body.mark;
  490. var teacherEmail = req.body.teacherEmail;
  491. console.log(testname);
  492. var data = {
  493. "testname" : testname,
  494. "teacherEmail" : teacherEmail,
  495. "college" : college,
  496. "section" : section,
  497. "question" : question,
  498. "option1" : option1,
  499. "option2" : option2,
  500. "option3" : option3,
  501. "option4" : option4,
  502. "answer" : answer,
  503. "mark" : mark
  504. }
  505.  
  506. mongo.connect(url,function(err,db){
  507. if(err)
  508. {
  509. res.send("err");
  510. }
  511. else
  512. {
  513. var dbo=db.db("online_quiz");
  514. dbo.collection("Question").insertOne(data,function(err,result){
  515. if(err)
  516. {
  517. res.send("err");
  518. }
  519. else
  520. {
  521. res.send("Added");
  522. }
  523. });
  524. }
  525.  
  526. });
  527. });
  528.  
  529. app.get('/view_test',function(req,res){
  530. if(!req.session.user)
  531. {
  532. res.redirect('/');
  533. }
  534. else
  535. {
  536. mongo.connect(url,function(err,db){
  537. if(err) throw err;
  538. else
  539. {
  540. var dbo=db.db("online_quiz");
  541. dbo.collection("testTable").find({email : req.session.user},{projection : { _id : 0, testname : 1}}).toArray(function(err,user){
  542. if(err)
  543. {
  544. console.log("err");
  545. }
  546. else
  547. {
  548. res.render('view_test',{ tests : user});
  549. }
  550. });
  551. }
  552. });
  553. }
  554. });
  555.  
  556. app.get('/students',function(req,res){
  557. if(!req.session.user)
  558. {
  559. if(req.session.type != "1")
  560. {
  561. req.session.destroy();
  562. }
  563. res.redirect('/');
  564. }
  565. else
  566. {
  567. mongo.connect(url,function(err,db){
  568. if(err) throw err;
  569. else
  570. {
  571. var url = require('url');
  572. var adr = req.url;
  573. var q = url.parse(adr, true);
  574. var qdata = q.query; //returns an object: { year: 2017, month: 'february' }
  575. var testid = qdata.name //returns 'february'
  576. testid =testid.replace(/["']/g,"");
  577. console.log(testid);
  578. console.log(req.session.user);
  579. var dbo=db.db("online_quiz");
  580. dbo.collection("Result").find({testname : testid,teacherEmail : req.session.user}).toArray(function(err,user){
  581. if(err)
  582. {
  583. console.log("err");
  584. }
  585. else
  586. {
  587. console.log(user);
  588. res.render('students',{ studentData : user });
  589. }
  590. });
  591. }
  592. });
  593. }
  594. });
  595. app.get('/profile',function(req,res){
  596. if(!req.session.user)
  597. {
  598. res.redirect('/');
  599. }
  600. if(req.session.type != "1")
  601. {
  602. req.session.destroy();
  603. res.redirect('/');
  604. }
  605. else
  606. {
  607. mongo.connect(url,function(err,db){
  608. if(err) throw err;
  609. else
  610. {
  611. var dbo = db.db("online_quiz");
  612. dbo.collection('credentials').find({email : req.session.user},{projection : { _id : 0}}).toArray(function(err,result){
  613. var x = result[0].type;
  614. var type;
  615. if(x == "0")
  616. {
  617. type = "Admin";
  618. }
  619. else if(x == 1)
  620. {
  621. type = "Teacher";
  622. }
  623. else
  624. {
  625. type = "student";
  626. }
  627. res.render('profile',{
  628. name : result[0].name,
  629. email : result[0].email,
  630. type : type,
  631. stream : result[0].stream,
  632. college : result[0].college
  633.  
  634. });
  635. });
  636. }
  637. });
  638. }
  639. });
  640.  
  641. app.post('/change_password',function(req,res){
  642. if(!req.session.user)
  643. {
  644. res.redirect('/');
  645. }
  646. else
  647. {
  648. mongo.connect(url,function(err,db){
  649. if(err) throw err;
  650. else
  651. {
  652. var password = req.body.password;
  653. var new_password = req.body.new_password;
  654. var repeat_password = req.body.repeat_password;
  655. console.log(password+" "+new_password+" "+repeat_password);
  656. var dbo = db.db("online_quiz");
  657. dbo.collection("credentials").find({email : req.session.user},{projection : { _id : 0}}).toArray(function(err,result){
  658. if(password != result[0].password)
  659. {
  660. res.send("1");
  661. }
  662. else if(new_password != repeat_password)
  663. {
  664. res.send("2");
  665. }
  666. else{
  667. var myquery = {password : result[0].password};
  668. var newvalue = { $set : {password : new_password}};
  669. dbo.collection('credentials').updateOne(myquery,newvalue,function(err,result){
  670. if(err)
  671. {
  672. res.send("Error in Changing Password");
  673. }
  674. else
  675. {
  676. res.send("0");
  677. }
  678. });
  679. }
  680. });
  681. }
  682. });
  683. }
  684. });
  685.  
  686. app.get('/student_view_test',function(req,res){
  687. if(!req.session.user)
  688. {
  689. res.redirect('/');
  690. }
  691. else if(req.session.type != "2")
  692. {
  693. res.redirect('/');
  694. }
  695. else
  696. {
  697. mongo.connect(url,function(err,db){
  698. if(err) throw err;
  699. else
  700.  
  701. {
  702. var dbo = db.db("online_quiz");
  703. dbo.collection("Result").find({email : req.session.user}).toArray(function(err,user){
  704. if(err)
  705. {
  706. console.log("err");
  707. }
  708. else
  709. {
  710. res.render('student_view_test',{ info : user});
  711. }
  712. });
  713. }
  714. });
  715. }
  716. });
  717.  
  718. app.get('/student',function(req,res){
  719. if(!req.session.user)
  720. {
  721. res.redirect('/');
  722. }
  723. else if(result[0].type=='0')
  724. {
  725. res.redirect('/Admin');
  726. }
  727. else if(result[0].type=='2')
  728. {
  729. res.redirect('/faculty');
  730. }
  731. else
  732. {
  733. mongo.connect(url,function(err,db){
  734. if(err) throw err;
  735. else
  736. {
  737. var dbo = db.db("online_quiz");
  738. dbo.collection("credentials").find({email : req.session.user},{projection : {_id : 0,college : 1,section : 1}}).toArray(function(err,user){
  739. var college = user[0].college;
  740. var section = user[0].section;
  741.  
  742. dbo.collection("testTable").find({college : college, section : section},{projection : { _id : 0, testname : 1}}).toArray(function(err,result){
  743. console.log(result);
  744. res.render('student',{ info : result});
  745. });
  746. });
  747.  
  748. }
  749. });
  750. }
  751. });
  752. app.get('/key_check',function(req,res){
  753. if(!req.session.user)
  754. {
  755. res.redirect('/');
  756. }
  757. else
  758. {
  759. mongo.connect(url,function(err,db){
  760. if(err) throw err;
  761. else
  762. {
  763. var url = require('url');
  764. var a = req.url;
  765. var h = url.parse(a, true);
  766. var qdata = h.query; //returns an object: { year: 2017, month: 'february' }
  767. var testname = qdata.testname;
  768. testname = testname.replace(/["']/g,"");
  769. var dbo = db.db("online_quiz");
  770. dbo.collection("credentials").find({email : req.session.user},{projection : {_id : 0,college : 1,section : 1}}).toArray(function(err,user){
  771. var college = user[0].college;
  772. res.render('key_check',{college : college,testname : testname});
  773. });
  774. }
  775. });
  776. }
  777. });
  778.  
  779. app.post('/check_key',function(req,res){
  780. if(!req.session.user)
  781. {
  782. res.redirect('/');
  783. }
  784. else
  785. {
  786. mongo.connect(url,function(err,db){
  787. if(err) throw err;
  788. else
  789. {
  790. var college = req.body.college;
  791. var testname = req.body.testname;
  792. var key = req.body.key;
  793. var dbo = db.db("online_quiz");
  794. dbo.collection('testTable').find({college : college,testname : testname}).toArray(function(err,result){
  795. if(key == result[0].test_key)
  796. {
  797. res.send("key matched");
  798. }
  799. else
  800. {
  801. res.send("Invalid Key");
  802. }
  803. });
  804. }
  805. });
  806. }
  807. });
  808. app.get('/test',function(req,res){
  809. if(!req.session.user)
  810. {
  811. res.redirect('/');
  812. }
  813. else if(req.session.type != "2")
  814. {
  815. res.redirect('/');
  816. }
  817. else
  818. {
  819.  
  820. mongo.connect(url,function(err,db){
  821. if(err) throw err;
  822. else
  823. {
  824. var url = require('url');
  825. var a = req.url;
  826. var h = url.parse(a, true);
  827. var qdata = h.query; //returns an object: { year: 2017, month: 'february' }
  828. var testname = qdata.name;
  829. testname = testname.replace(/["']/g,"");
  830. var dbo = db.db("online_quiz");
  831. dbo.collection("credentials").find({email : req.session.user},{projection : {_id : 0,college : 1,section : 1}}).toArray(function(err,user){
  832. var college = user[0].college;
  833. var section = user[0].section;
  834. dbo.collection("Question").find({college : college, section : section, testname : testname}).toArray(function(err,result){
  835. res.render('test',{ data : result });
  836. });
  837. });
  838. }
  839. });
  840. }
  841. });
  842.  
  843. app.get('/practice',function(req,res){
  844. if(!req.session.user)
  845. {
  846. res.redirect('/');
  847. }
  848. if(req.session.type == "0" || req.session.type == "1")
  849. {
  850. req.session.destroy();
  851. res.redirect('/');
  852. }
  853. else
  854. {
  855. mongo.connect(url,function(err,db){
  856. if (err) {
  857. console.log("error in connecting database");
  858. }
  859. else
  860. {
  861. var dbo=db.db("online_quiz");
  862. dbo.collection("credentials").find({email : req.session.user}).toArray(function(err,result){
  863. var college = result[0].college;
  864. dbo.collection("registered_clg").find({college : college}).toArray(function(err,user){
  865. var subjects = user[0].subjects;
  866. res.render('practice',{ info : subjects });
  867. });
  868. });
  869. }
  870. });
  871. }
  872. });
  873.  
  874. app.get('/practice_test',function(req,res){
  875. if(!req.session.user)
  876. {
  877. res.redirect('/');
  878. }
  879. if(req.session.type == "0" || req.session.type == "1")
  880. {
  881. req.session.destroy();
  882. res.redirect('/');
  883. }
  884. else
  885. {
  886. mongo.connect(url,function(err,db){
  887. if (err) {
  888. console.log("error in connecting database");
  889. }
  890. else
  891. {
  892. var url = require('url');
  893. var adr = req.url;
  894. var q = url.parse(adr, true);
  895. var qdata = q.query; //returns an object: { year: 2017, month: 'february' }
  896. var subject = qdata.name //returns 'february'
  897. subject = subject.replace(/["']/g,"");
  898. var dbo = db.db("online_quiz");
  899. dbo.collection('practice_questions').find({subject : subject}).toArray(function(err,result){
  900. if(err)
  901. {
  902. console.log("error");
  903. }
  904. else
  905. {
  906. res.render('practice_test',{ data : result });
  907. }
  908. });
  909. }
  910. });
  911. }
  912. });
Add Comment
Please, Sign In to add comment