Commit 5ca7d3f7 authored by Hasitha Samarasekara's avatar Hasitha Samarasekara

Merge branch 'IT18058338' into 'master'

It18058338

See merge request !6
parents cedd91cd c6aac8e4
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 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 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(express.json());
......@@ -17,17 +17,22 @@ 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 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('/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";
import ItemNav from "./Components/Navbar";
import Home from "./Components/Home";
import SignUp from "./Components/SignUp";
import Dashboard from "./Components/Admin/Dashboard";
function App() {
return (
<Router>
<div className="App">
<ItemNav/>
{/*<ItemNav/>*/}
<Route path="/UserLogin" exact component={Login}/>
<Route path="/Home" exact component={Home}/>
<Route path="/SignUp" exact component={SignUp}/>
{/*<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