Commit f8fc471f authored by Hasitha Samarasekara's avatar Hasitha Samarasekara

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	BackEnd/WebBackEnd/server.js
#	WebFrontEnd/smartcoach-frontend/src/App.js
parents 3d7f4ace 5ca7d3f7
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let FinanceSchema = new Schema({
account_month : {type:String, required:true},
direct_income : {type: String, required:true},
indirect_income : {type: String, required:true},
total_income : {type: String, required:true},
direct_expenses : {type: String, required:true},
indirect_expenses : {type: String, required:true},
total_expenses : {type: String, required:true},
gross_revenue : {type: String, required:true}
},{
timestamps : true
});
const Finance = mongoose.model('finance', FinanceSchema);
module.exports = Finance;
\ No newline at end of file
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let Question = new Schema({
question_id: mongoose.Schema.Types.ObjectId,
category:{
type:String
},
name:{
type:String
},
question_text:{
type:String
},
question_answer:{
type:String
},
defult_mark:{
type: Number
},
q_type:{
type: String
},
time_createdby:{
type: Date
},
time_modifiedby:{
type: Date
},
general_feedback:{
type: String
}
});
module.exports = mongoose.model('Question',Question);
\ No newline at end of file
const router = require('express').Router();
//import models
const Finance = require('../models/finance.model');
let Tutor = require('../models/tutor.user.model');
router.route('/tutors').get((req,res) =>{
Tutor.find({}, {tutor_name:1, _id:0})
.then(tutors => res.json(tutors))
.catch(err => res.status(400).json('Error: '+ err));
});
router.route('/').get((req ,res) => {
Finance.find()
.then( financedetails => res.json(financedetails))
.catch(err => res.status(400).json('Error :'+err));
});
router.route('/store').post((req ,res) =>{
const account_month = req.body.account_month;
const direct_income = req.body.direct_income;
const indirect_income = req.body.indirect_income;
const total_income = req.body.total_income;
const direct_expenses = req.body.direct_expenses;
const indirect_expenses = req.body.indirect_expenses;
const total_expenses = req.body.total_expenses;
const gross_revenue = req.body.gross_revenue;
const newFinancialDetails = new Finance({
account_month,
direct_income,
indirect_income,
total_income,
direct_expenses,
indirect_expenses,
total_expenses,
gross_revenue
});
newFinancialDetails.save()
.then(()=> res.json('Financial Details Added!'))
.catch(err => res.status(400).json('Error :'+err));
});
router.route('/:id').get((req , res) =>{
Finance.findById(req.params.id)
.then(financedetails => res.json(financedetails))
.catch(err => res.status(400).json('Error :'+err));
});
router.route('/update/:id').post((req , res) =>{
Finance.findById(req.params.id)
.then(financialDetails =>{
financialDetails.account_month = req.body.account_month;
financialDetails.direct_income = req.body.direct_income;
financialDetails.indirect_income = req.body.indirect_income;
financialDetails.total_income = req.body.total_income;
financialDetails.direct_expenses = req.body.direct_expenses;
financialDetails.indirect_expenses = req.body.indirect_expenses;
financialDetails.total_expenses = req.body.total_expenses;
financialDetails.gross_revenue = req.body.gross_revenue;
financialDetails.save()
.then(()=> res.json('Finance Details Updated!'))
.catch(err => res.status(400).json('Error :'+err));
})
.catch(err => res.status(400).json('Error :'+err));
});
router.route('/:id').delete((req ,res) =>{
Finance.findByIdAndDelete(req.params.id)
.then(()=> res.json('Financial Details Deleted!'))
.catch(err => res.status(400).json('Error :'+err));
});
module.exports = router;
\ No newline at end of file
const questionRouter = require('express').Router();
let Question = require('../models/question.model.js');
const mongoose = require('mongoose');
questionRouter.route('/').get(function(req, res) {
Question.find(function(err, questions) {
if (err) {
console.log(err);
res.render('index');
} else {
res.json(questions);
}
});
});
questionRouter.route('/:id').get(function (req, res) {
let id = req.params.id;
Question.findById(id, function (err, question) {
res.json(question);
});
});
questionRouter.route('/questionId/:id').get(function (req, res) {
console.log("Question ID");
console.log(req.params.id);
let id = req.params.id;
Question.find({"_id" : id}, function (err, question) {
res.json(question);
});
});
questionRouter.route('/add').post(function(req, res) {
const question = new Question({
question_id: new mongoose.Types.ObjectId(),
category : req.body.category,
name : req.body.name,
question_text: req.body.question_text,
question_answer:req.body.question_answer,
defult_mark: req.body.defult_mark,
q_type: req.body.q_type,
time_createdby: req.body.time_createdby,
time_modifiedby: req.body.time_modifiedby,
general_feedback: req.body.general_feedback
});
question
.save()
.then(result => {
res.json(result);
console.log(result);
res.status(201).json({
message: "Created product successfully",
createdProduct: {
category: result.category,
name: result.name,
question_text: result.question_text,
defult_mark: result.defult_mark,
q_type: result.q_type,
time_createdby: req.body.time_createdby,
time_modifiedby: req.body.time_modifiedby,
general_feedback: req.body.general_feedback,
question_id: result.question_id,
request: {
type: 'GET',
url: "http://localhost:5000/questions/" + result._id
}
}
});
})
.catch(err => {
console.log(err);
res.status(500).json({error: err});
});
});
questionRouter.route('/update/:id').post((req, res) => {
Question.findById(req.params.id,function(err, question){
if(!question)
req.status(404).send("data is not found");
else
question.category = req.body.category;
question.name =req.body.name;
question.question_text = req.body.question_text;
question.defult_mark = req.body.defult_mark;
question.q_type = req.body.q_type;
question.time_createdby = req.body.time_createdby;
question.time_modifiedby = req.body.time_modifiedby;
question.general_feedback = req.body.general_feedback;
question.save().then(question =>{
res.json('Item update!');
})
.catch(err =>{
res.status(400).send("Update not possible");
});
});
});
questionRouter.route('/delete/:id').delete((req, res) => {
Question.findByIdAndDelete(req.params.id)
.then(() => res.json('Product Deleted.'))
.catch(err => res.status(400).json('Error: ' + err));
});
module.exports = questionRouter;
\ No newline at end of file
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const mongoose =require('mongoose');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 5000;
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors({}));
app.use(cors());
app.use(express.json());
const uri = process.env.ATLAS_URI;
......@@ -18,17 +17,24 @@ mongoose.connect(uri,{useNewUrlParser:true, useUnifiedTopology: true, useCreateI
const connection = mongoose.connection;
connection.once('open',() => {
console.log("MongoDB database connection established successfully");
}).catch(err => {
console.error('App starting error:', err.stack);
process.exit(1);
});
const studentRouter = require('./routes/student.route');
const tutorRouter = require('./routes/tutor.route');
const instituteRouter = require('./routes/institute.route');
const userAccount = require('./routes/userAccount.route');
const questionManage = require('./routes/question.route');
const financeRouter = require('./routes/finance.route');
app.use('/studentSingUp',studentRouter);
app.use('/tutorSingUp',tutorRouter);
app.use('/instituteSingUp',instituteRouter);
app.use('/userAccount',userAccount);
app.use('/questions', questionManage);
app.use('/admin/finance', financeRouter);
app.listen(port, () => {
console.log(`Server is running on Port: ${port}`);
......
.dropdown1 {
position: relative;
display: inline-block;
cursor:pointer;
}
.dropdown-content1 {
position: absolute;
display: none;
top: 100%;
left: 0;
z-index: 1000;
float: left;
padding: .65rem 0;
font-size: .88rem;
color: #495057;
text-align: left;
list-style: none;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: .25rem;
}
.dropdown1:hover .dropdown-content1 {
display: block;
}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>SmartCoach</title>
<!-- bootstrap cdn css -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<!-- dashboard css -->
<link rel="stylesheet" href="DashboardAssets/css/dashboard.css">
<link rel="stylesheet" href="DashboardAssets/css/custom.css">
<!-- fa fa icons cdn -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<title>SmartCoach</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!-- bootstrap cdn js -->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<!-- dashboard js -->
<script src="DashboardAssets/js/dashboard.js"></script>
</body>
</html>
import './App.css';
import 'bootstrap/dist/css/bootstrap.min.css';
import { BrowserRouter as Router, Route } from "react-router-dom";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
//Pages
import Login from "./Components/Login";
......@@ -11,17 +10,23 @@ import Home from "./Components/Home";
import SignUp from "./Components/SignUp";
import beforeConfirmation from "./Components/beforeConfirmation";
import VerifiedAccount from "./Components/AccountVerified";
import Dashboard from "./Components/Admin/Dashboard";
function App() {
return (
<Router>
<div className="App">
{/*<ItemNav/>*/}
<Route path="/UserLogin" exact component={Login}/>
<Route path="/Home" exact component={Home}/>
<Route path="/SignUp" exact component={SignUp}/>
<Route path="/beforeConfirm" exact component={beforeConfirmation}/>
<Route path="/AccountVerified/:id" exact component={VerifiedAccount}/>
{/*<Route path="/" exact component={Dashboard}/>*/}
<Switch>
<Route path="/admin"><Dashboard/></Route>
</Switch>
</div>
</Router>
);
......
import React, {Component} from "react";
import {Link} from "react-router-dom";
import axios from "axios";
const Finance = props => (
<tr>
<td>{props.finance.account_month}</td>
<td>Rs.{props.finance.total_income}</td>
<td>Rs.{props.finance.total_expenses}</td>
<td>Rs.{props.finance.gross_revenue}</td>
<td>
<Link style={{color:"black"}} to={"/admin/finance/edit/"+props.finance._id}><button style={{paddingRight:"20px",width:"auto"}} className="btn btn-warning mr-1"><i className="fa fa-pencil"> Edit</i></button></Link>
<button style={{width:"auto",color:"black"}} className="btn btn-danger" onClick={() => {props.deleteFinance(props.finance._id)}}><i className="fa fa-trash"> Delete</i></button>
</td>
</tr>
);
export default class ViewFinancialDetails extends Component{
constructor(props) {
super(props);
this.deleteFinance = this.deleteFinance.bind(this);
this.state = {
finance : []
};
}
componentDidMount() {
axios.get('http://localhost:5000/admin/finance/')
.then(response => {
this.setState({ finance : response.data})
// console.log(this.state);
})
.catch(error =>{
console.log(error);
})
}
deleteFinance(id){
axios.delete('http://localhost:5000/admin/finance/'+id)
.then(res => console.log(res.data));
this.setState({
finance : this.state.finance.filter(el => el._id !== id)
})
}
financialList(){
return this.state.finance.map(currentdetails => {
return <Finance finance={currentdetails} deleteFinance={this.deleteFinance} key={currentdetails._id} />;
})
}
render() {
return(
<div>
<div className="app-page-title">
<div className="page-title-wrapper">
<div className="page-title-heading">
<div className="page-title-icon">
<i className="pe-7s-display1 fa fa-line-chart"></i>
</div>
<div>
Financial Details
</div>
</div>
</div>
</div>
<div className="col-lg-12">
<div className="main-card mb-3 card">
<div className="card-body">
<table className="mb-0 table table-striped">
<thead>
<tr>
{/*<th>#</th>*/}
<th>Account Month</th>
<th>Gross Income</th>
<th>Gross Expenses</th>
<th>Gross Revenue</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{this.financialList()}
</tbody>
</table>
</div>
</div>
</div>
</div>
);
}
}
\ No newline at end of file
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