From c8b1f1d838f5ec40cd23c8792ca15c687c09033c Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Tue, 2 Sep 2025 13:19:42 +0530 Subject: [PATCH] changes on update --- src/controllers/departmentController.js | 164 +++++++++++++----------- 1 file changed, 92 insertions(+), 72 deletions(-) diff --git a/src/controllers/departmentController.js b/src/controllers/departmentController.js index 6a986275..aac1c55f 100644 --- a/src/controllers/departmentController.js +++ b/src/controllers/departmentController.js @@ -770,82 +770,102 @@ exports.getBranchDetails = async (request, reply) => { }; - exports.editdepartment = async (request, reply) => { - try { - const { departmentId } = request.params; - const { - - phone, - alternativeContactNumber, - gender, - personalEmail, - city, - firstName, - lastName, - email, - reportingManager, - departmentName, - state, - country, - zone, - address1, - address2, - pincode, - desginationName, - personal_city, - reportingManager_mobile_number, - reportingManager_email, - officeName, - picture, - employeeType +exports.editdepartment = async (request, reply) => { + try { + const { departmentId } = request.params; + const { + phone, + alternativeContactNumber, + gender, + personalEmail, + city, + firstName, + lastName, + email, + reportingManager, + departmentName, + state, + country, + zone, + address1, + address2, + pincode, + desginationName, + personal_city, + reportingManager_mobile_number, + reportingManager_email, + officeName, + picture, + employeeType + } = request.body; - } = request.body; - - - const existing = await Deparments.findOne({ departmentId }); - if (!existing) { - return reply.status(404).send({ message: 'Department not found' }); - } - - const phoneExists = await Deparments.findOne({ phone, departmentId: { $ne: departmentId } }); - if (phoneExists) { - return reply.status(400).send({ message: 'Phone is already registered to another user' }); - } - - - existing.phone = phone || existing.phone; - existing.alternativeContactNumber = alternativeContactNumber || existing.alternativeContactNumber; - existing.personalEmail = personalEmail || existing.personalEmail; - existing.gender = gender || existing.gender; - existing.city = city || existing.city; - existing.state = state || existing.state; - existing.country = country || existing.country; - existing.zone = zone || existing.zone; - existing.desginationName = desginationName || existing.desginationName; - existing.pincode = pincode || existing.pincode; + const existing = await Deparments.findOne({ departmentId }); + if (!existing) { + return reply.status(404).send({ message: "Department not found" }); + } - existing.address1 = address1 || existing.address1; - existing.address2 = address2 || existing.address2; - - existing.email = email || existing.email; - existing.firstName = firstName || existing.firstName; - existing.lastName = lastName || existing.lastName; - existing.departmentName = departmentName || existing.departmentName; - existing.reportingManager = reportingManager || existing.reportingManager - existing.personal_city = personal_city || existing.personal_city; - existing.reportingManager_mobile_number = reportingManager_mobile_number || existing.reportingManager_mobile_number; - existing.reportingManager_email = reportingManager_email || existing.reportingManager_email; - existing.officeName = officeName || existing.officeName - existing.picture = picture || existing.picture - existing.employeeType = employeeType || existing.employeeType + const phoneExists = await Deparments.findOne({ + phone, + departmentId: { $ne: departmentId }, + }); + if (phoneExists) { + return reply + .status(400) + .send({ message: "Phone is already registered to another user" }); + } - await existing.save(); - - reply.send({ message: 'Department user updated successfully' }); - } catch (err) { - reply.status(500).send({ message: err.message }); + // 🟢 Handle reportingManager "Self" + let finalReportingManager = reportingManager || existing.reportingManager; + let finalReportingManagerMobile = + reportingManager_mobile_number || existing.reportingManager_mobile_number; + let finalReportingManagerEmail = + reportingManager_email || existing.reportingManager_email; + + if (reportingManager?.toLowerCase() === "self") { + finalReportingManager = `${firstName || existing.firstName || ""} ${ + lastName || existing.lastName || "" + } - (${phone || existing.phone}) - ${city || existing.city}`; + finalReportingManagerMobile = phone || existing.phone; + finalReportingManagerEmail = email || existing.email; } - }; + + // 🔹 Update fields + existing.phone = phone || existing.phone; + existing.alternativeContactNumber = + alternativeContactNumber || existing.alternativeContactNumber; + existing.personalEmail = personalEmail || existing.personalEmail; + existing.gender = gender || existing.gender; + existing.city = city || existing.city; + existing.state = state || existing.state; + existing.country = country || existing.country; + existing.zone = zone || existing.zone; + existing.desginationName = desginationName || existing.desginationName; + existing.pincode = pincode || existing.pincode; + existing.address1 = address1 || existing.address1; + existing.address2 = address2 || existing.address2; + existing.email = email || existing.email; + existing.firstName = firstName || existing.firstName; + existing.lastName = lastName || existing.lastName; + existing.departmentName = departmentName || existing.departmentName; + existing.personal_city = personal_city || existing.personal_city; + existing.officeName = officeName || existing.officeName; + existing.picture = picture || existing.picture; + existing.employeeType = employeeType || existing.employeeType; + + // 🔹 Assign formatted reportingManager + existing.reportingManager = finalReportingManager; + existing.reportingManager_mobile_number = finalReportingManagerMobile; + existing.reportingManager_email = finalReportingManagerEmail; + + await existing.save(); + + reply.send({ message: "Department user updated successfully" }); + } catch (err) { + console.error("❌ Error in editdepartment:", err); + reply.status(500).send({ message: err.message }); + } +}; + // exports.getAllDesignationsParticularFields = async (req, reply) => { // try { // const departments = await Desgination.find().exec();