Skip to content

Commit d01cc18

Browse files
authored
Merge branch 'development' into 9-create_student_medical_history_model
2 parents 857ef17 + cfae0de commit d01cc18

File tree

11 files changed

+280
-12
lines changed

11 files changed

+280
-12
lines changed

controller/auth.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
const { genrateToken } = require('../util');
1+
const { genrateToken, sendOTP } = require('../util');
22
const user = require('../models/user');
33

4+
otpStore = {}
5+
46
exports.login = async function(req, res, next) {
57
const {id, password} = req.body;
68
let userValidated = await user.validateUser(id, password);
@@ -25,3 +27,31 @@ exports.validateUser = function(req, res, next) {
2527
res.json({res: req.user, msg: "user validated", err:null})
2628
}
2729

30+
exports.sendOTP = async function(req, res, next){
31+
const {uid, emailId} = req.body;
32+
let userExists = await user.checkUser(uid, emailId);
33+
if(userExists){
34+
let otp = Math.floor(1000 + Math.random() * 9000);
35+
otpStore[uid] = otp;
36+
sendOTP(emailId, otp);
37+
res.send({res:"otp sent to emailID"})
38+
}
39+
else{
40+
res.send({err:"incorrect UID or emailId"})
41+
}
42+
}
43+
44+
exports.resetPassword = async function(req, res, next){
45+
const {uid, otp, password} = req.body;
46+
if(otpStore[uid]==otp){
47+
let passwordUpdated = await user.updatePassword(uid, password);
48+
if(passwordUpdated)
49+
res.send({res:"successfully updated password"})
50+
else
51+
res.send({err:"Something went wrong while updating password"})
52+
}
53+
else{
54+
res.send({err:"incorrect otp"});
55+
}
56+
}
57+

models/databaseUtil.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
const mongoose = require('mongoose');
22
require("dotenv").config();
3-
43
mongoose.set('strictQuery', true);
54
mongoose.connect(`${process.env.DB_URL}`);
6-
7-
85
module.exports = { connector:mongoose };

models/emp_cur_details_model.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const { connector } = require("./databaseUtil");
2+
3+
const employeeCurrentEmployementSchema = {
4+
date_of_joining: { type: Date, required: true },
5+
department_name: { type: String, required: true },
6+
designation: { type: String, required: true },
7+
job_status: { type: String, required: true },
8+
job_profile: { type: String, required: true },
9+
current_ctc: { type: Number, required: true },
10+
};
11+
12+
const employeeCurrentEmployement = new connector.model(
13+
"empCurrentDetails",
14+
employeeCurrentEmployementSchema
15+
);
16+
17+
module.exports = {};

models/emp_edu_history.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const { connector } = require('./databaseUtil');
2+
const Education = {
3+
education_type: { type: String, required: true },
4+
education_name: { type: String, required: true },
5+
specialization: { type: String, required: true },
6+
period: { type: String, required: true },
7+
institution_name: { type: String, required: true },
8+
university: { type: String, required: true },
9+
passing_division: { type: String, required: true },
10+
from_year: { type: String, required: true },
11+
upto_year: { type: String, required: true },
12+
registration_number: { type: String, required: true },
13+
aggregate_pct: { type: String, required: true },
14+
final_year_pct: { type: String, required: true },
15+
number_of_attempts: { type: Number, required: true },
16+
rank: { type: Number, required: true },
17+
passing_year: { type: String, required: true },
18+
}
19+
const employeeEducationHistorySchema = {
20+
ssc: { type: Education, required: true },
21+
hsc: { type: Education, required: true },
22+
dip: { type: Education },
23+
iti: { type: Education },
24+
deg: { type: Education },
25+
pgd: { type: Education },
26+
phd: { type: Education },
27+
pdoc: { type: Education }
28+
}
29+
const employeeEducationHistory = new connector.model('emp-edu-history',employeeEducationHistorySchema);

models/std_edu_history.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
const { Schema, default: mongoose } = require('mongoose');
2+
const {connector} = require('./databaseUtil');
3+
4+
const studentEducationSchema = new Schema({
5+
personal_info: {
6+
name: { type: String, required: true },
7+
emailId: { type: String, unique: true, required: true },
8+
gender: { type: String, required: true },
9+
password: { type: String, required: true },
10+
},
11+
//tenth_details
12+
tenth: {
13+
marks: { type: String, required: true },
14+
percentage: { type: Number, required: true },
15+
seat_number: { type: String, required: true },
16+
exam_name: { type: String, required: true },
17+
exam_board: { type: String, required: true },
18+
ms_oms: { type: String, required: true },
19+
merit_number_in_qualifying_exam: { type: String, required: true },
20+
admitted_number: { type: String, required: true },
21+
},
22+
cet_hsc_details: {
23+
cet_roll_no: { type: String, required: true },
24+
cet_marks: { type: String, required: true },
25+
qualifying_exam_for_admission: { type: String, required: true },
26+
std_type: { type: String, required: true },
27+
stream_opted: { type: String, required: true },
28+
medium_of_instruction: { type: String, required: true },
29+
agg_total_marks: { type: Number, required: true },
30+
total_marks_out_of: { type: Number, required: true },
31+
percent_of_marks: { type: String, required: true },
32+
attempt_no: { type: String, required: true },
33+
passing_month: { type: String, required: true },
34+
passing_year: { type: String, required: true },
35+
institution_name: { type: String, required: true },
36+
educ_board_name:{type:String,required:true},
37+
pcm_percent:{type:String,required:true},
38+
pbm_percent:{type:String,required:true},
39+
stu_qualifying_exam:{type:String,required:true},
40+
marks_obtained:{type:String,required:true},
41+
state_rank:{type:String,required:true},
42+
prev_exam_seat_number:{type:String,required:false},
43+
prev_tc_number:{type:String,required:false},
44+
hsc_passed_school_name:{type:String,required:true},
45+
board_pattern:{type:String,required:true},
46+
scholarship_name:{type:String,required:false},
47+
scholarship_type:{type:String,required:false},
48+
dte_seat_type:{type:String,required:true},
49+
dte_user_password:{type:String,required:true},
50+
dte_user_id:{type:String,required:true},
51+
},
52+
graduation_details: {
53+
graduation_institute:{type:String,required:true},
54+
graduation_branch:{type:String,required:true},
55+
graduation_degree:{type:String,required:true},
56+
graduation_marks_pct:{type:Number,required:true},
57+
graduations_passing_year:{type:String,required:true},
58+
urban_rural:{type:String,required:true},
59+
scholarship_number:{type:String,required:false},
60+
last_school_college_attended:{type:String,required:true},
61+
}
62+
})
63+
const studentEducation = new connector.model('std-edu',studentEducationSchema);
64+
module.exports={};

models/std_personal.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import { connector } from './databaseUtil';
2+
3+
const stdPersonalSchema = {
4+
title:{type: String, required: true},
5+
firstName:{type: String, required: true},
6+
middleName:{type: String, required: true},
7+
motherName:{type: String, required: true},
8+
gender:{type: String, required: true},
9+
dob:{type: Date, required: true},
10+
age:{type: Number, required: true},
11+
birthPlace:{type: String, required: true},
12+
nationality:{type: String, required: true},
13+
motherTongue:{type: String, required: true},
14+
domicileState:{type: String, required: true},
15+
religion:{type: String, required: true},
16+
castCategory:{type: String, required: true},
17+
maharashtraKarnatakaBorderCandidate:{type: Boolean, required: true},
18+
castDescription:{type: String, required: true},
19+
subCasteDescription:{type: String, required: true},
20+
nonCreamyLayerCertificateAttached:{type: Boolean, required: true},
21+
hobby:{type: String, required: true},
22+
passportNo:{type: Number},
23+
bloodGroup:{type: String, required: true},
24+
physicallyHandicapped:{type: Boolean, required: true},
25+
studentMobNo:{type: Number, required: true},
26+
studentMail:{type: String, required: true},
27+
parentMobNo:{type: Number, required: true},
28+
parentMail:{type: String, required: true},
29+
perAddrDescr:{type: String, required: true},
30+
perPlotNo:{type: Number, required: true},
31+
perStreetName:{type: String, required: true},
32+
perStuAddr1:{type: String, required: true},
33+
perStuAddr2:{type: String},
34+
city:{type: String, required: true},
35+
percellphone:{type: Number, required: true},
36+
perpincode:{type: Number, required: true},
37+
perresiphone:{type: Number, required: true},
38+
permailaddress:{type: String, required: true},
39+
country:{type: String, required: true},
40+
state:{type: String, required: true},
41+
district:{type: String, required: true},
42+
tahsil:{type: String, required: true},
43+
correspondanceAddrDescr:{type: String},
44+
correspondancePlotNo:{type: Number},
45+
correspondanceStreetName:{type: String},
46+
correspondanceStuAddr1:{type: String},
47+
correspondanceStuAddr2:{type: String},
48+
correspondanceCity:{type: String},
49+
correspondanceCellPhone:{type: Number},
50+
correspondancePincode:{type: Number},
51+
correspondanceResiPhone:{type: Number},
52+
correspondanceMailAddress:{type: String},
53+
correspondanceCountry:{type: String},
54+
correspondanceState:{type: String},
55+
correspondanceDistrict:{type: String},
56+
correspondanceTahsil:{type: String},
57+
fatherDetails:{type: String, required: true},
58+
fathersOccupation:{type: String, required: true},
59+
parentsFirstName:{type: String, required: true},
60+
parentsMiddleName:{type: String, required: true},
61+
parentsLastName:{type: String, required: true},
62+
guardianMobNo:{type: Number},
63+
guardianMailId:{type: String},
64+
nameAsPerTc:{type: String},
65+
casteAsPerTc:{type: String},
66+
birthStatus:{type: String, required: true},
67+
maritalStatus:{type: Boolean, required: true},
68+
panCardNo:{type: Number},
69+
passportExpiry:{type: Date},
70+
drivingLicNo:{type: Number},
71+
drivingLicValidTo:{type: Date},
72+
aadharCardNo:{type: Number, required: true},
73+
electionCardNo:{type: Number},
74+
motherMobNo:{type: Number},
75+
motherEmailId:{type: String},
76+
parentIncome:{type: Number, required: true},
77+
photoUploaded:{type: Boolean, required: true},
78+
signUploaded:{type: Boolean, required: true},
79+
thumbUploaded:{type: Boolean, required: true},
80+
noOfDocumentsUploaded:{type: Number, required: true},
81+
};
82+
83+
const stdPersonal = new connector.model('Student_Personal', stdPersonalSchema);

models/user.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ const userSchema = {
1010

1111
const User = new connector.model('User', userSchema);
1212

13-
1413
async function createUser(name, password, emailId, uid, userType){
1514
const user = new User({
1615
name: name,
@@ -37,4 +36,22 @@ async function validateUser(uid, pass){
3736
return null;
3837
}
3938

40-
module.exports = {validateUser:validateUser, createUser:createUser};
39+
async function checkUser(uid, emailId){
40+
let user = await User.findOne({uid: uid, emailId:emailId}).catch(err=>console.log(err))
41+
if(user)
42+
return true
43+
else
44+
return false
45+
}
46+
47+
async function updatePassword(uid, password){
48+
let user = await User.findOne({uid:uid}).catch(err=>console.log(err))
49+
if(user){
50+
user.password = password;
51+
let userUpdated = await user.save().then(res=>true).catch(err=>{console.log(err);return false})
52+
return userUpdated;
53+
}
54+
return false;
55+
}
56+
57+
module.exports = {validateUser:validateUser, createUser:createUser, checkUser:checkUser, updatePassword:updatePassword};

package-lock.json

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"express-validator": "^6.15.0",
1818
"jsonwebtoken": "^9.0.0",
1919
"mongoose": "^6.9.0",
20-
"morgan": "~1.9.1"
20+
"morgan": "~1.9.1",
21+
"nodemailer": "^6.9.1"
2122
},
2223
"devDependencies": {
2324
"nodemon": "^2.0.20"

routes/auth.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ const express = require('express');
22
const router = express.Router();
33
const authController = require('../controller/auth');
44
const authenticateToken = require('../middleware/auth');
5-
6-
75
router.post('/', authController.login);
8-
96
router.post("/validateUser", authenticateToken, authController.validateUser)
7+
router.post("/sendOTP", authController.sendOTP)
108

9+
router.post("/resetPassword", authController.resetPassword)
1110
module.exports = router;
11+

0 commit comments

Comments
 (0)