'perormanceapi-added'

parent 43f7728c
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.18.3", "express": "^4.18.3",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"mongodb": "^6.5.0", "mongodb": "^6.5.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
...@@ -12793,6 +12795,14 @@ ...@@ -12793,6 +12795,14 @@
"mkdirp": "bin/cmd.js" "mkdirp": "bin/cmd.js"
} }
}, },
"node_modules/moment": {
"version": "2.30.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"engines": {
"node": "*"
}
},
"node_modules/mongodb": { "node_modules/mongodb": {
"version": "6.5.0", "version": "6.5.0",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz",
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.18.3", "express": "^4.18.3",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"mongodb": "^6.5.0", "mongodb": "^6.5.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
...@@ -19,7 +21,7 @@ ...@@ -19,7 +21,7 @@
"build": "react-scripts build", "build": "react-scripts build",
"test": "react-scripts test", "test": "react-scripts test",
"eject": "react-scripts eject", "eject": "react-scripts eject",
"server":"node --watch server.js" "server": "node --watch server.js"
}, },
"eslintConfig": { "eslintConfig": {
"extends": [ "extends": [
......
...@@ -31,27 +31,47 @@ app.get('/employee/:id', (req, res) => { ...@@ -31,27 +31,47 @@ app.get('/employee/:id', (req, res) => {
.catch(error => res.status(401).send(error)) .catch(error => res.status(401).send(error))
}) })
/*
Example of post Data
{
"reportees":[41689,41716,41710,41750,41751,41714],
"sort":{"type":"empId","order":-1}
,"page":1,"perPage":10,
"searchText":"eng"
}*/
app.post('/getreportees', (req, res) => { app.post('/getreportees', (req, res) => {
let reporteesArray = req.body.reportees; let reporteesArray = req.body.reportees || [];
let sortBy=req.body.sort.type || _id let sortBy=req.body.sort?req.body.sort.type || "_id" :"_id"
let sortByOrder=parseInt(req.body.sort.order)|| 1 let sortByOrder=req.body.sort?parseInt(req.body.sort.order)|| 1: 1;
let page = parseInt(req.body.page) || 1; let page = req.body.page?parseInt(req.body.page) || 1 : 1;
let limit = parseInt(req.body.perPage) || 10; let limit = req.body.perPage?parseInt(req.body.perPage) || 10: 10;
let skip = (page - 1) * limit || 0; let skip = (page - 1) * limit || 0;
db.collection('employees').find({ empId: { $in: reporteesArray } }, { projection: { _id: false } }) let query = { empId: { $in: reporteesArray } };
if(req.body.searchText){
let searchText = req.body.searchText.trim();
let searchStr = new RegExp(searchText, 'ig');
query = Object.assign(query, {
"$or": [
{ 'empId': searchStr },
{ 'empName': searchStr },
{"designation":searchStr}
]
});
}
db.collection('employees').find(query, { projection: { _id: false } })
.skip(skip) .skip(skip)
.sort({[sortBy]:sortByOrder}) .sort({[sortBy]:sortByOrder})
.limit(limit) .limit(limit)
.toArray() .toArray()
.then(result => { .then(result => {
// Get the total count of data // Get the total count of data
db.collection('employees').countDocuments({ empId: { $in: reporteesArray } }) db.collection('employees').countDocuments(query)
.then(totalCount => { .then(totalCount => {
res.send({ res.send({
total: totalCount, totalcount: totalCount,
currentPage: page, currentPage: page,
totalPages: Math.ceil(totalCount / limit), totalPages: Math.ceil(totalCount / limit),
data: result data: result,
}); });
}) })
.catch(error => res.status(401).send(error)); .catch(error => res.status(401).send(error));
...@@ -59,6 +79,63 @@ app.post('/getreportees', (req, res) => { ...@@ -59,6 +79,63 @@ app.post('/getreportees', (req, res) => {
.catch(error => res.status(401).send(error)); .catch(error => res.status(401).send(error));
}); });
//Example of post Data
/*
{
"empId":10000,
"data":{
"aName":"timesheet",
"aId":"D001",
"type":"default",
"recorded_date":"2024-03-12",
"score":3,
"comments":"very good"
}
}
*/
app.post('/create-performance',(req,res)=>{
const empId = req.body.empId || null;
if(!empId){
res.status(401).json({"message":"Employee id is missing"});
return
}else{
let {data} = req.body;
data = {...data, "recorded_date": new Date(data['recorded_date']) };
let query = {empId:empId };
db.collection('performance_master').findOne(query).then((result)=>{
if(result){
db.collection('performance_master').updateOne(query,{ $push: { "activities":data } })
.then((updateRes)=>{
res.json({"reuslt":updateRes});
})
.catch((error)=>{
res.json({"error":error});
});
}else{
//create ne one
let insertData = { empId:empId, activities:[]};
insertData.activities.push(data);
db.collection('performance_master').insertOne(insertData).then((result)=>{
res.json({"result":result});
}).catch((error)=>{
res.json({"message":error})
})
}
}).catch((error)=>{
console.log(error)
res.send(query)
})
}
})
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment