'use strict'
const express = require('express')
const routes = require('./routes')
// const body = require('body-parser')
let app = express()
app.use(express.urlencoded({extended: false}))
// app.use(body.urlencoded({extended: true}))
// app.use(body.json());
app.set("view engine", "ejs")
app.use('/', routes)
app.listen(3000, () => {
console.log('running apps')
})
const routes = require('express').Router()
const student = require('./student.js')
const teacher = require('./teacher.js')
const subject = require('./subject.js')
routes.get('/', (req,res) => {
res.send('home')
})
routes.use('/teacher', teacher)
routes.use('/subject', subject)
routes.use('/student', student)
module.exports = routes
const routes = require("express").Router()
const Student = require('../models').Student
const Subject = require('../models').Subject
routes.get('/', (req, res) => {
Student.findAll()
.then((result) => {
res.render('allStudent', {
listdata: result.map(x => x.dataValues),
column: Student.getKeys()
})
})
.catch((err) => {
res.render('error', {err:err})
})
})
routes.get('/add', (req,res) => {
res.render('addStudent', {
column: Student.getKeys()
})
})
routes.post('/add', (req,res) => {
Student.create({
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
})
.then((response) => {
res.redirect('/student')
})
.catch((err) => {
res.render('error', {err:err})
})
})
routes.get('/delete/:id', (req,res) => {
Student.destroy({
where: {id: req.params.id}
})
.then((response) => {
res.redirect('/student')
})
.catch((err) => {
res.render('error', {err:err})
})
})
routes.get('/edit/:id', (req,res) => {
Student.findByPk(req.params.id)
.then((result) => {
res.render('editStudent', {
data: result.dataValues
})
})
})
routes.post('/edit/:id', (req,res) =>{
Student.update({
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email
},{
where: {id: req.params.id}
})
.then((result) => {
res.redirect('/student')
})
.catch((err) => {
res.render('error', {err:err})
})
})
routes.get('/addsubject/:id', (req,res) => {
Subject.findAll()
.then((subjectResult) => {
Student.findByPk(req.params.id)
.then((result) => {
res.render('addStudentSubject', {
data: result.dataValues,
subject: subjectResult.map(x => x.dataValues)
})
})
})
.catch((err) => {
res.render('error', {err:err})
})
})
routes.post('/addsubject/:id', (req,res) =>{
Student.update({
SubjectId: req.body.SubjectId
},{
where: {id: req.params.id}
})
.then((result) => {
res.redirect('/student')
})
.catch((err) => {
res.render('error', {err:err})
})
})
module.exports = routes
'use strict';
const routes = require("express").Router()
const sequelize = require('sequelize')
const Op = sequelize.Op
module.exports = (sequelize, DataTypes) => {
const Teacher = sequelize.define('Teacher', {
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
email: {
type:DataTypes.STRING,
validate:{
notEmpty:{
msg:"Email required"
},
isEmail:{
msg:"Valid email required"
},
isUnique: function(value, cb) {
Teacher.findOne({where: {email: value, id:{[Op.ne]: this.id}}})
.then((result) => {
if(result){
cb('email already used')
} else {
cb()
}
})
.catch((err) => {
throw new Error(err)
})
}
}
},
SubjectId: DataTypes.INTEGER
}, {});
Teacher.getKeys = function(){
let key = Object.keys(this.rawAttributes)
let result = []
for (let i = 0; i < key.length; i++){
if (key[i] !== 'createdAt' && key[i] !== 'updatedAt'){
result.push(key[i])
}
}
return result
}
Teacher.prototype.getFullName = function(){
return `${this.first_name} ${this.last_name}`;
}
Teacher.associate = function(models) {
// associations can be defined here
Teacher.belongsTo(models.Subject)
}
return Teacher;
}
'use strict';
module.exports = (sequelize, DataTypes) => {
const Report = sequelize.define('Report', {
title: DataTypes.STRING,
description: DataTypes.STRING,
status: DataTypes.STRING,
prosecutor: DataTypes.STRING,
defendant: DataTypes.STRING,
issueDate: DataTypes.DATE,
CourtId: DataTypes.INTEGER,
noReport: DataTypes.STRING
}, {
hooks:{
beforeCreate: (input) => {
let idCo = ''
if((input.CourtId < 100 && input.CourtId > 10)){
idCo += '0' + input.CourtId
}
else if(input.CourtId < 10){
idCo += '00' + input.CourtId
}
input.noReport = idCo + '-' + new Date(input.createdAt).toString()
},
afterCreate: (input) => {
let idCo = ''
if((input.id < 100 && input.id > 10)){
input.noReport += input.id + input.createdAt.toString() + '-00' + idCo
}
else if(input.id < 10){
input.noReport += input.id + input.createdAt.toString() + '-0' + idCo
}
}}
});
Report.associate = function(models) {
// associations can be defined here
Report.belongsTo(models.Court)
};
return Report;
};