From 07f547dce78c1c07afc676197f8a869b49f46671 Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Mon, 13 Apr 2026 18:28:22 +0530 Subject: [PATCH] Minor fixes in employee listing and menus SRS02 : Employee Management - Sorted active employees by ID when listing - Handled empty employee lists in menus - Stopped deactivation when no employee is selected - Showed "NULL" when team ID is missing - Removed unnecessary error throw in payroll menu Smitha Mohan --- .../services/EmployeeManagementService.cpp | 21 +++++++++--- .../views/FinanceExecutiveMenu.cpp | 3 -- .../Trenser.Zenvy/views/MenuHelper.h | 33 ++++++++++++------- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp index 09906fd..b6376ab 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp @@ -1,4 +1,5 @@ #include +#include #include #include "EmployeeManagementService.h" #include "Factory.h" @@ -13,6 +14,7 @@ #include "GeneralEmployee.h" #include "FileManager.h" #include "ApplicationConfig.h" +#include "StringHelper.h" void EmployeeManagementService::createEmployee(Enums::EmployeeType employeeType, Enums::EmployeeDesignation employeeDesignation, const std::string& email, const std::string& name, const std::string& phone) { @@ -132,20 +134,31 @@ bool EmployeeManagementService::deactivateEmployee(const std::string& id) Employees EmployeeManagementService::getEmployees() { - Employees result; + Employees activeEmployees; auto& employees = m_dataStore.getEmployees(); if (employees.size() <= 0) { - return result; + return activeEmployees; } for (const auto& iterator : employees) { if (iterator.second->getEmployeeAccountStatus() == Enums::AccountStatus::ACTIVE) { - result.push_back(iterator.second); + activeEmployees.push_back(iterator.second); } } - return result; + std::sort( + activeEmployees.begin(), + activeEmployees.end(), + [](std::shared_ptr employeeOne, + std::shared_ptr employeeTwo) -> bool + { + int employeeOneId = util::extractNumber(employeeOne->getId()); + int employeeTwoId = util::extractNumber(employeeTwo->getId()); + return employeeOneId < employeeTwoId; + } + ); + return activeEmployees; } std::shared_ptr EmployeeManagementService::getCurrentEmployee() diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 3626596..396603f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -49,9 +49,6 @@ void FinanceExecutiveMenu::updatePayroll() std::cout << "Payroll Updated"; util::pressEnter(); } - else { - throw std::runtime_error("Unexpected error occured"); - } } bool FinanceExecutiveMenu::handleOperation(int choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h index 4c84538..1b7aac7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h @@ -72,6 +72,12 @@ inline std::string selectEmployeeId(std::vector> std::map> employeeList; int index = 0; util::clear(); + if (allEmployees.empty()) + { + std::cout << "No employees found!"; + util::pressEnter(); + return ""; + } std::cout << "Select the Employee\n"; for (auto& currentEmployee : allEmployees) { @@ -109,16 +115,21 @@ inline std::string selectEmployeeId(std::vector> inline void deactivateEmployee(const std::shared_ptr& controller) { - if(controller->deactivateEmployee(selectEmployeeId(controller->getEmployees()))) - { - std::cout << "Employee deactivated successfully\n"; - util::pressEnter(); - } - else - { - std::cout << "Employee not found\n"; - util::pressEnter(); - } + std::string selectedEmployeeId = selectEmployeeId(controller->getEmployees()); + if (selectedEmployeeId.empty()) + { + return; + } + if(controller->deactivateEmployee(selectedEmployeeId)) + { + std::cout << "Employee deactivated successfully\n"; + util::pressEnter(); + } + else + { + std::cout << "Employee not found\n"; + util::pressEnter(); + } } inline void viewEmployees(std::shared_ptr m_zenvyController) @@ -148,7 +159,7 @@ inline void viewEmployees(std::shared_ptr m_zenvyController) << std::setw(25) << Enums::getEmployeeTypeString(iterator->getEmployeeType()) << std::setw(25) << iterator->getEmployeeEmail() << std::setw(15) << iterator->getEmployeePhone() - << std::setw(10) << iterator->getEmployeeTeamId() + << std::setw(10) << (iterator->getEmployeeTeamId().empty() ? "NULL" : iterator->getEmployeeTeamId()) << std::endl; } util::pressEnter();