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\HRManagerMenu.cpp" />
<ClCompile Include="views\ITExecutiveMenu.cpp" />
<ClCompile Include="views\MenuHelper.cpp" />
<ClCompile Include="views\TalentExecutiveMenu.cpp" />
<ClCompile Include="views\TeamExecutiveMenu.cpp" />
<ClCompile Include="views\TeamLeadMenu.cpp" />
@@ -222,6 +223,7 @@
<ClInclude Include="views\FinanceExecutiveMenu.h" />
<ClInclude Include="views\HRManagerMenu.h" />
<ClInclude Include="views\ITExecutiveMenu.h" />
<ClInclude Include="views\MenuHelper.h" />
<ClInclude Include="views\TalentExecutiveMenu.h" />
<ClInclude Include="views\TeamExecutiveMenu.h" />
<ClInclude Include="views\TeamLeadMenu.h" />
@@ -2,6 +2,7 @@
#include "AdminMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include "MenuHelper.h"
void AdminMenu::run()
{
@@ -36,11 +37,11 @@ bool AdminMenu::handleOperation(int choice)
break;
case 2:
m_zenvyController.createEmployee();
break;
break;*/
case 3:
m_zenvyController.viewEmployee();
viewEmployees(m_zenvyController);
break;
case 4:
/*case 4:
m_zenvyController.deactivateEmployee();
break;*/
case 5:
@@ -1,8 +1,9 @@
#include <iostream>
#include<iomanip>
#include "EmployeeMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void EmployeeMenu::run()
{
@@ -51,7 +52,7 @@ bool EmployeeMenu::handleOperation(int choice)
m_zenvyController.viewTicketHistory();
break;*/
case 7:
viewEmployees();
viewEmployees(m_zenvyController);
break;
/*case 8:
m_zenvyController.searchEmployee();
@@ -79,52 +80,3 @@ bool EmployeeMenu::handleOperation(int choice)
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>()) {};
void run();
bool handleOperation(int);
void viewEmployees();
};
@@ -2,6 +2,7 @@
#include "FinanceExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
void FinanceExecutiveMenu::run()
{
@@ -39,11 +40,11 @@ bool FinanceExecutiveMenu::handleOperation(int choice)
break;
case 3:
m_zenvyController.viewPayslipHistory();
break;
break;*/
case 4:
m_zenvyController.viewEmployees();
viewEmployees(m_zenvyController);
break;
case 5:
/*case 5:
m_zenvyController.searchEmployee();
break;
case 6:
@@ -2,6 +2,7 @@
#include "HRManagerMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
void HRManagerMenu::run()
{
@@ -40,9 +41,9 @@ bool HRManagerMenu::handleOperation(int choice)
//case 3:
// m_zenvyController.viewPayslipHistory();
// break;
//case 4:
// m_zenvyController.viewEmployees();
// break;
case 4:
viewEmployees(m_zenvyController);
break;
//case 5:
// m_zenvyController.searchEmployee();
// break;
@@ -2,6 +2,7 @@
#include "ITExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
void ITExecutiveMenu::run()
{
@@ -39,11 +40,11 @@ bool ITExecutiveMenu::handleOperation(int choice)
break;
case 3:
m_zenvyController.viewPayslipHistory();
break;
break;*/
case 4:
m_zenvyController.viewEmployees();
viewEmployees(m_zenvyController);
break;
case 5:
/*case 5:
m_zenvyController.searchEmployee();
break;
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"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
void TalentExecutiveMenu::run()
{
@@ -40,9 +41,9 @@ bool TalentExecutiveMenu::handleOperation(int choice)
//case 3:
// m_zenvyController.viewPayslipHistory();
// break;
//case 4:
// m_zenvyController.viewEmployees();
// break;
case 4:
viewEmployees(m_zenvyController);
break;
//case 5:
// m_zenvyController.searchEmployee();
// break;
@@ -2,6 +2,7 @@
#include "TeamExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
void TeamExecutiveMenu::run()
{
@@ -40,9 +41,9 @@ bool TeamExecutiveMenu::handleOperation(int choice)
//case 3:
// m_zenvyController.viewPayslipHistory();
// break;
//case 4:
// m_zenvyController.viewEmployees();
// break;
case 4:
viewEmployees(m_zenvyController);
break;
//case 5:
// m_zenvyController.searchEmployee();
// break;
@@ -2,6 +2,7 @@
#include "TeamLeadMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
void TeamLeadMenu::run()
{
@@ -48,11 +49,11 @@ bool TeamLeadMenu::handleOperation(int choice)
break;
case 6:
m_zenvyController.viewTicketHistory();
break;
break;*/
case 7:
m_zenvyController.viewEmployees();
viewEmployees(m_zenvyController);
break;
case 8:
/*case 8:
m_zenvyController.searchEmployee();
break;
case 9: