233 lines
7.1 KiB
JavaScript
233 lines
7.1 KiB
JavaScript
let WorkReport = require('../models/workReportModel');
|
|
let Employee = require('../models/employee');
|
|
const asyncHandler = require('express-async-handler');
|
|
var mongoose = require('mongoose');
|
|
const moment = require('moment');
|
|
/*
|
|
exports.apiSaveReport=asyncHandler(async (req,res)=>{
|
|
const {workId,foremanId,date, workTitle,employeeList }=req.body;
|
|
const workReport = new WorkReport({
|
|
workId: mongoose.Types.ObjectId(workId),
|
|
date:new Date(date),
|
|
foremanId: mongoose.Types.ObjectId(foremanId),
|
|
workTitle: workTitle,
|
|
employeeList: employeeList
|
|
|
|
})
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
await workReport.save();
|
|
res.send({'response':'ok','message':'Sikeresen létrehozva!'});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
|
|
});
|
|
*/
|
|
|
|
exports.apiSaveReport=asyncHandler(async (req,res)=>{
|
|
const {workId,foremanId,date, workTitle,workFlow }=req.body;
|
|
const workReport = new WorkReport({
|
|
workId: mongoose.Types.ObjectId(workId),
|
|
date:new Date(date),
|
|
foremanId: mongoose.Types.ObjectId(foremanId),
|
|
workTitle: workTitle,
|
|
workFlow: workFlow
|
|
|
|
})
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
await workReport.save();
|
|
res.send({'response':'ok','message':'Sikeresen létrehozva!'});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
|
|
});
|
|
|
|
exports.apiUpdateReport=asyncHandler(async (req,res)=>{
|
|
const {workReport }=req.body;
|
|
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
await WorkReport.replaceOne(
|
|
{_id: mongoose.Types.ObjectId(workReport._id)},
|
|
workReport
|
|
)
|
|
res.send({'response':'ok','message':'Sikeresen mentve!'});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
|
|
});
|
|
/*exports.apiGetReport=asyncHandler(async (req,res)=>{
|
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
const reports=await WorkReport.find({workId: mongoose.Types.ObjectId(req.params.id)})
|
|
res.send({'response':'ok','reports':reports});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
|
|
});*/
|
|
exports.apiGetReport=asyncHandler(async (req,res)=>{
|
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
var wtSum=0;
|
|
const reports=await WorkReport.find({workId: mongoose.Types.ObjectId(req.params.id)})
|
|
const workTimesSum=await WorkReport.aggregate(
|
|
[
|
|
{ $match: { 'workId': mongoose.Types.ObjectId(req.params.id)} },
|
|
{$unwind: '$workFlow'},
|
|
{$unwind: '$workFlow.employeeList'},
|
|
{$group: {_id: '$workFlow.EmployeeList', count:{$sum:1}}},
|
|
{ "$limit": 1 },
|
|
{"$project": {"_id":0,
|
|
"count": 1,}
|
|
}
|
|
]
|
|
)
|
|
|
|
if (workTimesSum.length>0) wtSum=workTimesSum[0].count*8
|
|
res.send({'response':'ok','reports':reports, 'workTimesSum':wtSum});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
|
|
});
|
|
|
|
// Használt dátumok
|
|
exports.apiGetReportDates=asyncHandler(async (req,res)=>{
|
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
const reports=await WorkReport.find({workId: mongoose.Types.ObjectId(req.params.id)})
|
|
var dates=[];
|
|
reports.forEach((elem,idx)=>{
|
|
dates.push(elem.date)
|
|
})
|
|
res.send({'response':'ok','dates':dates});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
|
|
});
|
|
|
|
// Felhasználói adatok
|
|
exports.apiGetUsers=asyncHandler(async (req,res)=>{
|
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
/* try{
|
|
const users=await Employee.find({'konyvelesre': 'on'},{_id:1,name:1,company:1},{sort: {name: 1}})
|
|
res.send({'response':'ok','users':users});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}*/
|
|
try{
|
|
const users=await Employee.aggregate([
|
|
{ $sort: { "name": 1 } },
|
|
{$match: { "konyvelesre": "on"}},
|
|
{
|
|
$group: {
|
|
_id: {company:'$company'},
|
|
employees:{
|
|
$push:{
|
|
name: "$name",
|
|
id: "$_id"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
]);
|
|
res.send({'response':'ok','users':users});
|
|
}
|
|
catch(err){
|
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
|
}
|
|
});
|
|
|
|
exports.apiGetReportList=asyncHandler(async (req,res)=>{
|
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
try{
|
|
const reports=await WorkReport.aggregate([
|
|
|
|
{$match: {"workId": mongoose.Types.ObjectId(req.params.id)}},
|
|
{
|
|
$lookup:
|
|
{
|
|
from: "employees",
|
|
localField: "employeeList.employeeId",
|
|
foreignField: "_id",
|
|
as: "employee"
|
|
},
|
|
},
|
|
/* {
|
|
$unwind: "$employee"
|
|
},*/
|
|
/* {
|
|
$unwind: "$employeeList"
|
|
},*/
|
|
{$group: { _id:{
|
|
'wf': '$employeeList.workFlow',
|
|
'wid': '$_id',
|
|
'name': '$employee.name',
|
|
},
|
|
'id':{$first: '$_id'},
|
|
'date':{$first:'$date'},
|
|
'name': {$first:'$employee.name'},
|
|
'workFlow':{$first: '$employeeList.workFlow'},
|
|
},
|
|
},
|
|
{
|
|
// cleanup
|
|
$project: {
|
|
_id: false,
|
|
}
|
|
}
|
|
])
|
|
var wof=[];
|
|
reports.forEach(element => {
|
|
const curDate=moment(element.date).format("YYYY.MM.DD");
|
|
var wdays=wof.find(e=>e.date===curDate);
|
|
var items=[]
|
|
if (wdays) //ha már van ilyen nap
|
|
{
|
|
items=[]
|
|
element.name.forEach((elem,idx)=>{
|
|
wdays.items.push({name:elem,workFlow:element.workFlow[idx]})
|
|
})
|
|
// wdays.items.push(items)
|
|
}
|
|
else
|
|
{
|
|
items=[]
|
|
element.name.forEach((elem,idx)=>{
|
|
items.push({name:elem,workFlow:element.workFlow[idx]})
|
|
})
|
|
var day={date:curDate,items:items}
|
|
wof.push(day)
|
|
}
|
|
});
|
|
res.send({'response':'ok','reports':wof});
|
|
}catch(err){
|
|
|
|
res.status(500).json({'response':'fail','message':'Hiba a lekérdezésnél !\n'+err.message});
|
|
}
|
|
|
|
}); |