From 676c5ce13284af9d82cc409777533f70732155df Mon Sep 17 00:00:00 2001 From: Ajmal Jalaludeen Date: Thu, 2 Apr 2026 20:11:27 +0530 Subject: [PATCH] Setup basic UI and controller for authentication SRS01 : Authentication - 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 Smitha Mohan --- .../Trenser.Zenvy/Trenser.Zenvy.vcxproj | 20 +++++ .../Trenser.Zenvy.vcxproj.filters | 86 +++++++++++++++++-- .../controllers/ZenvyController.h | 36 ++++++++ .../Trenser.Zenvy/datastores/DataStore.h | 1 + Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp | 1 + Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h | 6 ++ .../AuthenticationManagementService.cpp | 1 + .../AuthenticationManagementService.h | 11 +++ .../Trenser.Zenvy/views/AdminMenu.cpp | 1 + Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h | 5 ++ .../Trenser.Zenvy/views/EmployeeMenu.cpp | 1 + .../Trenser.Zenvy/views/EmployeeMenu.h | 5 ++ .../views/FinanceExecutiveMenu.cpp | 1 + .../views/FinanceExecutiveMenu.h | 5 ++ .../Trenser.Zenvy/views/HRManagerMenu.cpp | 1 + .../Trenser.Zenvy/views/HRManagerMenu.h | 5 ++ .../Trenser.Zenvy/views/ITExecutiveMenu.cpp | 1 + .../Trenser.Zenvy/views/ITExecutiveMenu.h | 5 ++ .../views/TalentExecutiveMenu.cpp | 1 + .../Trenser.Zenvy/views/TalentExecutiveMenu.h | 5 ++ .../Trenser.Zenvy/views/TeamExecutiveMenu.cpp | 1 + .../Trenser.Zenvy/views/TeamExecutiveMenu.h | 5 ++ .../Trenser.Zenvy/views/TeamLeadMenu.cpp | 1 + .../Trenser.Zenvy/views/TeamLeadMenu.h | 5 ++ .../Trenser.Zenvy/views/UserInterface.cpp | 45 ++++++++++ .../Trenser.Zenvy/views/UserInterface.h | 43 ++++++++++ 26 files changed, 291 insertions(+), 7 deletions(-) create mode 100644 Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj index cf0bec3..a90e70f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj @@ -131,6 +131,7 @@ + @@ -165,6 +166,15 @@ + + + + + + + + + @@ -174,6 +184,7 @@ + @@ -204,6 +215,15 @@ + + + + + + + + + diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters index 3c26252..c4168cc 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters @@ -5,10 +5,6 @@ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms @@ -31,11 +27,15 @@ {eb93b9d1-08eb-48aa-be2a-e17085ce27bd} + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {84db0710-2b0f-48bc-a72f-bd10c29954fc} + - - Source Files - Services @@ -156,6 +156,42 @@ Models + + Source Files + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Models + @@ -269,6 +305,42 @@ Models + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Views + + + Models + diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 7dae696..956e962 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -1,5 +1,41 @@ #pragma once +#include +#include +#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 m_authenticationManagementService; + std::shared_ptr m_attendanceManagementService; + std::shared_ptr m_bookingManagementService; + std::shared_ptr m_employeeManagememtService; + std::shared_ptr m_leaveManagementService; + std::shared_ptr m_notificationManagementService; + std::shared_ptr m_payslipManagementService; + std::shared_ptr m_talentAcquisitionManagementService; + std::shared_ptr m_teamManagementService; + std::shared_ptr m_ticketManagementService; +public: + ZenvyController() : + m_authenticationManagementService(std::make_shared()), + m_attendanceManagementService(std::make_shared()), + m_bookingManagementService(std::make_shared()), + m_employeeManagememtService(std::make_shared()), + m_leaveManagementService(std::make_shared()), + m_notificationManagementService(std::make_shared()), + m_payslipManagementService(std::make_shared()), + m_talentAcquisitionManagementService(std::make_shared()), + m_teamManagementService(std::make_shared()), + m_ticketManagementService(std::make_shared()) {}; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index a9b8033..b89e335 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -17,6 +17,7 @@ #include "JobListing.h" #include "Notification.h" #include "Announcement.h" +#include "Faq.h" using employeeMap = std::map>; using logMap = std::map>; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp new file mode 100644 index 0000000..63a403f --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp @@ -0,0 +1 @@ +#include "Faq.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h new file mode 100644 index 0000000..b90edff --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h @@ -0,0 +1,6 @@ +#pragma once + +class Faq +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 2143fb2..7225c9d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -1 +1,2 @@ #include "AuthenticationManagementService.h" + diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h index fe2e0af..b7d6463 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h @@ -1,5 +1,16 @@ #pragma once +#include +#include +#include +#include "DataStore.h" + class AuthenticationManagementService { +private: + DataStore& m_dataStore; +public: + AuthenticationManagementService() : m_dataStore(DataStore::getInstance()) {}; + void logout(); + void changePassword(); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp new file mode 100644 index 0000000..bf4d089 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp @@ -0,0 +1 @@ +#include "AdminMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h new file mode 100644 index 0000000..8c0d340 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h @@ -0,0 +1,5 @@ +#pragma once +class AdminMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp new file mode 100644 index 0000000..0b6c6bf --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -0,0 +1 @@ +#include "EmployeeMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h new file mode 100644 index 0000000..a789739 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h @@ -0,0 +1,5 @@ +#pragma once +class EmployeeMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp new file mode 100644 index 0000000..45f0ba9 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -0,0 +1 @@ +#include "FinanceExecutiveMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h new file mode 100644 index 0000000..109ff36 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h @@ -0,0 +1,5 @@ +#pragma once +class FinanceExecutiveMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp new file mode 100644 index 0000000..efaec07 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp @@ -0,0 +1 @@ +#include "HRManagerMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h new file mode 100644 index 0000000..5ea4230 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h @@ -0,0 +1,5 @@ +#pragma once +class HRManagerMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp new file mode 100644 index 0000000..45ccf1f --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp @@ -0,0 +1 @@ +#include "ITExecutiveMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h new file mode 100644 index 0000000..abc8201 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h @@ -0,0 +1,5 @@ +#pragma once +class ITExecutiveMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp new file mode 100644 index 0000000..a561bc9 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp @@ -0,0 +1 @@ +#include "TalentExecutiveMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h new file mode 100644 index 0000000..6461f74 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h @@ -0,0 +1,5 @@ +#pragma once +class TalentExecutiveMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp new file mode 100644 index 0000000..614ea00 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp @@ -0,0 +1 @@ +#include "TeamExecutiveMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h new file mode 100644 index 0000000..cfd38be --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h @@ -0,0 +1,5 @@ +#pragma once +class TeamExecutiveMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp new file mode 100644 index 0000000..1cc3c0d --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp @@ -0,0 +1 @@ +#include "TeamLeadMenu.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h new file mode 100644 index 0000000..7ac3b19 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h @@ -0,0 +1,5 @@ +#pragma once +class TeamLeadMenu +{ +}; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp new file mode 100644 index 0000000..6614f05 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -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() +{ +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h new file mode 100644 index 0000000..9be7028 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h @@ -0,0 +1,43 @@ +#pragma once +#include +#include +#include +#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 m_controller; + std::shared_ptr m_employeeMenu; + std::shared_ptr m_adminMenu; + std::shared_ptr m_financeExecutiveMenu; + std::shared_ptr m_hrManagerMenu; + std::shared_ptr m_itExecutiveMenu; + std::shared_ptr m_talentExecutiveMenu; + std::shared_ptr m_teamExecutiveMenu; + std::shared_ptr m_teamLeadMenu; +public: + UserInterface() : m_controller(std::make_shared()), + m_employeeMenu(std::make_shared()), + m_adminMenu(std::make_shared()), + m_financeExecutiveMenu(std::make_shared()), + m_hrManagerMenu(std::make_shared()), + m_itExecutiveMenu(std::make_shared()), + m_talentExecutiveMenu(std::make_shared()), + m_teamExecutiveMenu(std::make_shared()), + m_teamLeadMenu(std::make_shared()) {}; + void run(); + bool handleOperation(int choice); + void login(); +}; +