Olajcsere Email értesítő hozzáadva
This commit is contained in:
parent
2f7c091524
commit
a75ab72512
|
|
@ -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)
|
||||
{
|
||||
|
|
@ -252,3 +257,17 @@ exports.apiGetFueling=asyncHandler(async (req,res)=>{
|
|||
}
|
||||
|
||||
})
|
||||
|
||||
// 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");
|
||||
})
|
||||
|
|
@ -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);
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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('<script src="../../assets/js/vendor/jquery.min.js"><\\/script>')
|
||||
// Get current page and set current in nav
|
||||
$(document).ready(function(){
|
||||
|
||||
// outer scope
|
||||
var phrases = [];
|
||||
|
||||
$('#menu-content ul').each(function(idx,ml){
|
||||
// inner scope
|
||||
var menuId = $(this).attr('id');//$(this).attr("id");
|
||||
// var menuState = $(this).is( ":visible" );
|
||||
// console.log(menuState);
|
||||
//console.log(menuId);
|
||||
if(localStorage.getItem(menuId))
|
||||
{
|
||||
$(this).addClass('collapse in');
|
||||
$(this).removeClass('collapse');
|
||||
$(this).attr("aria-expanded","true");
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).removeClass('collapse in');
|
||||
$(this).addClass('collapse');
|
||||
$(this).attr("aria-expanded","false");
|
||||
}
|
||||
|
||||
});
|
||||
//console.log(phrases)
|
||||
|
||||
$("#msg").delay(3000).slideUp(300);
|
||||
})
|
||||
$('#ml li').on('click',function(e){
|
||||
|
||||
$('#menu-content ul').each(function(idx,ml){
|
||||
// inner scope
|
||||
var menuId = $(this).attr('id');
|
||||
var menuState = $(this).is( ":visible" );
|
||||
// console.log(menuId);
|
||||
// console.log(localStorage.getItem(menuId));
|
||||
localStorage.setItem(menuId ,menuState);
|
||||
//$(this).addClass('collapsed in');
|
||||
|
||||
});
|
||||
// var menuId = $(this).attr('id');//$(this).attr("id");
|
||||
// var menuState = this.getAttribute('aria-expanded')
|
||||
// console.log();
|
||||
|
||||
// console.log($('#ml li').hasClass('show'));
|
||||
})
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
#settingsModal.modal(tabindex='-1', role='dialog', aria-labelledby='settingsModalLabel', aria-hidden='true')
|
||||
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
|
||||
.modal-dialog(role='document', style='width:1000px')
|
||||
.modal-content
|
||||
.modal-header.bg-primary(style="background: Primary")
|
||||
h4 Értesítési beállítások
|
||||
.modal-body
|
||||
.form-group
|
||||
label.form-label(for='emailList') Megnevezés:
|
||||
input#emailList.form-control(name='emailList',type=text, autofocus,tabindex='1', readonly=false,width='1000')
|
||||
br
|
||||
.modal-footer
|
||||
button.btn.btn-primary(type='button', data-dismiss='modal')
|
||||
i.fa.fa-arrow-left
|
||||
| | Bezár
|
||||
button#settingsSave.btn.btn-primary(type='button' )
|
||||
i.fa.fa-save
|
||||
| | Mentés
|
||||
script.
|
||||
$('#settingsModal').on('show.bs.modal', function () {
|
||||
$.get('/vehicles/api/settings/vehicleEmailNotify',function(data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
$('#emailList').val(data[0].value);
|
||||
}
|
||||
})
|
||||
})
|
||||
// Mentés
|
||||
$( "#settingsSave" ).click(function() {
|
||||
var vehicleEmailNotification=$('#emailList').val()
|
||||
$.post( "/vehicles/api/settings", { keyName:"vehicleEmailNotify",vehicleEmailNotification: vehicleEmailNotification})
|
||||
.done(function( data ) {
|
||||
|
||||
$('.modal-backdrop').remove()
|
||||
$('#vehicleEditModal').hide();
|
||||
}).fail(function(xhr,status,error){
|
||||
alert( "Data Loaded: " + xhr.responseText );
|
||||
})
|
||||
|
||||
});
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
extends layout_side
|
||||
extends layout_vehicles
|
||||
|
||||
block content
|
||||
link(rel='stylesheet' href='/bower_components/jquery-typeahead/dist/jquery.typeahead.min.css')
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
extends layout_side
|
||||
extends layout_vehicles
|
||||
|
||||
block content
|
||||
.container
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
extends layout_side
|
||||
extends layout_vehicles
|
||||
|
||||
block content
|
||||
.container
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
extends layout_side
|
||||
extends layout_vehicles
|
||||
|
||||
block content
|
||||
style.
|
||||
|
|
@ -16,6 +16,7 @@ block content
|
|||
link(href='/bower_components/bootstrap-toggle/css/bootstrap-toggle.min.css', rel='stylesheet', type='text/css')
|
||||
link(href='https://cdn.jsdelivr.net/gh/gitbrent/bootstrap-switch-button@1.1.0/css/bootstrap-switch-button.min.css' rel='stylesheet')
|
||||
//-link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css')
|
||||
include modal_settings
|
||||
#vehicleModal.modal(tabindex='-1', role='dialog', aria-labelledby='vehicleModalLabel', aria-hidden='true')
|
||||
//-form(method='GET',id='holidayForm' action='/employee/holidays_byperson/')
|
||||
.modal-dialog(role='document', style='width:720px')
|
||||
|
|
@ -181,8 +182,19 @@ block content
|
|||
script(src='https://cdn.jsdelivr.net/gh/gitbrent/bootstrap-switch-button@1.1.0/dist/bootstrap-switch-button.min.js')
|
||||
script.
|
||||
// $(document).ready(function () {
|
||||
// Get current page name
|
||||
const currentUrl = window.location.href;
|
||||
var page = currentUrl.split("/").pop();
|
||||
if (page==='viewAll')
|
||||
{
|
||||
$("#vehicle").addClass("collapse in")
|
||||
$("#vehiclelistAll").addClass("active");
|
||||
}
|
||||
if (page==='view')
|
||||
{
|
||||
$("#vehicle").addClass("collapse in")
|
||||
$("#vehiclelist").addClass("active");
|
||||
}
|
||||
function isNumber(str) {
|
||||
if (typeof str != "string") return false // we only process strings!
|
||||
const ret= !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
|
||||
|
|
|
|||
Loading…
Reference in New Issue