klnodekb/js/cmHelper.js

160 lines
6.2 KiB
JavaScript

const fetch = require("node-fetch");
let User = require('../models/user');
let Work=require('../models/works')
const moment = require('moment');
var fse = require('fs-extra');
const url = "https://cmmunkaszam.klelectro.eu/api/db/getLastWorknumber";
const CM_Fetch_WorkNumbers=async()=>
{
try{
const response = await fetch(url)
if (response.ok){
const jsonData = await response.json();
if (jsonData.success)
{
cmWorks=jsonData.val;
const user = await User.findOne({username: 'cmr'});
if (!user) return;
if (!user.canAdd.work) return;
cmWorks.forEach( async element => {
const foundWork= await Work.findOne({$or:[
{ cmId: element.ID},
{ workNumber: element.Szovertek},
{ title : element.Megnevezes},
{ cmRendAzonosito:element.RendAzon}
]})
if (!foundWork)
{
var vnValid=/^[2-9][0-9][0-9][0-9]\/[0-9][0-9][0-9][0-9]$/.test(element.Szovertek);
if (!vnValid)
{
console.log(`Hibás munkaszám: ${element.Szovertek}`)
return;
}
console.log(`Új munka: ${element.Szovertek+' '+element.munkanev}`);
let work=new Work();
work.title = element.munkanev;
work.author = user._id;
work.body = element.Megjegyzes;
work.poNumber=element.KulsoRendSzam;
work.megrendelo=element.SzamlNev;
work.workNumber=element.Szovertek;
work.cmRendAzonosito=element.RendAzon;
// console.log(work.workNumber);
work.workDate= moment().format('YYYY-MM-DD HH:mm:ss')
work.cmId=element.ID;
work.filesCM=element.files;
work.pathCM= element.Csatolasok
// Munka státusza
work.state='Opened'; // Nyitva
// Ütemterv
work.ganttData.id=work._id;
work.ganttData.text=work.title;
work.ganttData.start_date=moment().format('DD-MM-YYYY');
work.ganttData.duration=5;//req.body.duration;
work.ganttData.progress=0;
//db.users.findOne({"username" : {$regex : ".*son.*"}});
Work.findOne({'workNumber': work.workNumber}, function(err,wn) // Megnézzük van e már
{
if (err){
console.log(err);
}
else {
if (wn)
{
console.log("Már van ilyen munka");
}
else {
work.save(function(err){
if(err){
console.log(err);
return;
}else{
// Munka könyvtár létrehozása
//logging.logAppend("Munka hozzáadása.",req.user,work.id,Work.db.name,'WORKADD');
fse.mkdirs('/filedata/'+work._id, function(err){
if (err) return console.error(err);
console.log("Könyvtár létrehozva! ->"+"/filedata/"+work._id);
});
console.log('Work added.');
}
});
}
}
});
}
else // Ha van már ilyen munka megnézzük módosították e.
{
const areEqual = JSON.stringify(foundWork.filesCM) === JSON.stringify(element.files);
//Módosítás
if (foundWork.title!=element.munkanev ||
foundWork.body!=element.Megjegyzes ||
foundWork.poNumber!=element.KulsoRendSzam ||
foundWork.megrendelo!=element.SzamlNev ||
foundWork.workNumber!=element.Szovertek ||
foundWork.cmRendAzonosito!=element.RendAzon ||
!areEqual)
{
if (element.ID==foundWork.cmId)
{
console.log("Módosítás történt a CM-ben."+foundWork.title);
await Work.findOneAndUpdate({'cmId': foundWork.cmId}, {
title:element.munkanev,
body:element.Megjegyzes,
poNumber:element.KulsoRendSzam,
megrendelo:element.SzamlNev,
workNumber:element.Szovertek,
cmRendAzonosito:element.RendAzon,
filesCM:element.files,
pathCM: element.Csatolasok.replace
})
}
}
//Lezárás, ha nyitott, de a CM zárta
if (foundWork.state=='Opened' && element.Nyitott==7)
{
if (foundWork.title==element.munkanev &&
foundWork.body==element.Megjegyzes &&
foundWork.poNumber==element.KulsoRendSzam &&
foundWork.megrendelo==element.SzamlNev &&
foundWork.workNumber==element.Szovertek &&
foundWork.cmRendAzonosito==element.RendAzon &&
foundWork.state=='Opened')
{
if (element.ID==foundWork.cmId)
{
console.log("Lezárás történt a CM-ben."+foundWork.title);
await Work.findOneAndUpdate({'cmId': foundWork.cmId},{$set:{'state':'Closed'}})
}
}
}
}
});
//console.log(jsonData.val);
}
}
else
{
console.log("Response error CMHelper")
}
}
catch(error) {
console.log(error);
};
}
// Esemény indítása éjjfélkor
setInterval(CM_Fetch_WorkNumbers,15000);