Added MenuHelper feature for ViewEmployee

<UserStory> EMP007 : View Employees </UserStory>

<Changes>
 - Added MenuHelper.cpp and MenuHelper.h to project configuration
 - Moved viewEmployees() implementation from individual menu classes into MenuHelper
 - Added inline viewEmployees(shared_ptr<ZenvyController>) helper with formatted output
 - Added enumToString() to MenuHelper for employee role display
 - Updated AdminMenu, EmployeeMenu, FinanceExecutiveMenu, HRManagerMenu,
   ITExecutiveMenu, TalentExecutiveMenu, TeamExecutiveMenu, and TeamLeadMenu
   to use viewEmployees(m_zenvyController) instead of per‑menu implementations
 - Removed old viewEmployees() method from EmployeeMenu
 - Updated menu options to reflect new centralized viewEmployees() function
</Changes>

<Review>
  Smitha Mohan
</Review>
This commit is contained in:
Tinu Johnson
2026-04-07 20:32:30 +05:30
parent 6256b9ea82
commit c27ca5240a
12 changed files with 89 additions and 74 deletions
@@ -172,6 +172,7 @@
<ClCompile Include="views\FinanceExecutiveMenu.cpp" /> <ClCompile Include="views\FinanceExecutiveMenu.cpp" />
<ClCompile Include="views\HRManagerMenu.cpp" /> <ClCompile Include="views\HRManagerMenu.cpp" />
<ClCompile Include="views\ITExecutiveMenu.cpp" /> <ClCompile Include="views\ITExecutiveMenu.cpp" />
<ClCompile Include="views\MenuHelper.cpp" />
<ClCompile Include="views\TalentExecutiveMenu.cpp" /> <ClCompile Include="views\TalentExecutiveMenu.cpp" />
<ClCompile Include="views\TeamExecutiveMenu.cpp" /> <ClCompile Include="views\TeamExecutiveMenu.cpp" />
<ClCompile Include="views\TeamLeadMenu.cpp" /> <ClCompile Include="views\TeamLeadMenu.cpp" />
@@ -222,6 +223,7 @@
<ClInclude Include="views\FinanceExecutiveMenu.h" /> <ClInclude Include="views\FinanceExecutiveMenu.h" />
<ClInclude Include="views\HRManagerMenu.h" /> <ClInclude Include="views\HRManagerMenu.h" />
<ClInclude Include="views\ITExecutiveMenu.h" /> <ClInclude Include="views\ITExecutiveMenu.h" />
<ClInclude Include="views\MenuHelper.h" />
<ClInclude Include="views\TalentExecutiveMenu.h" /> <ClInclude Include="views\TalentExecutiveMenu.h" />
<ClInclude Include="views\TeamExecutiveMenu.h" /> <ClInclude Include="views\TeamExecutiveMenu.h" />
<ClInclude Include="views\TeamLeadMenu.h" /> <ClInclude Include="views\TeamLeadMenu.h" />
@@ -2,6 +2,7 @@
#include "AdminMenu.h" #include "AdminMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include "MenuHelper.h"
void AdminMenu::run() void AdminMenu::run()
{ {
@@ -36,11 +37,11 @@ bool AdminMenu::handleOperation(int choice)
break; break;
case 2: case 2:
m_zenvyController.createEmployee(); m_zenvyController.createEmployee();
break; break;*/
case 3: case 3:
m_zenvyController.viewEmployee(); viewEmployees(m_zenvyController);
break; break;
case 4: /*case 4:
m_zenvyController.deactivateEmployee(); m_zenvyController.deactivateEmployee();
break;*/ break;*/
case 5: case 5:
@@ -3,6 +3,7 @@
#include "EmployeeMenu.h" #include "EmployeeMenu.h"
#include "InputHelper.h" #include "InputHelper.h"
#include "OutputHelper.h" #include "OutputHelper.h"
#include "MenuHelper.h"
void EmployeeMenu::run() void EmployeeMenu::run()
{ {
@@ -51,7 +52,7 @@ bool EmployeeMenu::handleOperation(int choice)
m_zenvyController.viewTicketHistory(); m_zenvyController.viewTicketHistory();
break;*/ break;*/
case 7: case 7:
viewEmployees(); viewEmployees(m_zenvyController);
break; break;
/*case 8: /*case 8:
m_zenvyController.searchEmployee(); m_zenvyController.searchEmployee();
@@ -79,52 +80,3 @@ bool EmployeeMenu::handleOperation(int choice)
return true; return true;
} }
void EmployeeMenu::viewEmployees()
{
std::cout << std::left
<< std::setw(10) << "EMPID"
<< std::setw(20) << "Name"
<< std::setw(15) << "Role"
<< std::setw(10) << "TeamId"
<< std::setw(25) << "Email"
<< std::setw(15) << "Phone"
<< std::endl;
auto employees = m_zenvyController->getEmployee();
if (employees.empty())
{
std::cout << "No employees found\n";
return;
}
for (const auto& iterator : employees)
{
std::cout << std::left
<< std::setw(10) << iterator->getEmployeeId()
<< std::setw(20) << iterator->getEmployeeName()
<< std::setw(15) << enumToString(iterator->getEmployeeType())
<< std::setw(10) << iterator->getEmployeeTeamId()
<< std::setw(25) << iterator->getEmployeeEmail()
<< std::setw(15) << iterator->getEmployeePhone()
<< std::endl;
}
}
std::string enumToString(Enums::EmployeeType type)
{
switch (type)
{
case Enums::EmployeeType::IT:
return "IT Executive";
case Enums::EmployeeType::FINANCE:
return "Finance Executive";
case Enums::EmployeeType::GENERAL:
return "General Employee";
case Enums::EmployeeType::HR:
return "HR";
case Enums::EmployeeType::TAG:
return "Talent Acquacition Executive";
case Enums::EmployeeType::TEAM:
return "Team Executive";
case Enums::EmployeeType::INVALID:
return "Invalid";
}
}
@@ -10,6 +10,5 @@ public:
EmployeeMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {}; EmployeeMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
void run(); void run();
bool handleOperation(int); bool handleOperation(int);
void viewEmployees();
}; };
@@ -2,6 +2,7 @@
#include "FinanceExecutiveMenu.h" #include "FinanceExecutiveMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include"MenuHelper.h"
void FinanceExecutiveMenu::run() void FinanceExecutiveMenu::run()
{ {
@@ -39,11 +40,11 @@ bool FinanceExecutiveMenu::handleOperation(int choice)
break; break;
case 3: case 3:
m_zenvyController.viewPayslipHistory(); m_zenvyController.viewPayslipHistory();
break; break;*/
case 4: case 4:
m_zenvyController.viewEmployees(); viewEmployees(m_zenvyController);
break; break;
case 5: /*case 5:
m_zenvyController.searchEmployee(); m_zenvyController.searchEmployee();
break; break;
case 6: case 6:
@@ -2,6 +2,7 @@
#include "HRManagerMenu.h" #include "HRManagerMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include"MenuHelper.h"
void HRManagerMenu::run() void HRManagerMenu::run()
{ {
@@ -40,9 +41,9 @@ bool HRManagerMenu::handleOperation(int choice)
//case 3: //case 3:
// m_zenvyController.viewPayslipHistory(); // m_zenvyController.viewPayslipHistory();
// break; // break;
//case 4: case 4:
// m_zenvyController.viewEmployees(); viewEmployees(m_zenvyController);
// break; break;
//case 5: //case 5:
// m_zenvyController.searchEmployee(); // m_zenvyController.searchEmployee();
// break; // break;
@@ -2,6 +2,7 @@
#include "ITExecutiveMenu.h" #include "ITExecutiveMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include"MenuHelper.h"
void ITExecutiveMenu::run() void ITExecutiveMenu::run()
{ {
@@ -39,11 +40,11 @@ bool ITExecutiveMenu::handleOperation(int choice)
break; break;
case 3: case 3:
m_zenvyController.viewPayslipHistory(); m_zenvyController.viewPayslipHistory();
break; break;*/
case 4: case 4:
m_zenvyController.viewEmployees(); viewEmployees(m_zenvyController);
break; break;
case 5: /*case 5:
m_zenvyController.searchEmployee(); m_zenvyController.searchEmployee();
break; break;
case 6: case 6:
@@ -0,0 +1 @@
#include "MenuHelper.h"
@@ -0,0 +1,54 @@
#pragma once
#include <iomanip>
#include "InputHelper.h"
#include "OutputHelper.h"
inline void viewEmployees(std::shared_ptr<ZenvyController> m_zenvyController)
{
std::cout << std::left
<< std::setw(10) << "EMPID"
<< std::setw(20) << "Name"
<< std::setw(15) << "Role"
<< std::setw(10) << "TeamId"
<< std::setw(25) << "Email"
<< std::setw(15) << "Phone"
<< std::endl;
auto employees = m_zenvyController->getEmployee();
if (employees.empty())
{
std::cout << "No employees found\n";
return;
}
for (const auto& iterator : employees)
{
std::cout << std::left
<< std::setw(10) << iterator->getEmployeeId()
<< std::setw(20) << iterator->getEmployeeName()
<< std::setw(15) << enumToString(iterator->getEmployeeType())
<< std::setw(10) << iterator->getEmployeeTeamId()
<< std::setw(25) << iterator->getEmployeeEmail()
<< std::setw(15) << iterator->getEmployeePhone()
<< std::endl;
}
}
std::string enumToString(Enums::EmployeeType type)
{
switch (type)
{
case Enums::EmployeeType::IT:
return "IT Executive";
case Enums::EmployeeType::FINANCE:
return "Finance Executive";
case Enums::EmployeeType::GENERAL:
return "General Employee";
case Enums::EmployeeType::HR:
return "HR";
case Enums::EmployeeType::TAG:
return "Talent Acquacition Executive";
case Enums::EmployeeType::TEAM:
return "Team Executive";
case Enums::EmployeeType::INVALID:
return "Invalid";
}
}
@@ -2,6 +2,7 @@
#include "TalentExecutiveMenu.h" #include "TalentExecutiveMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include"MenuHelper.h"
void TalentExecutiveMenu::run() void TalentExecutiveMenu::run()
{ {
@@ -40,9 +41,9 @@ bool TalentExecutiveMenu::handleOperation(int choice)
//case 3: //case 3:
// m_zenvyController.viewPayslipHistory(); // m_zenvyController.viewPayslipHistory();
// break; // break;
//case 4: case 4:
// m_zenvyController.viewEmployees(); viewEmployees(m_zenvyController);
// break; break;
//case 5: //case 5:
// m_zenvyController.searchEmployee(); // m_zenvyController.searchEmployee();
// break; // break;
@@ -2,6 +2,7 @@
#include "TeamExecutiveMenu.h" #include "TeamExecutiveMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include"MenuHelper.h"
void TeamExecutiveMenu::run() void TeamExecutiveMenu::run()
{ {
@@ -40,9 +41,9 @@ bool TeamExecutiveMenu::handleOperation(int choice)
//case 3: //case 3:
// m_zenvyController.viewPayslipHistory(); // m_zenvyController.viewPayslipHistory();
// break; // break;
//case 4: case 4:
// m_zenvyController.viewEmployees(); viewEmployees(m_zenvyController);
// break; break;
//case 5: //case 5:
// m_zenvyController.searchEmployee(); // m_zenvyController.searchEmployee();
// break; // break;
@@ -2,6 +2,7 @@
#include "TeamLeadMenu.h" #include "TeamLeadMenu.h"
#include"InputHelper.h" #include"InputHelper.h"
#include"OutputHelper.h" #include"OutputHelper.h"
#include"MenuHelper.h"
void TeamLeadMenu::run() void TeamLeadMenu::run()
{ {
@@ -48,11 +49,11 @@ bool TeamLeadMenu::handleOperation(int choice)
break; break;
case 6: case 6:
m_zenvyController.viewTicketHistory(); m_zenvyController.viewTicketHistory();
break; break;*/
case 7: case 7:
m_zenvyController.viewEmployees(); viewEmployees(m_zenvyController);
break; break;
case 8: /*case 8:
m_zenvyController.searchEmployee(); m_zenvyController.searchEmployee();
break; break;
case 9: case 9: