diff --git a/js/vehicleApi.js b/js/vehicleApi.js index 24217b3..0a1f8c9 100644 --- a/js/vehicleApi.js +++ b/js/vehicleApi.js @@ -1,4 +1,6 @@ let Vehicle = require('../models/vehicle.js'); +let Settings = require('../models/settings.js'); +var mongoose = require('mongoose'); const asyncHandler = require('express-async-handler'); const moment = require('moment'); const { isValidObjectId } = require('mongoose'); @@ -188,11 +190,14 @@ exports.apiRefuelingById=asyncHandler(async (req,res)=>{ res.redirect('/'); return; } + + const settings=await Settings.find({name:"vehicleEmailNotify"}); var nextOilChange=vehicle.oilChangeLast+vehicle.oilChangeInterval var remainingKilometers=nextOilChange-parseInt(kmcounter); - if(nextOilChange<=(kmcounter+5000)) + + if(nextOilChange<=(parseInt(kmcounter)+5000)) { - sendEmail("v.joszef@gmail.com","Szervíz esedékesség "+vehicle.vehicle_id,"Tisztelt Címzett!\n\nA(z) "+vehicle.vehicle_id+" rendszámú "+vehicle.name+" jármű olajcseréje esedékessé válik "+remainingKilometers+" km múlva!") + sendEmail(settings[0].value,"Szervíz esedékesség "+vehicle.vehicle_id,"Tisztelt Címzett!\n\nA(z) "+vehicle.vehicle_id+" rendszámú "+vehicle.name+" jármű olajcseréje esedékessé válik "+remainingKilometers+" km múlva!") } /* if (vehicle.refueling) { @@ -251,4 +256,18 @@ exports.apiGetFueling=asyncHandler(async (req,res)=>{ res.status(404).send('Error') } -}) \ No newline at end of file +}) + +// Beállítások olvasása +exports.apiGetSettings=asyncHandler(async(req,res)=>{ + const {keyName}=req.params + const settings=await Settings.find({name:keyName}); + res.status(200).send(settings); +}) +// Beállítások írása +exports.apiUpdateSettings=asyncHandler(async(req,res)=>{ + + const {keyName,vehicleEmailNotification}=req.body; + await Settings.findOneAndUpdate({name:keyName},{value:vehicleEmailNotification},{new:true,upsert:true}) + res.status(200).send("OK"); +}) \ No newline at end of file diff --git a/models/settings.js b/models/settings.js new file mode 100644 index 0000000..ec4b75d --- /dev/null +++ b/models/settings.js @@ -0,0 +1,15 @@ +let mongoose = require('mongoose'); + +// Settings Schema +let SettingsSchema = mongoose.Schema({ + + // Vehicle Settings + name: {type: String, require:true}, + value:{ + + type: String, + require: true + } + +}); +var Settings = module.exports = mongoose.model('Settings', SettingsSchema); \ No newline at end of file diff --git a/routes/vehicles.js b/routes/vehicles.js index 49b4cc7..7a887a3 100644 --- a/routes/vehicles.js +++ b/routes/vehicles.js @@ -5,7 +5,7 @@ const moment = require('moment'); var utils = require('../js/utils'); let Vehicle = require('../models/vehicle.js'); const fullCalendar=require('../node_modules/fullcalendar'); -const { apiGetVehicles, apiRefuelingById, apiGetVehicle, apiUpdateVehicle, apiOilChangeVehicle, apiGetFueling } = require('../js/vehicleApi'); +const { apiGetVehicles, apiRefuelingById, apiGetVehicle, apiUpdateVehicle, apiOilChangeVehicle, apiGetFueling, apiGetSettings, apiUpdateSettings } = require('../js/vehicleApi'); router.route('/api/getVehicles').get(apiGetVehicles); @@ -14,6 +14,8 @@ router.route('/api/fueling/:id').get(apiGetFueling); router.route('/api/getVehicle/:id').get(apiGetVehicle); router.route('/api/updateVehicle/:id').post(apiUpdateVehicle); router.route('/api/oilchangeVehicle/:id').post(apiOilChangeVehicle); +router.route('/api/settings/:keyName').get(apiGetSettings); +router.route('/api/settings').post(apiUpdateSettings); // Edit Vehicle router.get('/edit/:id', utils.ensureAuthenticated,function (req,res) { Vehicle.findById(req.params.id, function(err,vehicle) diff --git a/views/layout.pug b/views/layout.pug index 0270f77..edb68a6 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -65,6 +65,9 @@ html if user.isAdmin || user.canAccess.invoices li a(href='/employee/accesslist') Munkavállalók + if user.isAdmin || user.canAccess.invoices + li + a(href='/vehicles/view') Járművek if user.isAdmin li.dropdown a.dropdown-toggle(href='#', data-toggle='dropdown', role='button', aria-haspopup='true', aria-expanded='false') diff --git a/views/layout_side.pug b/views/layout_side.pug index c125ffa..c809bec 100644 --- a/views/layout_side.pug +++ b/views/layout_side.pug @@ -62,18 +62,6 @@ html a(id="7",href='/devicesrfid/new') Új RFID eszköz li#listrfiddevice a(id="8",href='/devicesrfid/list') RFID Eszközök - li#vehicle.collapsed(data-toggle='collapse', data-target='#vehicles') - a(id="9",href='#') - i.fa.fa-car.fa-lg - | Járművek - span.arrow - ul#vehicles.sub-menu.collapse(data-id='vehicles') - li#vehiclenew - a(id="10",href='/vehicles/new') Új jármű - li#vehiclelistAll - a(id="11",href='/vehicles/viewAll') Összes jármű - li#vehiclelist - a(id="11",href='/vehicles/view') Járművek li a(id="12",href='/') i.glyphicon.glyphicon-arrow-left diff --git a/views/layout_vehicles.pug b/views/layout_vehicles.pug new file mode 100644 index 0000000..6506364 --- /dev/null +++ b/views/layout_vehicles.pug @@ -0,0 +1,153 @@ +doctype html +html + head + title Munka nyílvántartó + script(type='text/javascript', src='/bower_components/jquery/dist/jquery.min.js') + script(src='/bower_components/bootstrap/dist/js/bootstrap.js') + link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css') + + //link(rel='stylesheet', href='https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css', integrity='sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO', crossorigin='anonymous') + link(href='//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', rel='stylesheet') + //script(type='text/javascript', src='/bower_components/jquery/dist/jquery.min.js') + link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap.min.css') + link(rel='stylesheet', href='/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css') + link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css') + //script(src='https://code.jquery.com/jquery-3.3.1.slim.min.js', integrity='sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo', crossorigin='anonymous') + script(src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js', integrity='sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49', crossorigin='anonymous') + //script(src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js', integrity='sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy', crossorigin='anonymous') + + //link(rel='stylesheet' href='/css/style.css') + //link(rel='stylesheet' href='/css/switch.css') + //link(rel='stylesheet' href='/css/switchsmall.css') + //link(rel='stylesheet' href='/css/checkmark.css') + link(rel='stylesheet' href='/css/table.css') + link(rel='stylesheet', href='/css/sidebar.css') + link(rel='stylesheet' href='/bower_components/jquery-typeahead/dist/jquery.typeahead.min.css') + link(rel='stylesheet' href='/css/darktable.css') + link(rel='stylesheet' href='/css/infopanel.css') + style. + div.a { + text-indent: 50px; + } + + body + nav.nav-side-menu + + .brand + img(src='/IO_technic_LogoFull_I.png', width='150', alt='') + i.fa.fa-bars.fa-2x.toggle-btn(data-toggle='collapse', data-target='#menu-content') + #ml.menu-list + ul#menu-content.menu-content.collapse.out + li#vehicle.collapsed(data-toggle='collapse', data-target='#vehicles') + a(id="9",href='#') + i.fa.fa-car.fa-lg + | Járművek + span.arrow + ul#vehicles.sub-menu.collapse(data-id='vehicles') + li#vehiclenew + a(id="10",href='/vehicles/new') Új jármű + li#vehiclelist + a(id="11",href='/vehicles/view') Járművek + li#vehiclelistAll + a(id="12",href='/vehicles/viewAll') Összes jármű + if user.isAdmin + ul#menu-content.menu-content.collapse.out + li#vehicle.collapsed(data-toggle='collapse', data-target='#vehicleSettings') + a(id="2",href='#') + i.fa.fa-gear + | Beállítások + span.arrow + ul#vehicleSettings.sub-menu.collapse(data-id='vehicleSettings') + li#vehiclenew + a(id="20",data-toggle='modal', data-target='#settingsModal') Értesítések + li + a(id="12",href='/') + i.glyphicon.glyphicon-arrow-left + | Vissza + li#printBtn.hide + //a(href='/invoices/print') + a#print(href='#' data-value= mode) + i.fa.fa-print.fa-lg + | Nyomtatás + + .container.alert-fixed#msg + != messages('message', locals) + if errors + each error, i in errors + div(class="alert alert-danger") #{error.msg} + .container(style='padding-left:300px;width:100%;') + block content + br + hr + footer + p(style='margin-left:10px;') IO-Technic Hungary Copyright © 2018 + //#picsa + script(type='text/javascript',src='/bower_components/jquery/dist/jquery.js') + script(type='text/javascript',src='/js/datepicker.js') + + + + //script(src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js') + script(type='text/javascript', src='/bower_components/moment/min/moment.min.js') + script(src='/bower_components/moment/min/moment-with-locales.js') + //script(type='text/javascript', src='/bower_components/bootstrap/dist/js/bootstrap.min.js') + script(type='text/javascript', src='/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js') + //script(type='text/javascript',src='/js/invoice.js') + //script(type='text/javascript',src='/js/datepicker.js') + script(src='https://cdn.jsdelivr.net/npm/fullcalendar/index.global.min.js') + + script(type='text/javascript',src='/build/pdfmake.js') + script(type='text/javascript',src='/build/vfs_fonts.js') + + script. + window.jQuery || document.write('