Commit 6e5c87ee authored by Hasitha Samarasekara's avatar Hasitha Samarasekara

Home page Filters added ann create class UI change,

Connect flak api
parent 828e015e
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const TutorRatingSchema = new Schema({
tutor_id:{type:mongoose.Schema.Types.ObjectId,ref: 'Post'},
student_id:{type:mongoose.Schema.Types.ObjectId,ref: 'Post'},
rating: {type:String},
review:{type:String},
version:{type:String},
}, {
timestamps:true,
});
const TutorRatings = mongoose.model('TutorRatings',TutorRatingSchema);
module.exports = TutorRatings;
\ No newline at end of file
...@@ -3,9 +3,10 @@ const mongoose = require('mongoose'); ...@@ -3,9 +3,10 @@ const mongoose = require('mongoose');
const Schema = mongoose.Schema; const Schema = mongoose.Schema;
const ALResultsSchema = new Schema({ const ALResultsSchema = new Schema({
student_id:{type:mongoose.Schema.Types.ObjectId,ref: 'Post'}, student_id:{type:mongoose.Schema.Types.ObjectId,ref: 'students'},
year:{type:String,required:false}, year:{type:String,required:false},
stream: {type:String,required:true}, stream: {type:String,required:true},
Subjects : {type:Object},
subject01:{type:String,required:true}, subject01:{type:String,required:true},
subject02:{type:String,required:true}, subject02:{type:String,required:true},
subject03:{type:String,required:true}, subject03:{type:String,required:true},
......
...@@ -19,11 +19,11 @@ const userSchema = new Schema({ ...@@ -19,11 +19,11 @@ const userSchema = new Schema({
tutor_main_city:[{type:String}], tutor_main_city:[{type:String}],
tutor_medium:{type:String}, tutor_medium:{type:String},
tutor_qualification:{type:String}, tutor_qualification:{type:String},
tutor_instituteIDList:[{type:mongoose.Schema.Types.ObjectId,ref: 'Post'}], tutor_instituteIDList:[{type:mongoose.Schema.Types.ObjectId,ref: 'institute'}],
}, { }, {
timestamps:true, timestamps:true,
}); });
//const institute = mongoose.model('institute',userSchema);
const User = mongoose.model('tutor',userSchema); const User = mongoose.model('tutor',userSchema);
module.exports = User; module.exports = User;
\ No newline at end of file
This diff is collapsed.
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
"mongoose": "^5.12.15" "mongoose": "^5.12.15"
}, },
"devDependencies": { "devDependencies": {
"nodemailer": "^6.6.2" "nodemailer": "^6.6.2",
"request": "^2.88.2"
} }
} }
const router = require('express').Router();
let tutor = require('../models/tutor.user.model');
let tutorRating = require('../models/TutorRatingAndReviews.model');
const mongoose = require("mongoose");
const express = require('express')
const request = require('request');
router.route('/getFilteredList').post((req,res) =>{
let tutorReviewResults = [];
tutor.find({
"tutor_Stream" : {'$regex': req.body.selectedStream, '$options': 'i'},
"tutor_subjects" : {'$regex': req.body.selectedSubject, '$options': 'i'},
"tutor_main_district" : {'$regex': req.body.selectedDistrict, '$options': 'i'},
"tutor_main_city" : {'$regex': req.body.selectedCity, '$options': 'i'},
"tutor_medium" : {'$regex': req.body.selectedLanguage, '$options': 'i'},
"tutor_class_type" : {'$regex': req.body.selectedClassType, '$options': 'i'},
})
.then(async tutors => {
// async function getTutorData(tutor) {
// for (let i = 0; i < tutor.length; i++) {
// // var docregistrationnumber = arr[i].docregistrationnumber
// // var registrationAuthority = arr[i].docregistrationauthority
// // var data = await doctorData.getDoctorByRegNumber(docregistrationnumber, registrationAuthority);
// tutorRating.find(()=>{
// tutor_id : tutor._id
// })
// .then(reviews => {
// let reviewsList = [];
//
// reviewsList = await Get
// for (const oneReview of reviews){
// reviewsList.push(oneReview.review);
// //console.log("oneReview review");
// //console.log(oneReview.review);
// }
// console.log("Reviews : " + reviewsList)
//
//
// let options = {
// uri: 'http://localhost:5000/review_prediction_for_tutor',
// body: JSON.stringify(reviewsList),
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json'
// }
// }
// request(options, function (error, response) {
// // console.log(error, response.body);
// //tutor.tutor_main_district = "Test";
// //tutorReviewResults.tutor_reviewValue = response.body;
// let payload = {
// "tutor_id" : tutor._id,
// "tutor_name" : tutor.tutor_name,
// "tutor_nic" : tutor.tutor_nic,
// "tutor_email" : tutor.tutor_email,
// "tutor_phone" : tutor.tutor_phone,
// "tutor_address" : tutor.tutor_address,
// "tutor_password" : tutor.tutor_password,
// "tutor_gender" : tutor.tutor_gender,
// "tutor_status" : tutor.tutor_status,
// "tutor_image" : tutor.tutor_image,
// "tutor_Stream" : tutor.tutor_Stream,
// "tutor_subjects" : tutor.tutor_subjects,
// "tutor_class_type" : tutor.tutor_class_type,
// "tutor_main_district" : tutor.tutor_main_district,
// "tutor_main_city" : tutor.tutor_main_city,
// "tutor_medium" : tutor.tutor_medium,
// "tutor_qualification" : tutor.tutor_qualification,
// "tutor_reviewValue" : JSON.parse(response.body).result,
//
// };
// tutorReviewResults.push(payload);
// console.log(tutorReviewResults.length)
// });
// reviewsList = [];
// })
//
// arra.push(data);
// }
//
// return arra;
// }
let reviewFinalResults = []
for (let tutor of tutors){
tutorRating.find(()=>{
tutor_id : tutor._id
})
.then(reviews => {
let reviewsList = [];
for (const oneReview of reviews){
reviewsList.push(oneReview.review);
//console.log("oneReview review");
//console.log(oneReview.review);
}
console.log("Reviews : " + reviewsList)
let options = {
uri: 'http://localhost:5000/review_prediction_for_tutor',
body: JSON.stringify(reviewsList),
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
}
request(options, function (error, response) {
// console.log(error, response.body);
//tutor.tutor_main_district = "Test";
//tutorReviewResults.tutor_reviewValue = response.body;
let payload = {
"tutor_id" : tutor._id,
"tutor_name" : tutor.tutor_name,
"tutor_nic" : tutor.tutor_nic,
"tutor_email" : tutor.tutor_email,
"tutor_phone" : tutor.tutor_phone,
"tutor_address" : tutor.tutor_address,
"tutor_password" : tutor.tutor_password,
"tutor_gender" : tutor.tutor_gender,
"tutor_status" : tutor.tutor_status,
"tutor_image" : tutor.tutor_image,
"tutor_Stream" : tutor.tutor_Stream,
"tutor_subjects" : tutor.tutor_subjects,
"tutor_class_type" : tutor.tutor_class_type,
"tutor_main_district" : tutor.tutor_main_district,
"tutor_main_city" : tutor.tutor_main_city,
"tutor_medium" : tutor.tutor_medium,
"tutor_qualification" : tutor.tutor_qualification,
"tutor_reviewValue" : JSON.parse(response.body).result,
};
tutorReviewResults.push(payload);
console.log(tutorReviewResults.length)
});
reviewsList = [];
})
// console.log(reviewFinalResults)
}
console.log("Last " +tutorReviewResults.length)
//res.json(tutorReviewResults)
}).then(()=>{
console.log("Then " +tutorReviewResults.length)
res.json(tutorReviewResults)
})
.catch(err => res.status(400).json('Eroor: '+ err));
});
module.exports = router;
...@@ -13,6 +13,7 @@ router.route('/add').post(async(req,res) =>{ ...@@ -13,6 +13,7 @@ router.route('/add').post(async(req,res) =>{
const student_id = mongoose.Types.ObjectId(req.body.student_id); const student_id = mongoose.Types.ObjectId(req.body.student_id);
const year = req.body.year; const year = req.body.year;
const stream = req.body.stream; const stream = req.body.stream;
const Subjects = req.body.Subjects;
const subject01 = req.body.subject01; const subject01 = req.body.subject01;
const subject02 = req.body.subject02; const subject02 = req.body.subject02;
const subject03 = req.body.subject03; const subject03 = req.body.subject03;
...@@ -27,6 +28,7 @@ router.route('/add').post(async(req,res) =>{ ...@@ -27,6 +28,7 @@ router.route('/add').post(async(req,res) =>{
student_id, student_id,
year, year,
stream, stream,
Subjects,
subject01, subject01,
subject02, subject02,
subject03, subject03,
...@@ -49,7 +51,7 @@ router.route('/add').post(async(req,res) =>{ ...@@ -49,7 +51,7 @@ router.route('/add').post(async(req,res) =>{
else { else {
ALevelResults.findById(req.body.student_id, function(err, details){ ALevelResults.findById(req.body.student_id, function(err, details){
if(!details){ if(!details){
req.status(404).send("data is not found"); res.status(404).send("data is not found");
} }
else { else {
details.year = year; details.year = year;
......
...@@ -30,31 +30,32 @@ transporter.verify((error, success) => { ...@@ -30,31 +30,32 @@ transporter.verify((error, success) => {
router.route('/').get((req,res) =>{ router.route('/').get((req,res) =>{
tutor.find() tutor.find()
.then(tutors => res.json(tutors))
.catch(err => res.status(400).json('Eroor: '+ err));
});
router.route('/getFilteredList').post((req,res) =>{
console.log(req.body);
tutor.find({
"tutor_Stream" : {'$regex': req.body.selectedStream, '$options': 'i'},
"tutor_subjects" : {'$regex': req.body.selectedSubject, '$options': 'i'},
"tutor_main_district" : {'$regex': req.body.selectedDistrict, '$options': 'i'},
"tutor_main_city" : {'$regex': req.body.selectedCity, '$options': 'i'},
"tutor_medium" : {'$regex': req.body.selectedLanguage, '$options': 'i'},
"tutor_class_type" : {'$regex': req.body.selectedClassType, '$options': 'i'},
})
.then(tutors => { .then(tutors => {
//console.log(tutors); console.log(tutors);
res.json(tutors) res.json(tutors)
}) })
.catch(err => res.status(400).json('Eroor: '+ err)); .catch(err => res.status(400).json('Eroor: '+ err));
}); });
router.route('/:id').get(function (req, res) {
let id = req.params.id;
console.log("TutorId : " + id)
tutor.findById(id).populate(['tutor_instituteIDList']).then(tutor => {
console.log(tutor);
res.json(tutor);
}).catch(err => res.status(400).json('Eroor: '+ err));
});
// router.route('/:id').get(function (req, res) {
// let id = req.params.id;
// console.log("TutorId : " + id)
// tutor.findById(id).populate("tutor_instituteIDList").then(tutor => {
// console.log(tutor);
// res.json(tutor);
// }).catch(err => res.status(400).json('Eroor: '+ err));
// });
router.route('/add').post(async(req,res) =>{ router.route('/add').post(async(req,res) =>{
console.log("Tutor Registration began") console.log("Tutor Registration began")
......
const router = require('express').Router();
let tutorRatingsRoute = require('../models/TutorRatingAndReviews.model');
const mongoose = require("mongoose");
router.route('/add').post(async(req,res) =>{
const tutor_id = mongoose.Types.ObjectId(req.body.tutor_id);
const student_id = mongoose.Types.ObjectId(req.body.student_id);
const rating = req.body.rating;
const review = req.body.review;
const version = req.body.version;
const newTutorRating = new tutorRatingsRoute({
tutor_id,
student_id,
rating,
review,
version,
});
newTutorRating.save()
.then( () => {
res.json('New Review Added');
})
.catch(err =>res.status(400).json('Error: '+err));
});
module.exports = router;
...@@ -4,7 +4,7 @@ const bodyParser = require('body-parser'); ...@@ -4,7 +4,7 @@ const bodyParser = require('body-parser');
const mongoose =require('mongoose'); const mongoose =require('mongoose');
require('dotenv').config(); require('dotenv').config();
const app = express(); const app = express();
const port = process.env.PORT || 5000; const port = process.env.PORT || 5001;
app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.urlencoded({ extended: true }));
...@@ -29,6 +29,8 @@ const userAccount = require('./routes/userAccount.route'); ...@@ -29,6 +29,8 @@ const userAccount = require('./routes/userAccount.route');
const questionManage = require('./routes/question.route'); const questionManage = require('./routes/question.route');
const financeRouter = require('./routes/finance.route'); const financeRouter = require('./routes/finance.route');
const studentResult = require('./routes/studentALResult.route'); const studentResult = require('./routes/studentALResult.route');
const tutorRating = require('./routes/tutorRatings.route');
const filteredList = require('./routes/filteredList.route');
app.use('/studentSingUp',studentRouter); app.use('/studentSingUp',studentRouter);
app.use('/tutorSingUp',tutorRouter); app.use('/tutorSingUp',tutorRouter);
...@@ -37,6 +39,8 @@ app.use('/userAccount',userAccount); ...@@ -37,6 +39,8 @@ app.use('/userAccount',userAccount);
app.use('/questions', questionManage); app.use('/questions', questionManage);
app.use('/admin/finance', financeRouter); app.use('/admin/finance', financeRouter);
app.use('/studentResults', studentResult); app.use('/studentResults', studentResult);
app.use('/tutorRatings', tutorRating);
app.use('/filteredList', filteredList);
app.listen(port, () => { app.listen(port, () => {
console.log(`Server is running on Port: ${port}`); console.log(`Server is running on Port: ${port}`);
......
...@@ -12473,6 +12473,11 @@ ...@@ -12473,6 +12473,11 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
"integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew=="
}, },
"react-icons": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.2.0.tgz",
"integrity": "sha512-rmzEDFt+AVXRzD7zDE21gcxyBizD/3NqjbX6cmViAgdqfJ2UiLer8927/QhhrXQV7dEj/1EGuOTPp7JnLYVJKQ=="
},
"react-is": { "react-is": {
"version": "16.13.1", "version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-dropdown": "^1.9.2", "react-dropdown": "^1.9.2",
"react-icons": "^4.2.0",
"react-router-dom": "^5.2.0", "react-router-dom": "^5.2.0",
"react-scripts": "4.0.3", "react-scripts": "4.0.3",
"react-select-search": "^3.0.8", "react-select-search": "^3.0.8",
......
...@@ -16,6 +16,7 @@ import QuestionDetails from "./Components/IT18050240/question_details" ...@@ -16,6 +16,7 @@ import QuestionDetails from "./Components/IT18050240/question_details"
import QuestionLayout from "./Components/IT18050240/question_layout" import QuestionLayout from "./Components/IT18050240/question_layout"
//import AdminQuestionManagement from "./Components/IT18050240/admin_question_management.js" //import AdminQuestionManagement from "./Components/IT18050240/admin_question_management.js"
import QuestionBank from "./Components/IT18050240/question_bank" import QuestionBank from "./Components/IT18050240/question_bank"
import TutorProfileView from "./Components/HomePage/TutorProfileView";
function App() { function App() {
return ( return (
...@@ -27,6 +28,7 @@ function App() { ...@@ -27,6 +28,7 @@ function App() {
<Route path="/SignUp" exact component={SignUp}/> <Route path="/SignUp" exact component={SignUp}/>
<Route path="/beforeConfirm" exact component={beforeConfirmation}/> <Route path="/beforeConfirm" exact component={beforeConfirmation}/>
<Route path="/AccountVerified/:id" exact component={VerifiedAccount}/> <Route path="/AccountVerified/:id" exact component={VerifiedAccount}/>
<Route path="/Home/ViewProfile/:id" exact component={TutorProfileView}/>
{/*<Route path="/studentDashboard" exact component={StudentDashboard}/>*/} {/*<Route path="/studentDashboard" exact component={StudentDashboard}/>*/}
......
...@@ -343,6 +343,7 @@ export default class Dashboard extends Component { ...@@ -343,6 +343,7 @@ export default class Dashboard extends Component {
{/*</Link>*/} {/*</Link>*/}
</li> </li>
<li> <li>
<a href="#"> <a href="#">
<i className="metismenu-icon fa fa-calendar"></i> <i className="metismenu-icon fa fa-calendar"></i>
......
...@@ -97,8 +97,7 @@ export default class TutorCard extends Component{ ...@@ -97,8 +97,7 @@ export default class TutorCard extends Component{
<img src={RecommendIcon} style={{width:'100px', height:'90px', float:'left', margin:'10px'}}/> <img src={RecommendIcon} style={{width:'100px', height:'90px', float:'left', margin:'10px'}}/>
</div> </div>
</div> </div>
{/*{console.log("In Tutor Card")}*/}
{/*{console.log(this.props)}*/}
</div> </div>
) )
} }
......
...@@ -113,11 +113,17 @@ export default class ALResults extends Component{ ...@@ -113,11 +113,17 @@ export default class ALResults extends Component{
onSubmitResults(e){ onSubmitResults(e){
//let student_id = '60fc1aaf718c264214061846'; //let student_id = '60fc1aaf718c264214061846';
let Subject = {
[this.state.sub01] : this.state.sub01Result,
[this.state.sub02] : this.state.sub02Result,
[this.state.sub03] : this.state.sub03Result,
}
const newResult = { const newResult = {
student_id:this.state.studentID, student_id:this.state.studentID,
year:this.state.year, year:this.state.year,
stream:this.state.stream, stream:this.state.stream,
Subjects:Subject,
subject01:this.state.sub01, subject01:this.state.sub01,
subject02:this.state.sub02, subject02:this.state.sub02,
subject03:this.state.sub03, subject03:this.state.sub03,
......
const configs = { const configs = {
BASE_URL: 'http://localhost:5000', BASE_URL: 'http://localhost:5001',
}; };
module.exports = configs; module.exports = configs;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment