From 2d7a77071a3ca2eb3f20d22bef3fc615e8ea45e1 Mon Sep 17 00:00:00 2001 From: Vishala Ramasamy Date: Wed, 24 Jan 2024 10:49:26 -0800 Subject: [PATCH 1/2] json file fix --- .../BuildingUnits.json => BuildingUnits.json | 0 .../bmdashboard/bmInventoryTypeController.js | 12 +++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) rename src/controllers/bmdashboard/BuildingUnits.json => BuildingUnits.json (100%) diff --git a/src/controllers/bmdashboard/BuildingUnits.json b/BuildingUnits.json similarity index 100% rename from src/controllers/bmdashboard/BuildingUnits.json rename to BuildingUnits.json diff --git a/src/controllers/bmdashboard/bmInventoryTypeController.js b/src/controllers/bmdashboard/bmInventoryTypeController.js index 2427ce984..66c1e0063 100644 --- a/src/controllers/bmdashboard/bmInventoryTypeController.js +++ b/src/controllers/bmdashboard/bmInventoryTypeController.js @@ -1,6 +1,8 @@ const fs = require('fs'); - -const filepath = 'src/controllers/bmdashboard/BuildingUnits.json'; +const path = require('path'); +const filepath = 'BuildingUnits.json'; +const readFile = fs.readFile; +const writeFile = fs.writeFile; function bmInventoryTypeController(InvType, MatType, ConsType, ReusType, ToolType, EquipType) { async function fetchMaterialTypes(req, res) { @@ -17,7 +19,7 @@ function bmInventoryTypeController(InvType, MatType, ConsType, ReusType, ToolTyp const fetchInvUnitsFromJson = async (req, res) => { try { - fs.readFile(filepath, 'utf8', (err, data) => { + readFile(filepath, 'utf8', (err, data) => { if (err) { console.error('Error reading file:', err); return; @@ -67,7 +69,7 @@ function bmInventoryTypeController(InvType, MatType, ConsType, ReusType, ToolTyp // Add new unit to json file : src\controllers\bmdashboard\BuildingUnits.json const newItem = { unit: req.body.customUnit, category: 'Material' }; const newItemString = JSON.stringify(newItem, null, 2); - fs.readFile(filepath, 'utf8', (err, data) => { + readFile(filepath, 'utf8', (err, data) => { if (err) { console.error('Error reading file:', err); return; @@ -79,7 +81,7 @@ function bmInventoryTypeController(InvType, MatType, ConsType, ReusType, ToolTyp const separator = (updatedContent !== '') ? ',\n' : ''; const updatedFileContent = `${updatedContent}${separator}${newItemString}\n]`; - fs.writeFile(filepath, updatedFileContent, 'utf8', (error) => { + writeFile(filepath, updatedFileContent, 'utf8', (error) => { if (error) { console.error('Error writing to file:', error); return; From cab6ce86fa5056140bc7ebfa1ad81cbeb91c49a7 Mon Sep 17 00:00:00 2001 From: wang9hu Date: Thu, 25 Jan 2024 22:21:43 -0800 Subject: [PATCH 2/2] remove getAllHoursLoggedForSpecifiedTask, fix minor bugs in taskHelper --- src/controllers/taskController.js | 4 -- src/helpers/taskHelper.js | 75 +++++++++++++++---------------- src/helpers/timeEntryHelper.js | 27 ----------- 3 files changed, 37 insertions(+), 69 deletions(-) delete mode 100644 src/helpers/timeEntryHelper.js diff --git a/src/controllers/taskController.js b/src/controllers/taskController.js index 423d45037..e9218e931 100644 --- a/src/controllers/taskController.js +++ b/src/controllers/taskController.js @@ -1,7 +1,6 @@ const mongoose = require('mongoose'); const WBS = require('../models/wbs'); const UserProfile = require('../models/userProfile'); -const timeEntryHelper = require('../helpers/timeEntryHelper')(); const taskHelper = require('../helpers/taskHelper')(); const { hasPermission } = require('../utilities/permissions'); const emailSender = require('../utilities/emailSender'); @@ -803,9 +802,6 @@ const taskController = function (Task) { return res.status(400).send({ error: 'This is not a valid task' }); } - const hoursLogged = await timeEntryHelper.getAllHoursLoggedForSpecifiedTask(taskId); - task.set('hoursLogged', hoursLogged, { strict: false }); - // Fetch the resource names for all resources const resourceNamesPromises = task.resources.map(resource => taskHelper.getUserProfileFirstAndLastName(resource.userID)); const resourceNames = await Promise.all(resourceNamesPromises); diff --git a/src/helpers/taskHelper.js b/src/helpers/taskHelper.js index 96058e6c3..5441da036 100644 --- a/src/helpers/taskHelper.js +++ b/src/helpers/taskHelper.js @@ -60,50 +60,54 @@ const taskHelper = function () { ); break; } - case !isRequestorOwnerLike && !isUserOwnerLike: { - const sharedTeamsResult = await team.find({ $or: [{ 'members.userId': { $all: [userid, requestorId] } }, { 'members.userId': userid }] }, { members: 1 }); + case isRequestorOwnerLike && !isUserOwnerLike: { + const teamsResult = await team.find( + { 'members.userId': { $in: [userid] } }, + { members: 1 }, + ); - sharedTeamsResult.forEach((_myTeam) => { + teamsResult.forEach((_myTeam) => { _myTeam.members.forEach((teamMember) => { if (!teamMember.userId.equals(userid)) teamMemberIds.push(teamMember.userId); }); }); - teamMembers = await userProfile - .find( - { _id: { $in: teamMemberIds }, isActive: true }, - { - role: 1, - firstName: 1, - lastName: 1, - weeklycommittedHours: 1, - timeOffFrom: 1, - timeOffTill: 1, - }, - ); - break; + teamMembers = await userProfile.find( + { _id: { $in: teamMemberIds }, isActive: true }, + { + role: 1, + firstName: 1, + lastName: 1, + weeklycommittedHours: 1, + timeOffFrom: 1, + timeOffTill: 1, + }, + ); + break; } default: { - const teamsResult = await team.find({ 'members.userId': { $in: [userid] } }, { members: 1 }); + const sharedTeamsResult = await team.find( + { 'members.userId': { $all: [userid, requestorId] } }, + { members: 1 }, + ); - teamsResult.forEach((_myTeam) => { + sharedTeamsResult.forEach((_myTeam) => { _myTeam.members.forEach((teamMember) => { if (!teamMember.userId.equals(userid)) teamMemberIds.push(teamMember.userId); }); }); - teamMembers = await userProfile - .find( - { _id: { $in: teamMemberIds }, isActive: true }, - { - role: 1, - firstName: 1, - lastName: 1, - weeklycommittedHours: 1, - timeOffFrom: 1, - timeOffTill: 1, - }, - ); + teamMembers = await userProfile.find( + { _id: { $in: teamMemberIds }, isActive: true }, + { + role: 1, + firstName: 1, + lastName: 1, + weeklycommittedHours: 1, + timeOffFrom: 1, + timeOffTill: 1, + }, + ); } } @@ -133,12 +137,8 @@ const taskHelper = function () { timeEntryByPerson[personIdStr].totalSeconds += timeEntry.totalSeconds; }); const teamMemberTasks = await Task.find( - { - 'resources.userID': { $in: teamMemberIds }, - }, - { - 'resources.profilePic': 0, - }, + { 'resources.userID': { $in: teamMemberIds } }, + { 'resources.profilePic': 0 }, ).populate({ path: 'wbsId', select: 'projectId', @@ -163,8 +163,7 @@ const taskHelper = function () { } }); - const taskByPerson = []; - + const taskByPerson = {}; teamMemberTasks.forEach((teamMemberTask) => { const projId = teamMemberTask.wbsId?.projectId; const _teamMemberTask = { ...teamMemberTask._doc }; diff --git a/src/helpers/timeEntryHelper.js b/src/helpers/timeEntryHelper.js deleted file mode 100644 index 7119db1a0..000000000 --- a/src/helpers/timeEntryHelper.js +++ /dev/null @@ -1,27 +0,0 @@ -const moment = require('moment-timezone'); -const timeEntry = require('../models/timeentry'); - -const timeEntryHelper = function () { - const getAllHoursLoggedForSpecifiedTask = function (taskId) { - const fromDate = moment('1900-01-01 00:00:00').format('YYYY-MM-DD'); - const toDate = moment().tz('America/Los_Angeles').endOf('week').format('YYYY-MM-DD'); - return timeEntry.find( - { - taskId, - dateOfWork: { $gte: fromDate, $lte: toDate }, - isTangible: true, - }, - '-createdDateTime -lastModifiedDateTime', - ) - .then((results) => { - const totalSecondsLogged = results.reduce((acc, { totalSeconds }) => acc + totalSeconds, 0); - return (totalSecondsLogged / 3600).toFixed(2); - }); - }; - - return { - getAllHoursLoggedForSpecifiedTask, - }; -}; - -module.exports = timeEntryHelper;