Merge branch 'feature-employee-management' into feature-employee-management-emp007

This commit is contained in:
2026-04-11 17:41:57 +05:30
74 changed files with 1656 additions and 260 deletions
+11 -10
View File
@@ -13,7 +13,7 @@ void AdminMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - HR Management System\n1. Create HRManager\n2. Create Employee\n3. View Employee\n4. Deactivate Employee\n5. Logout\nEnter your Choice: ";
std::cout << "Admin Menu\n1. Create User\n2. View Employee\n3. Deactivate Employee\n4. Search Employee\n5. Update Profile\n6. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -32,22 +32,23 @@ bool AdminMenu::handleOperation(int choice)
{
switch (choice)
{
/*case 1:
m_zenvyController.createHRManager();
case 1:
createEmployee(m_zenvyController);
break;
case 2:
m_zenvyController.createEmployee();
break;*/
case 3:
viewEmployees(m_zenvyController);
break;
/*case 4:
m_zenvyController.deactivateEmployee();
break;*/
case 3:
deactivateEmployee(m_zenvyController);
break;
case 5:
updateProfile(m_zenvyController);
break;
case 6:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
}
@@ -14,7 +14,7 @@ void EmployeeMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. Raise Ticke\n5. View Ticket\n6. View Ticket History\n7. View Employees\n8. Search Employee\n9. View Team Members\n10. Book Meeting Room\n11. View Booking History\n12. View Notification\n13. View Announcements\n14. Logout\nEnter your Choice: ";
std::cout << "Employee Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. Raise Ticket\n5. View Ticket\n6. View Ticket History\n7. View Employees\n8. Search Employee\n9. View Team Members\n10. Book Meeting Room\n11. View Booking History\n12. View Notification\n13. View Announcements\n14. Update Profile\n15. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -33,7 +33,8 @@ bool EmployeeMenu::handleOperation(int choice)
{
switch (choice)
{
/*case 1:
/*
case 1:
m_zenvyController.applyLeave();
break;
case 2:
@@ -73,10 +74,13 @@ bool EmployeeMenu::handleOperation(int choice)
m_zenvyController.viewAnnouncements();
break;*/
case 14:
updateProfile(m_zenvyController);
break;
case 15:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -1,8 +1,8 @@
#include <iostream>
#include "FinanceExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void FinanceExecutiveMenu::run()
{
@@ -13,7 +13,7 @@ void FinanceExecutiveMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Resolve Ticket\n9. Generate Payslip\n10. Update Payroll\n11. Logout\nEnter your Choice: ";
std::cout << "Finance Executive Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Resolve Ticket\n9. Generate Payslip\n10. Update Payroll\n11. Update Profile\n12. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -28,44 +28,74 @@ void FinanceExecutiveMenu::run()
}
}
void FinanceExecutiveMenu::updatePayroll()
{
std::string employeeId;
double basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution;
employeeId = selectEmployeeId(m_zenvyController->getEmployees());
util::clear();
if (employeeId != "") {
std::cout << "Enter the New Basic Salary: ";
util::read(basicSalary);
std::cout << "Enter the New House Rent Allowance: ";
util::read(houseRentAllowance);
std::cout << "Enter the New Food Allowance: ";
util::read(foodAllowance);
std::cout << "Enter the New EmployeePFContribution: ";
util::read(employeePFContribution);
std::cout << "Enter the New EmplyerPFContribution: ";
util::read(employerPFContribution);
m_zenvyController->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution);
std::cout << "Payroll Updated";
util::pressEnter();
}
else {
throw std::runtime_error("Unexpected error occured");
}
}
bool FinanceExecutiveMenu::handleOperation(int choice)
{
switch (choice)
{
/*case 1:
m_zenvyController.applyLeave();
break;
case 2:
m_zenvyController.viewPayslip();
break;
case 3:
m_zenvyController.viewPayslipHistory();
break;*/
//case 1:
// m_zenvyController.applyLeave();
// break;
//case 2:
// m_zenvyController.viewPayslip();
// break;
//case 3:
// m_zenvyController.viewPayslipHistory();
// break;
case 4:
viewEmployees(m_zenvyController);
break;
/*case 5:
m_zenvyController.searchEmployee();
break;
case 6:
m_zenvyController.viewNotifications();
break;
case 7:
m_zenvyController.viewAnnouncements();
break;
case 8:
m_zenvyController.resolveTicket();
break;
case 9:
m_zenvyController.generatePayslip();
break;
//case 5:
// m_zenvyController.searchEmployee();
// break;
//case 6:
// m_zenvyController.viewNotifications();
// break;
//case 7:
// m_zenvyController.viewAnnouncements();
// break;
//case 8:
// m_zenvyController.resolveTicket();
// break;
//case 9:
// m_zenvyController.generatePayslip();
// break;
case 10:
m_zenvyController.updatePayroll();
break;*/
updatePayroll();
break;
case 11:
updateProfile(m_zenvyController);
break;
case 12:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -1,5 +1,8 @@
#pragma once
#include<memory>
#include<iostream>
#include<stdexcept>
#include <iomanip>
#include"ZenvyController.h"
class FinanceExecutiveMenu
@@ -10,5 +13,6 @@ public:
FinanceExecutiveMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
void run();
bool handleOperation(int);
void updatePayroll();
};
@@ -1,8 +1,8 @@
#include <iostream>
#include "HRManagerMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void HRManagerMenu::run()
{
@@ -13,7 +13,7 @@ void HRManagerMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create Employee\n9. Regularize Attendance\n10. Update Leave Request\n11. Register CandidateAsEmployee\n12. Logout\nEnter your Choice: ";
std::cout << "HR Manager Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create Employee\n9. Regularize Attendance\n10. Update Leave Request\n11. Register CandidateAsEmployee\n12. Update Profile\n13. Deactivate Employee\n14. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -53,9 +53,9 @@ bool HRManagerMenu::handleOperation(int choice)
//case 7:
// m_zenvyController.viewAnnouncements();
// break;
//case 8:
// m_zenvyController.createEmployee();
// break;
case 8:
createEmployee(m_zenvyController);
break;
//case 9:
// m_zenvyController.regularizeAttenance();
// break;
@@ -66,9 +66,16 @@ bool HRManagerMenu::handleOperation(int choice)
// m_zenvyController.registercandidateAsEmployee();
// break;
case 12:
updateProfile(m_zenvyController);
break;
case 13:
deactivateEmployee(m_zenvyController);
break;
case 14:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -1,8 +1,8 @@
#include <iostream>
#include "ITExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void ITExecutiveMenu::run()
{
@@ -13,7 +13,7 @@ void ITExecutiveMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Resolve Ticket\n9. Logout\nEnter your Choice: ";
std::cout << "IT Executive Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Resolve Ticket\n9. Update Profile\n10. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -57,9 +57,13 @@ bool ITExecutiveMenu::handleOperation(int choice)
m_zenvyController.resolveTicket();
break;*/
case 9:
updateProfile(m_zenvyController);
break;
case 10:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -1 +1,104 @@
#include <stdexcept>
#include "MenuHelper.h"
static Enums::EmployeeType getEmployeeType(Enums::EmployeeType employeeType)
{
int choice;
util::clear();
static const std::map<Enums::EmployeeType, std::vector<Enums::EmployeeType>> employeeTypeOptions = {
{ Enums::EmployeeType::ADMIN, {
Enums::EmployeeType::HR,
Enums::EmployeeType::IT,
Enums::EmployeeType::TEAM,
Enums::EmployeeType::FINANCE,
Enums::EmployeeType::TALENT_ACQUISITION,
Enums::EmployeeType::GENERAL
}},
{ Enums::EmployeeType::HR, {
Enums::EmployeeType::IT,
Enums::EmployeeType::TEAM,
Enums::EmployeeType::FINANCE,
Enums::EmployeeType::TALENT_ACQUISITION,
Enums::EmployeeType::GENERAL
}}
};
static const std::map<Enums::EmployeeType, std::string> labels = {
{ Enums::EmployeeType::HR, "HR Employee" },
{ Enums::EmployeeType::IT, "IT Executive" },
{ Enums::EmployeeType::TEAM, "Team Executive" },
{ Enums::EmployeeType::FINANCE, "Finance Executive" },
{ Enums::EmployeeType::TALENT_ACQUISITION, "Talent Executive" },
{ Enums::EmployeeType::GENERAL, "General Employee" }
};
auto it = employeeTypeOptions.find(employeeType);
if (it == employeeTypeOptions.end())
{
throw std::runtime_error("You do not have the authority to create a new Employee!");
}
const auto& options = it->second;
std::cout << "Select Employee Type\n";
for (int index = 0; index < options.size(); ++index)
{
std::cout << index + 1 << ". " << labels.at(options[index]) << "\n";
}
std::cout << "Enter Choice: ";
util::read(choice);
if (choice >= 1 && choice <= options.size())
{
return options[choice - 1];
}
return Enums::EmployeeType::INVALID;
}
static Enums::EmployeeDesignation getEmployeeDesignation()
{
int choice;
util::clear();
std::cout << "Select Employee Designation"
"\n1. SENIOR"
"\n2. JUNIOR"
"\nEnter Choice: ";
util::read(choice);
switch (choice)
{
case 1:
return Enums::EmployeeDesignation::SENIOR;
case 2:
return Enums::EmployeeDesignation::JUNIOR;
default:
return Enums::EmployeeDesignation::INVALID;
}
}
void createEmployee(std::shared_ptr<ZenvyController> controller)
{
auto currentEmployee = controller->getCurrentEmployee();
Enums::EmployeeType employeeType = getEmployeeType(currentEmployee->getEmployeeType());
Enums::EmployeeDesignation employeeDesignation = Enums::EmployeeDesignation::INVALID;
std::string name, email, phone;
switch (employeeType)
{
case Enums::EmployeeType::INVALID:
std::cout << "Invalid Choice";
util::pressEnter();
return;
case Enums::EmployeeType::GENERAL:
employeeDesignation = getEmployeeDesignation();
if (employeeDesignation == Enums::EmployeeDesignation::INVALID)
{
std::cout << "Invalid Choice";
util::pressEnter();
return;
}
break;
}
std::cout << "Enter Name: ";
util::read(name);
std::cout << "Enter Email: ";
util::read(email);
std::cout << "Enter Phone: ";
util::read(phone);
controller->createEmployee(employeeType, employeeDesignation, email, name, phone);
std::cout << "\nCreated Employee Successfully.";
util::pressEnter();
}
+141 -46
View File
@@ -1,55 +1,150 @@
#pragma once
#include <map>
#include <memory>
#include <vector>
#include <iostream>
#include <iomanip>
#include "Employee.h"
#include "ZenvyController.h"
#include "MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "Validator.h"
#include "Enums.h"
void createEmployee(std::shared_ptr<ZenvyController> controller);
inline void updateProfile(std::shared_ptr<ZenvyController> m_zenvyController)
{
int choice;
std::string name, phone;
name = m_zenvyController->getCurrentEmployee()->getEmployeeName();
phone = m_zenvyController->getCurrentEmployee()->getEmployeePhone();
while (true)
{
util::clear();
std::cout << "Please choose the information you want to update:\n"
"1. Name\n"
"2. Phone Number\n"
"3. Exit\n"
"Enter your choice: ";
util::read(choice);
switch (choice)
{
case 1:
std::cout << "Enter your updated Name: ";
util::read(name);
m_zenvyController->updateProfile(name, phone);
std::cout << "Profile Updated Successfully\n";
util::pressEnter();
break;
case 2:
std::cout << "Enter your updated phone Number: ";
util::read(phone);
if (!util::isPhoneNumberValid(phone))
{
std::cout << "Error: Invalid Phone Number";
util::pressEnter();
}
if (util::isPhoneDuplicate(phone, m_zenvyController->getEmployees()))
{
std::cout << "Error: Duplicate Phone Number!";
util::pressEnter();
return;
}
m_zenvyController->updateProfile(name, phone);
std::cout << "Profile Updated Successfully\n";
util::pressEnter();
break;
case 3:
return;
default:
std::cout << "Enter a valid choice!" << std::endl;
break;
}
}
}
inline std::string selectEmployeeId(std::vector<std::shared_ptr<const Employee>> allEmployees)
{
int choice;
std::map<int, std::shared_ptr<const Employee>> employeeList;
int index = 0;
util::clear();
std::cout << "Select the Employee\n";
for (auto& currentEmployee : allEmployees)
{
if (currentEmployee->getEmployeeType() == Enums::EmployeeType::ADMIN)
{
continue;
}
employeeList[++index] = currentEmployee;
}
std::cout << std::left
<< std::setw(10) << "Index"
<< std::setw(15) << "Employee ID"
<< std::setw(20) << "Name"
<< std::setw(20) << "Employee Type" << std::endl;
for (const auto& employee : employeeList)
{
std::cout << std::left << std::setw(10) << employee.first
<< std::setw(15) << employee.second->getId()
<< std::setw(20) << employee.second->getEmployeeName()
<< std::setw(20) << Enums::getEmployeeTypeString(employee.second->getEmployeeType())
<< std::endl;
}
std::cout << "Enter the Index: ";
util::read(choice);
auto employeeIterator = employeeList.find(choice);
if (employeeIterator != employeeList.end())
{
return (employeeIterator->second->getId());
}
else
{
throw std::runtime_error("Invalid Index");
}
}
inline void deactivateEmployee(const std::shared_ptr<ZenvyController>& controller)
{
if(controller->deactivateEmployee(selectEmployeeId(controller->getEmployees())))
{
std::cout << "Employee deactivated successfully\n";
util::pressEnter();
}
else
{
std::cout << "Employee not found\n";
util::pressEnter();
}
}
inline void viewEmployees(std::shared_ptr<ZenvyController> m_zenvyController)
{
auto employees = m_zenvyController->getEmployee();
if (employees.empty())
{
std::cout << "No employees found\n";
return;
}
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;
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;
}
auto employees = m_zenvyController->getEmployees();
if (employees.empty())
{
std::cout << "No employees found\n";
return;
}
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;
for (const auto& iterator : employees)
{
std::cout << std::left
<< std::setw(10) << iterator->getId()
<< std::setw(20) << iterator->getEmployeeName()
<< std::setw(15) << Enums::getEmployeeTypeString(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";
}
}
@@ -1,8 +1,8 @@
#include <iostream>
#include "TalentExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void TalentExecutiveMenu::run()
{
@@ -13,7 +13,7 @@ void TalentExecutiveMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create New Job\n9. View Job Opening\n10. Add Candidate\n11. UpdateCandidate Status\n12. View Shortlisted Candidate\n13. Logout\nEnter your Choice: ";
std::cout << "Talent Executive Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create New Job\n9. View Job Opening\n10. Add Candidate\n11. UpdateCandidate Status\n12. View Shortlisted Candidate\n13. Update Profile\n14. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -69,9 +69,13 @@ bool TalentExecutiveMenu::handleOperation(int choice)
// m_zenvyController.viewShortlistedCandidates();
// break;
case 13:
updateProfile(m_zenvyController);
break;
case 14:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -1,8 +1,8 @@
#include <iostream>
#include "TeamExecutiveMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void TeamExecutiveMenu::run()
{
@@ -13,7 +13,7 @@ void TeamExecutiveMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create Team\n9. Update Team\n10. Remove Team\n11. Assign Employee\n12. Unassign Employee\n13. View Teams\n14. Logout\nEnter your Choice: ";
std::cout << "Team Executive Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create Team\n9. Update Team\n10. Remove Team\n11. Assign Employee\n12. Unassign Employee\n13. View Teams\n14. Update Profile\n15. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -72,9 +72,13 @@ bool TeamExecutiveMenu::handleOperation(int choice)
// m_zenvyController.viewTeams();
// break;
case 14:
updateProfile(m_zenvyController);
break;
case 15:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -1,8 +1,8 @@
#include <iostream>
#include "TeamLeadMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include"MenuHelper.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.h"
void TeamLeadMenu::run()
{
@@ -13,7 +13,7 @@ void TeamLeadMenu::run()
{
int choice;
util::clear();
std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. Raise Ticke\n5. View Ticket\n6. View Ticket History\n7. View Employees\n8. Search Employee\n9. View Team Members\n10. Book Meeting Room\n11. View Booking History\n12. View Notification\n13. View Announcements\n4. Regularize Attendance\n15. Update Leave Request\n16. Logout\nEnter your Choice: ";
std::cout << "Team Lead Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. Raise Ticke\n5. View Ticket\n6. View Ticket History\n7. View Employees\n8. Search Employee\n9. View Team Members\n10. Book Meeting Room\n11. View Booking History\n12. View Notification\n13. View Announcements\n4. Regularize Attendance\n15. Update Leave Request\n16. Update Profile\n17. Logout\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
@@ -78,9 +78,13 @@ bool TeamLeadMenu::handleOperation(int choice)
m_zenvyController.updateLeaveRequest();
break;*/
case 16:
updateProfile(m_zenvyController);
break;
case 17:
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
util::pressEnter();
}
return true;
}
@@ -19,6 +19,15 @@
void UserInterface::run()
{
bool isMenuActive = true;
try
{
m_controller->loadStates();
}
catch (const std::exception& e)
{
std::cout << "Exception: " << e.what() << std::endl;
return;
}
while (isMenuActive)
{
try
@@ -38,6 +47,15 @@ void UserInterface::run()
util::pressEnter();
}
}
try
{
m_controller->persistStates();
}
catch (const std::exception& e)
{
std::cout << "Exception: " << e.what() << std::endl;
return;
}
}
bool UserInterface::handleOperation(int choice)
@@ -94,7 +112,7 @@ void UserInterface::login()
}
else
{
std::cout << "\nInvalid Password";
std::cout << "Error: Invalid Password\n";
util::pressEnter();
return;
}
@@ -133,7 +151,7 @@ void UserInterface::login()
menu.run();
break;
}
case Enums::EmployeeType::TAG:
case Enums::EmployeeType::TALENT_ACQUISITION:
{
TalentExecutiveMenu menu;
menu.run();