Setup basic UI and controller for authentication

<SRS> SRS01 : Authentication </SRS>

<Changes>
- Added basic UI structure with UserInterface and role-based menus
- Created menu classes for different roles (Admin, HR, IT, etc.)
- Connected ZenvyController with all required services
- Updated AuthenticationManagementService
- Added FAQ model
</Changes>

<Review>
Smitha Mohan
</Review>
This commit is contained in:
Ajmal Jalaludeen
2026-04-02 20:11:27 +05:30
parent a925fe63fb
commit 676c5ce132
26 changed files with 291 additions and 7 deletions
@@ -131,6 +131,7 @@
<ClCompile Include="models\Attendance.cpp" />
<ClCompile Include="models\Booking.cpp" />
<ClCompile Include="models\Candidate.cpp" />
<ClCompile Include="models\Faq.cpp" />
<ClCompile Include="models\FinanceExecutive.cpp" />
<ClCompile Include="models\GeneralEmployee.cpp" />
<ClCompile Include="models\ITExecutive.cpp" />
@@ -165,6 +166,15 @@
<ClCompile Include="utilities\OutputHelper.cpp" />
<ClCompile Include="utilities\Timestamp.cpp" />
<ClCompile Include="utilities\Validator.cpp" />
<ClCompile Include="views\AdminMenu.cpp" />
<ClCompile Include="views\EmployeeMenu.cpp" />
<ClCompile Include="views\FinanceExecutiveMenu.cpp" />
<ClCompile Include="views\HRManagerMenu.cpp" />
<ClCompile Include="views\ITExecutiveMenu.cpp" />
<ClCompile Include="views\TalentExecutiveMenu.cpp" />
<ClCompile Include="views\TeamExecutiveMenu.cpp" />
<ClCompile Include="views\TeamLeadMenu.cpp" />
<ClCompile Include="views\UserInterface.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="controllers\ZenvyController.h" />
@@ -174,6 +184,7 @@
<ClInclude Include="models\Attendance.h" />
<ClInclude Include="models\Booking.h" />
<ClInclude Include="models\Candidate.h" />
<ClInclude Include="models\Faq.h" />
<ClInclude Include="models\FinanceExecutive.h" />
<ClInclude Include="models\GeneralEmployee.h" />
<ClInclude Include="models\ITExecutive.h" />
@@ -204,6 +215,15 @@
<ClInclude Include="utilities\OutputHelper.h" />
<ClInclude Include="utilities\Timestamp.h" />
<ClInclude Include="utilities\Validator.h" />
<ClInclude Include="views\AdminMenu.h" />
<ClInclude Include="views\EmployeeMenu.h" />
<ClInclude Include="views\FinanceExecutiveMenu.h" />
<ClInclude Include="views\HRManagerMenu.h" />
<ClInclude Include="views\ITExecutiveMenu.h" />
<ClInclude Include="views\TalentExecutiveMenu.h" />
<ClInclude Include="views\TeamExecutiveMenu.h" />
<ClInclude Include="views\TeamLeadMenu.h" />
<ClInclude Include="views\UserInterface.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="models\Admin.h" />
@@ -5,10 +5,6 @@
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
@@ -31,11 +27,15 @@
<Filter Include="DataStores">
<UniqueIdentifier>{eb93b9d1-08eb-48aa-be2a-e17085ce27bd}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Views">
<UniqueIdentifier>{84db0710-2b0f-48bc-a72f-bd10c29954fc}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Trenser.Zenvy.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="services\AuthenticationManagementService.cpp">
<Filter>Services</Filter>
</ClCompile>
@@ -156,6 +156,42 @@
<ClCompile Include="models\Log.cpp">
<Filter>Models</Filter>
</ClCompile>
<ClCompile Include="Trenser.Zenvy.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="views\AdminMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\EmployeeMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\FinanceExecutiveMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\HRManagerMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\ITExecutiveMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\MainMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\TalentExecutiveMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\TeamExecutiveMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\TeamLeadMenu.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="views\UserInterface.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="models\Faq.cpp">
<Filter>Models</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="services\AuthenticationManagementService.h">
@@ -269,6 +305,42 @@
<ClInclude Include="models\Log.h">
<Filter>Models</Filter>
</ClInclude>
<ClInclude Include="views\AdminMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\EmployeeMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\FinanceExecutiveMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\HRManagerMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\ITExecutiveMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\MainMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\Menu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\TalentExecutiveMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\TeamExecutiveMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\TeamLeadMenu.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="views\UserInterface.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="models\Faq.h">
<Filter>Models</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClInclude Include="models\Employee.h">
@@ -1,5 +1,41 @@
#pragma once
#include <memory>
#include <utility>
#include "AuthenticationManagementService.h"
#include "AttendanceManagementService.h"
#include "BookingManagementService.h"
#include "EmployeeManagememtService.h"
#include "LeaveManagementService.h"
#include "NotificationManagementService.h"
#include "PayslipManagementService.h"
#include "TalentAcquisitionManagementService.h"
#include "TeamManagementService.h"
#include "TicketManagementService.h"
class ZenvyController
{
private:
std::shared_ptr<AuthenticationManagementService> m_authenticationManagementService;
std::shared_ptr<AttendanceManagementService> m_attendanceManagementService;
std::shared_ptr<BookingManagementService> m_bookingManagementService;
std::shared_ptr<EmployeeManagememtService> m_employeeManagememtService;
std::shared_ptr<LeaveManagementService> m_leaveManagementService;
std::shared_ptr<NotificationManagementService> m_notificationManagementService;
std::shared_ptr<PayslipManagementService> m_payslipManagementService;
std::shared_ptr<TalentAcquisitionManagementService> m_talentAcquisitionManagementService;
std::shared_ptr<TeamManagementService> m_teamManagementService;
std::shared_ptr<TicketManagementService> m_ticketManagementService;
public:
ZenvyController() :
m_authenticationManagementService(std::make_shared<AuthenticationManagementService>()),
m_attendanceManagementService(std::make_shared<AttendanceManagementService>()),
m_bookingManagementService(std::make_shared<BookingManagementService>()),
m_employeeManagememtService(std::make_shared<EmployeeManagememtService>()),
m_leaveManagementService(std::make_shared<LeaveManagementService>()),
m_notificationManagementService(std::make_shared<NotificationManagementService>()),
m_payslipManagementService(std::make_shared<PayslipManagementService>()),
m_talentAcquisitionManagementService(std::make_shared<TalentAcquisitionManagementService>()),
m_teamManagementService(std::make_shared<TeamManagementService>()),
m_ticketManagementService(std::make_shared<TicketManagementService>()) {};
};
@@ -17,6 +17,7 @@
#include "JobListing.h"
#include "Notification.h"
#include "Announcement.h"
#include "Faq.h"
using employeeMap = std::map<std::string, std::shared_ptr<Employee>>;
using logMap = std::map<util::Timestamp, std::shared_ptr<Log>>;
@@ -0,0 +1 @@
#include "Faq.h"
+6
View File
@@ -0,0 +1,6 @@
#pragma once
class Faq
{
};
@@ -1 +1,2 @@
#include "AuthenticationManagementService.h"
@@ -1,5 +1,16 @@
#pragma once
#include <string>
#include <map>
#include <utility>
#include "DataStore.h"
class AuthenticationManagementService
{
private:
DataStore& m_dataStore;
public:
AuthenticationManagementService() : m_dataStore(DataStore::getInstance()) {};
void logout();
void changePassword();
};
@@ -0,0 +1 @@
#include "AdminMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class AdminMenu
{
};
@@ -0,0 +1 @@
#include "EmployeeMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class EmployeeMenu
{
};
@@ -0,0 +1 @@
#include "FinanceExecutiveMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class FinanceExecutiveMenu
{
};
@@ -0,0 +1 @@
#include "HRManagerMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class HRManagerMenu
{
};
@@ -0,0 +1 @@
#include "ITExecutiveMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class ITExecutiveMenu
{
};
@@ -0,0 +1 @@
#include "TalentExecutiveMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class TalentExecutiveMenu
{
};
@@ -0,0 +1 @@
#include "TeamExecutiveMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class TeamExecutiveMenu
{
};
@@ -0,0 +1 @@
#include "TeamLeadMenu.h"
@@ -0,0 +1,5 @@
#pragma once
class TeamLeadMenu
{
};
@@ -0,0 +1,45 @@
#include "UserInterface.h"
void UserInterface::run()
{
bool isMenuActive = true;
while (isMenuActive)
{
try
{
int choice;
util::clear();
std::cout << "Zenvy - HR Management System\n1. Login\n2. Exit\nEnter your Choice: ";
util::read(choice);
if (!handleOperation(choice))
{
isMenuActive = false;
}
}
catch (const std::exception& e)
{
std::cout << "Exception: " << e.what() << std::endl;
util::pressEnter();
}
}
}
bool UserInterface::handleOperation(int choice)
{
switch (choice)
{
case 1:
login();
break;
case 2:
std::cout << "Exiting..." << std::endl;
return false;
default:
std::cout << "Enter a valid choice!" << std::endl;
}
return true;
}
void UserInterface::login()
{
}
@@ -0,0 +1,43 @@
#pragma once
#include <iostream>
#include <memory>
#include <utility>
#include "AdminMenu.h"
#include "EmployeeMenu.h"
#include "FinanceExecutiveMenu.h"
#include "HRManagerMenu.h"
#include "ITExecutiveMenu.h"
#include "TalentExecutiveMenu.h"
#include "TeamExecutiveMenu.h"
#include "TeamLeadMenu.h"
#include "ZenvyController.h"
#include "InputHelper.h"
#include "OutputHelper.h"
class UserInterface
{
private:
std::shared_ptr<ZenvyController> m_controller;
std::shared_ptr<EmployeeMenu> m_employeeMenu;
std::shared_ptr<AdminMenu> m_adminMenu;
std::shared_ptr<FinanceExecutiveMenu> m_financeExecutiveMenu;
std::shared_ptr<HRManagerMenu> m_hrManagerMenu;
std::shared_ptr<ITExecutiveMenu> m_itExecutiveMenu;
std::shared_ptr<TalentExecutiveMenu> m_talentExecutiveMenu;
std::shared_ptr<TeamExecutiveMenu> m_teamExecutiveMenu;
std::shared_ptr<TeamLeadMenu> m_teamLeadMenu;
public:
UserInterface() : m_controller(std::make_shared<ZenvyController>()),
m_employeeMenu(std::make_shared<EmployeeMenu>()),
m_adminMenu(std::make_shared<AdminMenu>()),
m_financeExecutiveMenu(std::make_shared<FinanceExecutiveMenu>()),
m_hrManagerMenu(std::make_shared<HRManagerMenu>()),
m_itExecutiveMenu(std::make_shared<ITExecutiveMenu>()),
m_talentExecutiveMenu(std::make_shared<TalentExecutiveMenu>()),
m_teamExecutiveMenu(std::make_shared<TeamExecutiveMenu>()),
m_teamLeadMenu(std::make_shared<TeamLeadMenu>()) {};
void run();
bool handleOperation(int choice);
void login();
};