From 0290467528eb4e72db699e5c2908d59392f5849d Mon Sep 17 00:00:00 2001 From: Jissin Sam Mathew Date: Tue, 7 Apr 2026 20:19:27 +0530 Subject: [PATCH] Implement Review Suggestion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EMP008: Update Salary Details - Refactored salary update and employee selection: • Removed unnecessary const qualifiers from double parameters • Renamed variables • Replaced count() with find() for map lookups • Excluded ADMIN employees from salary updates and selection lists • Applied util::enforceAuthorization for access control - Improved readability and consistency: • Enhanced tabular output using setw() with left alignment Implement Update Salary Smitha Mohan --- .../controllers/ZenvyController.cpp | 6 +++- .../controllers/ZenvyController.h | 4 +-- .../services/EmployeeManagementService.h | 1 - .../services/PayslipManagementService.cpp | 33 ++++++++---------- .../services/PayslipManagementService.h | 2 +- .../views/FinanceExecutiveMenu.cpp | 34 ++++++++++++------- .../views/FinanceExecutiveMenu.h | 2 ++ 7 files changed, 47 insertions(+), 35 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 9394a85..144f6d4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -32,7 +32,7 @@ void ZenvyController::updateProfile(const std::string& name, const std::string& m_employeeManagementService->updateProfile(name,phone); } -void ZenvyController::updateSalary(const std::string& employeeId, const double basicSalary, const double houseRentAllowance, const double foodAllowance, const double employeePFContribution, const double employerPFContribution) +void ZenvyController::updateSalary(const std::string& employeeId, double basicSalary, double houseRentAllowance, double foodAllowance, double employeePFContribution, double employerPFContribution) { m_payslipManagementService->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution); } @@ -50,3 +50,7 @@ Employees ZenvyController::getEmployees() { return m_employeeManagementService->getEmployees(); } + +std::shared_ptr ZenvyController::getEmployee(const std::string&) { + +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 8a7fd35..cb355c6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -52,6 +52,6 @@ public: std::shared_ptr getCurrentEmployee(); void updateProfile(const std::string&,const std::string&); - //payslip management - void updateSalary(const std::string&, const double, const double, const double, const double, const double); + //Payslip management + void updateSalary(const std::string&, double, double, double, double, double); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h index c7ab33f..14c8131 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h @@ -14,7 +14,6 @@ public: EmployeeManagementService() : m_dataStore(DataStore::getInstance()) {}; void createEmployee(Enums::EmployeeType, Enums::EmployeeDesignation, const std::string&, const std::string&, const std::string&); bool deactivateEmployee(const std::string&); - Employees getEmployees(); std::shared_ptr getEmployee(const std::string&); void updateProfile(const std::string&,const std::string&); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp index 2402cb8..6e4bc99 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp @@ -1,24 +1,21 @@ #include "PayslipManagementService.h" +#include "AuthorizationHelper.h" +#include "Enums.h" -void PayslipManagementService::updateSalary(const std::string& employeeId, const double basicSalary, const double houseRentAllowance, const double foodAllowance, const double employeePFContribution, const double employerPFContribution) +void PayslipManagementService::updateSalary(const std::string& employeeId, double basicSalary, double houseRentAllowance, double foodAllowance, double employeePFContribution, double employerPFContribution) { - if (m_dataStore.getAuthenticatedEmployee()->getEmployeeType() == Enums::EmployeeType::FINANCE) { - auto findedEmployee = m_dataStore.getEmployees().find(employeeId); - if (findedEmployee != m_dataStore.getEmployees().end()) - { - (findedEmployee->second)->getPayroll()->setBasicSalary(basicSalary); - (findedEmployee->second)->getPayroll()->setHouseRentAllowance(houseRentAllowance); - (findedEmployee->second)->getPayroll()->setFoodAllowance(foodAllowance); - (findedEmployee->second)->getPayroll()->setEmployeePFContribution(employeePFContribution); - (findedEmployee->second)->getPayroll()->setEmployerPFContribution(employerPFContribution); - } - else - { - throw std::runtime_error("Employee not found, unable to update the salary"); - } - } - else + util::enforceAuthorization(m_dataStore.getAuthenticatedEmployee()->getEmployeeType(), Enums::EmployeeType::FINANCE); + auto employee = m_dataStore.getEmployees().find(employeeId); + if (employee != m_dataStore.getEmployees().end() && employee->second->getEmployeeType() != Enums::EmployeeType::ADMIN) { - throw std::runtime_error("Unauthorized access"); + (employee->second)->getPayroll()->setBasicSalary(basicSalary); + (employee->second)->getPayroll()->setHouseRentAllowance(houseRentAllowance); + (employee->second)->getPayroll()->setFoodAllowance(foodAllowance); + (employee->second)->getPayroll()->setEmployeePFContribution(employeePFContribution); + (employee->second)->getPayroll()->setEmployerPFContribution(employerPFContribution); + } + else + { + throw std::runtime_error("Employee not found, unable to update the salary"); } } \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h index 57e31e5..768c2a3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h @@ -9,5 +9,5 @@ private: DataStore& m_dataStore; public: PayslipManagementService() : m_dataStore(DataStore::getInstance()) {}; - void updateSalary(const std::string&, const double, const double, const double, const double, const double); + void updateSalary(const std::string&, double, double, double, double, double); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 5471a42..285c3c3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -31,28 +31,39 @@ void FinanceExecutiveMenu::run() std::string FinanceExecutiveMenu::getSelectedUserId() { int choice; - std::map> currentEmployeeList; + std::map> employeeList; int index = 0; - for (auto& currentEmployee : m_zenvyController->getEmployees()) + auto allEmployees = m_zenvyController->getEmployees(); + for (auto& currentEmployee : allEmployees) { - currentEmployeeList[++index] = currentEmployee; + if (currentEmployee->getEmployeeType() == Enums::EmployeeType::ADMIN) + { + continue; + } + employeeList[++index] = currentEmployee; } - for (auto& currentEmployee: currentEmployeeList) + std::cout << std::left + << std::setw(6) << "Index" + << std::setw(15) << "Employee Id" + << std::setw(25) << "Name" << std::endl; + for (const auto& employee : employeeList) { - std::cout << currentEmployee.first << ". Employee Id: " << currentEmployee.second->getEmployeeId() << "Name: " << currentEmployee.second->getEmployeeName() << std::endl; + std::cout << std::left << std::setw(6) << employee.first + << std::setw(15) << employee.second->getEmployeeId() + << std::setw(25) << employee.second->getEmployeeName() + << std::endl; } std::cout << "Enter the Index: "; util::read(choice); - if (currentEmployeeList.count(choice) == 0) + auto employeeIterator = employeeList.find(choice); + if (employeeIterator != employeeList.end()) { - throw std::runtime_error("Enter a valid index"); + return (employeeIterator->second->getEmployeeId()); } - else + else { - auto selectedEmployee = currentEmployeeList.find(choice); - return (selectedEmployee->second->getEmployeeId()); + throw std::runtime_error("Invalid Index"); } - } void FinanceExecutiveMenu::updatePayroll() @@ -78,7 +89,6 @@ void FinanceExecutiveMenu::updatePayroll() } } - bool FinanceExecutiveMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h index 26a0936..1b3ad71 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h @@ -1,6 +1,8 @@ #pragma once #include +#include #include +#include #include"ZenvyController.h" class FinanceExecutiveMenu