From a925fe63fbb3978e86a2c591429acccf8f1bc6da Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Thu, 2 Apr 2026 19:58:59 +0530 Subject: [PATCH 01/19] Add logging service and datastore setup, refactor inputHelper SRS01 : Authentication - Set up DataStore singleton and added basic employee + log storage - Added LogService - Refactor InputHelper - Updated include paths in project config Smitha Mohan --- Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp | 4 ++ .../Trenser.Zenvy/Trenser.Zenvy.vcxproj | 2 +- .../Trenser.Zenvy/datastores/DataStore.cpp | 16 ++++++++ .../Trenser.Zenvy/datastores/DataStore.h | 38 ++++++++++++++++++- Trenser.Zenvy/Trenser.Zenvy/models/Log.h | 4 +- .../Trenser.Zenvy/services/LogService.cpp | 11 ++++++ .../Trenser.Zenvy/services/LogService.h | 3 ++ .../Trenser.Zenvy/utilities/InputHelper.cpp | 10 ----- .../Trenser.Zenvy/utilities/InputHelper.h | 33 +++++++++------- 9 files changed, 93 insertions(+), 28 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp index e69de29..5aa1174 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp @@ -0,0 +1,4 @@ +int main() +{ + +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj index 88bb765..cf0bec3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj @@ -102,7 +102,7 @@ true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(ProjectDir)controllers;$(ProjectDir)services;$(ProjectDir)utilities;%(AdditionalIncludeDirectories) + $(ProjectDir)models;$(ProjectDir)controllers;$(ProjectDir)services;$(ProjectDir)utilities;$(ProjectDir)factories;$(ProjectDir)datastores;%(AdditionalIncludeDirectories) Console diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index e81f26f..80f370f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -1 +1,17 @@ #include "DataStore.h" + +DataStore& DataStore::getInstance() +{ + static DataStore dataStore; + return dataStore; +} + +logMap& DataStore::getLogs() +{ + return m_logs; +} + +employeeMap& DataStore::getEmployees() +{ + return m_employees; +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 09042e4..a9b8033 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -1,5 +1,39 @@ #pragma once +#include +#include +#include "Employee.h" +#include "Log.h" +#include "Timestamp.h" +#include "Admin.h" +#include "HRManager.h" +#include "GeneralEmployee.h" +#include "ITExecutive.h" +#include "FinanceExecutive.h" +#include "TeamExecutive.h" +#include "TalentExecutive.h" +#include "Team.h" +#include "Room.h" +#include "Ticket.h" +#include "JobListing.h" +#include "Notification.h" +#include "Announcement.h" + +using employeeMap = std::map>; +using logMap = std::map>; + class DataStore { -}; - +private: + std::shared_ptr m_authenticatedEmployee; + employeeMap m_employees; + logMap m_logs; + DataStore() = default; +public: + static DataStore& getInstance(); + DataStore(const DataStore&) = delete; + DataStore& operator=(const DataStore&) = delete; + DataStore(DataStore&&) = delete; + DataStore& operator=(DataStore&&) = delete; + employeeMap& getEmployees(); + logMap& getLogs(); +}; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Log.h b/Trenser.Zenvy/Trenser.Zenvy/models/Log.h index 9f05194..f2350b2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Log.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Log.h @@ -9,8 +9,8 @@ private: std::string m_message; public: Log() : m_timestamp(), m_message("") {} - Log(const util::Timestamp& timestamp, const std::string& message) - : m_timestamp(timestamp), m_message(message) {} + Log(const std::string& message) + : m_timestamp(), m_message(message) {} const util::Timestamp& getTimestamp() const; const std::string& getMessage() const; void setTimestamp(const util::Timestamp& timestamp); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp index 28458fa..1742a3d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp @@ -1 +1,12 @@ #include "LogService.h" +#include "Log.h" +#include "Factory.h" +#include "DataStore.h" + +void LogService::log(const std::string& message) +{ + DataStore& dataStore = DataStore::getInstance(); + logMap& logs = dataStore.getLogs(); + std::shared_ptr log = Factory::getObject(message); + logs.emplace(std::make_pair(log->getTimestamp(), log)); +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h index f5b6105..6918b25 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h @@ -1,5 +1,8 @@ #pragma once +#include "Log.h" class LogService { +public: + static void log(const std::string&); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.cpp index 8faecf3..0f3b773 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.cpp @@ -1,11 +1 @@ #include "inputHelper.h" - -void util::readString(std::string& value) -{ - getline(std::cin >> std::ws, value); -} - -void util::pressEnter() -{ - system("pause"); -} diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h index 604ae31..559acda 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h @@ -1,4 +1,5 @@ #pragma once + #include #include #include @@ -6,18 +7,24 @@ namespace util { - template - void readValue(T& value) - { - std::cin >> value; - if (std::cin.fail()) - { - std::cin.clear(); - std::cin.ignore(std::numeric_limits::max(), '\n'); - throw std::runtime_error("Invalid Console Input"); - } - } + template + inline void read(T& value) + { + if (!(std::cin >> value)) + { + std::cin.clear(); + std::cin.ignore(std::numeric_limits::max(), '\n'); + throw std::runtime_error("Invalid console input"); + } + } - void readString(std::string&); - void pressEnter(); + inline void read(std::string& value) + { + std::getline(std::cin >> std::ws, value); + } + + inline void pressEnter() + { + system("pause"); + } } \ No newline at end of file From 676c5ce13284af9d82cc409777533f70732155df Mon Sep 17 00:00:00 2001 From: Ajmal Jalaludeen Date: Thu, 2 Apr 2026 20:11:27 +0530 Subject: [PATCH 02/19] 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(); +}; + From 02c4f1a954cad0f12167714189831a2975c27e46 Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Mon, 6 Apr 2026 09:39:14 +0530 Subject: [PATCH 03/19] Add EmployeeType and LoginStatus enums, extend Employee model SRS01 : Authentication - Added EmployeeType and LoginStatus enums - Extended Employee model to store employee type - Updated Employee constructors to initialize employee type - Added getter for employee type in Employee model Smitha Mohan --- .../Trenser.Zenvy/models/Employee.cpp | 7 ++++++- Trenser.Zenvy/Trenser.Zenvy/models/Employee.h | 7 +++++-- Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp index d5d4554..4bd8c3b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp @@ -122,4 +122,9 @@ void Employee::addLeave(std::shared_ptr leave) { m_leaves[leave->getLeaveId()] = leave; } -} \ No newline at end of file +} + +Enums::EmployeeType Employee::getEmployeeType() const +{ + return m_employeeType; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h index 559afba..ef6e6b0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h @@ -26,16 +26,18 @@ private: payslipMap m_payslips; attendanceMap m_attendances; leaveMap m_leaves; + Enums::EmployeeType m_employeeType; public: - Employee() : m_id(""), m_password(""), m_name(""), m_phone(""), m_email(""), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId("") {} + Employee() : m_id(""), m_password(""), m_name(""), m_phone(""), m_email(""), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId(""), m_employeeType(Enums::EmployeeType::GENERAL) {} Employee(const std::string& id, const std::string& password, const std::string& name, const std::string& phone, const std::string& email, const std::string& teamId, + Enums::EmployeeType employeeType, std::shared_ptr payroll) - : m_id(id), m_password(password), m_name(name), m_phone(phone), m_email(email), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId(teamId), m_payroll(payroll) {} + : m_id(id), m_password(password), m_name(name), m_phone(phone), m_email(email), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId(teamId), m_employeeType(employeeType), m_payroll(payroll) { } const std::string& getEmployeeId() const; const std::string& getEmployeePassword() const; const std::string& getEmployeeName() const; @@ -59,5 +61,6 @@ public: void addPayslip(std::shared_ptr payslip); void addAttendance(std::shared_ptr attendance); void addLeave(std::shared_ptr leave); + Enums::EmployeeType getEmployeeType() const; ~Employee() = default; }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h index 84f2848..40b8f02 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h @@ -69,4 +69,22 @@ namespace Enums { TEAM_LEAD }; + enum class EmployeeType + { + GENERAL, + IT, + FINANCE, + TAG, + HR, + ADMIN, + INVALID + }; + + enum class LoginStatus + { + SUCCESS, + FIRST_LOGIN, + USER_NOT_FOUND, + INVALID_PASSWORD + }; } From d76def42e904b8b55098d2860866b7f739a06d01 Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Mon, 6 Apr 2026 11:49:57 +0530 Subject: [PATCH 04/19] Add authentication flow, UI menu routing, and application config AUTH001 : Login - Introduced ApplicationConfig for default configuration values - Implemented authentication flow in AuthenticationManagementService - Added login and logout handling in ZenvyController - Updated enums to include INVALID values and TEAM employee type - Implemented login UI flow with role-based menu routing Smitha Mohan --- .../Trenser.Zenvy/Trenser.Zenvy.vcxproj | 2 + .../controllers/ZenvyController.cpp | 14 +++ .../controllers/ZenvyController.h | 7 ++ .../Trenser.Zenvy/datastores/DataStore.cpp | 5 + .../Trenser.Zenvy/datastores/DataStore.h | 1 + .../services/ApplicationConfig.cpp | 1 + .../services/ApplicationConfig.h | 6 + .../AuthenticationManagementService.cpp | 46 ++++++++ .../AuthenticationManagementService.h | 2 + Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h | 4 +- .../Trenser.Zenvy/views/UserInterface.cpp | 108 +++++++++++++++++- .../Trenser.Zenvy/views/UserInterface.h | 14 --- 12 files changed, 194 insertions(+), 16 deletions(-) create mode 100644 Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj index a90e70f..d128542 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj @@ -146,6 +146,7 @@ + @@ -199,6 +200,7 @@ + diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index aa50123..c1b4287 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -1 +1,15 @@ #include "ZenvyController.h" + +//Authentication +AuthenticationContext ZenvyController::login(const std::string& email, const std::string& password) +{ + return m_authenticationManagementService->login(email, password); +} + +void ZenvyController::logout() +{ +} + +void AuthenticationManagementService::changePassword() +{ +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 956e962..3dc3575 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -11,6 +11,9 @@ #include "TalentAcquisitionManagementService.h" #include "TeamManagementService.h" #include "TicketManagementService.h" +#include "Enums.h" + +using AuthenticationContext = std::tuple; class ZenvyController { @@ -37,5 +40,9 @@ public: m_talentAcquisitionManagementService(std::make_shared()), m_teamManagementService(std::make_shared()), m_ticketManagementService(std::make_shared()) {}; + + //Authentication + AuthenticationContext login(const std::string& email, const std::string& password); + void logout(); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index 80f370f..7fcd993 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -11,6 +11,11 @@ logMap& DataStore::getLogs() return m_logs; } +void DataStore::setAuthenticatedEmployee(std::shared_ptr authenticatedEmployee) +{ + m_authenticatedEmployee = authenticatedEmployee; +} + employeeMap& DataStore::getEmployees() { return m_employees; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index b89e335..ca2bd63 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -37,4 +37,5 @@ public: DataStore& operator=(DataStore&&) = delete; employeeMap& getEmployees(); logMap& getLogs(); + void setAuthenticatedEmployee(std::shared_ptr < Employee>); }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp new file mode 100644 index 0000000..cb68b98 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp @@ -0,0 +1 @@ +#include "ApplicationConfig.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h new file mode 100644 index 0000000..4d7db21 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h @@ -0,0 +1,6 @@ +#pragma once + +namespace Config +{ + constexpr const char* DEFAULT_PASSWORD = "password"; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 7225c9d..9f60c05 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -1,2 +1,48 @@ +#include #include "AuthenticationManagementService.h" +#include "ApplicationConfig.h" +std::tuple AuthenticationManagementService::login(const std::string& email, const std::string& password) +{ + employeeMap& employees = m_dataStore.getEmployees(); + Enums::LoginStatus loginStatus = Enums::LoginStatus::USER_NOT_FOUND; + Enums::EmployeeType employeeType = Enums::EmployeeType::INVALID; + Enums::EmployeeDesignation employeeDesignation = Enums::EmployeeDesignation::INVALID; + for (const auto& employee : employees) + { + if (employee.second->getEmployeeEmail() == email) + { + if (employee.second->getEmployeePassword() == password) + { + if (password == Config::DEFAULT_PASSWORD) + { + loginStatus = Enums::LoginStatus::FIRST_LOGIN; + } + else + { + loginStatus = Enums::LoginStatus::SUCCESS; + } + employeeType = employee.second->getEmployeeType(); + if (employeeType == Enums::EmployeeType::GENERAL) + { + std::shared_ptr generalEmployee = std::dynamic_pointer_cast(employee.second); + if (generalEmployee) + { + employeeDesignation = generalEmployee->getDesignation(); + } + else + { + throw std::runtime_error("Invalid Employee Type"); + } + } + m_dataStore.setAuthenticatedEmployee(employee.second); + } + else + { + loginStatus = Enums::LoginStatus::INVALID_PASSWORD; + } + break; + } + } + return std::make_tuple(loginStatus, employeeType, employeeDesignation); +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h index b7d6463..5790978 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h @@ -3,6 +3,7 @@ #include #include #include "DataStore.h" +#include "Enums.h" class AuthenticationManagementService { @@ -10,6 +11,7 @@ private: DataStore& m_dataStore; public: AuthenticationManagementService() : m_dataStore(DataStore::getInstance()) {}; + std::tuple login(const std::string& username, const std::string& password); void logout(); void changePassword(); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h index 40b8f02..ace8792 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h @@ -66,7 +66,8 @@ namespace Enums { { JUNIOR, SENIOR, - TEAM_LEAD + TEAM_LEAD, + INVALID }; enum class EmployeeType @@ -76,6 +77,7 @@ namespace Enums { FINANCE, TAG, HR, + TEAM, ADMIN, INVALID }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp index 6614f05..c320701 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -1,4 +1,19 @@ +#include +#include +#include +#include #include "UserInterface.h" +#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" void UserInterface::run() { @@ -42,4 +57,95 @@ bool UserInterface::handleOperation(int choice) void UserInterface::login() { -} + std::string email, password; + util::clear(); + std::cout << "Enter email: "; + util::read(email); + std::cout << "Enter password: "; + util::read(password); + AuthenticationContext authenticationContext = m_controller->login(email, password); + Enums::LoginStatus loginStatus = std::get<0>(authenticationContext); + Enums::EmployeeType employeeType = std::get<1>(authenticationContext); + Enums::EmployeeDesignation employeeDesignation = std::get<2>(authenticationContext); + if (loginStatus == Enums::LoginStatus::USER_NOT_FOUND) + { + std::cout << "Error: User Not Found! Try Again\n"; + util::pressEnter(); + return; + } + if (loginStatus == Enums::LoginStatus::INVALID_PASSWORD) + { + std::cout << "Error: Invalid Password! Try Again\n"; + util::pressEnter(); + return; + } + if (loginStatus == Enums::LoginStatus::FIRST_LOGIN) + { + util::clear(); + std::cout + << "Warning: You're using the default password!\n" + << "Please change it.\n"; + // TODO: Password reset flow (to be implemented) + util::pressEnter(); + } + util::clear(); + // Route to appropriate menu + switch (employeeType) + { + case Enums::EmployeeType::ADMIN: + { + AdminMenu menu; + menu.run(); + break; + } + case Enums::EmployeeType::HR: + { + HRManagerMenu menu; + menu.run(); + break; + } + case Enums::EmployeeType::FINANCE: + { + FinanceExecutiveMenu menu; + menu.run(); + break; + } + case Enums::EmployeeType::IT: + { + ITExecutiveMenu menu; + menu.run(); + break; + } + case Enums::EmployeeType::TEAM: + { + TeamExecutiveMenu menu; + menu.run(); + break; + } + case Enums::EmployeeType::TAG: + { + TalentExecutiveMenu menu; + menu.run(); + break; + } + case Enums::EmployeeType::GENERAL: + { + if (employeeDesignation == Enums::EmployeeDesignation::TEAM_LEAD) + { + TeamLeadMenu menu; + menu.run(); + } + else + { + EmployeeMenu menu; + menu.run(); + } + break; + } + default: + throw std::runtime_error("Error: Unsupported employee type!\n"); + util::pressEnter(); + break; + } + m_controller->logout(); +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h index 9be7028..9d69aba 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h @@ -1,18 +1,4 @@ #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 { From c2fbfa2d03f65d6a3c04ad49069528ae90c9286b Mon Sep 17 00:00:00 2001 From: Ajmal Jalaludeen Date: Mon, 6 Apr 2026 12:05:22 +0530 Subject: [PATCH 05/19] Add changePassword method in controller and authenticated user accessor AUTH004 : Change Password - Added changePassword method in ZenvyController to move to AuthenticationManagementService - Declared changePassword in ZenvyController.h - Introduced getAuthenticatedUser() in DataStore for accessing authenticated employee - Updated DataStore.h with getAuthenticatedUser() method - Prepared AuthenticationManagementService.cpp for password change implementation Smitha Mohan --- .../Trenser.Zenvy/controllers/ZenvyController.cpp | 3 ++- .../Trenser.Zenvy/controllers/ZenvyController.h | 2 ++ .../Trenser.Zenvy/datastores/DataStore.cpp | 5 +++++ Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h | 1 + .../services/AuthenticationManagementService.cpp | 13 +++++++++++++ .../services/AuthenticationManagementService.h | 3 ++- 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index c1b4287..4efe6f2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -10,6 +10,7 @@ void ZenvyController::logout() { } -void AuthenticationManagementService::changePassword() +void ZenvyController::changePassword(const std::string& password) const { + m_authenticationManagementService->changePassword(password); } diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 3dc3575..6413723 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -44,5 +44,7 @@ public: //Authentication AuthenticationContext login(const std::string& email, const std::string& password); void logout(); + void changePassword(const std::string&) const; }; + diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index 7fcd993..71f6d56 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -11,6 +11,11 @@ logMap& DataStore::getLogs() return m_logs; } +std::shared_ptr& DataStore::getAuthenticatedEmployee() +{ + return m_authenticatedEmployee; +} + void DataStore::setAuthenticatedEmployee(std::shared_ptr authenticatedEmployee) { m_authenticatedEmployee = authenticatedEmployee; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index ca2bd63..750d741 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -37,5 +37,6 @@ public: DataStore& operator=(DataStore&&) = delete; employeeMap& getEmployees(); logMap& getLogs(); + std::shared_ptr& getAuthenticatedEmployee(); void setAuthenticatedEmployee(std::shared_ptr < Employee>); }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 9f60c05..bf98c64 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -46,3 +46,16 @@ std::tuple } return std::make_tuple(loginStatus, employeeType, employeeDesignation); } + +void AuthenticationManagementService::changePassword(const std::string& password) +{ + std::shared_ptr authenticatedUser = m_dataStore.getAuthenticatedUser(); + if (authenticatedUser) + { + authenticatedUser->setEmployeePassword(password); + } + else + { + throw std::runtime_error("User not found"); + } +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h index 5790978..9c65eae 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h @@ -2,6 +2,7 @@ #include #include #include +#include #include "DataStore.h" #include "Enums.h" @@ -13,6 +14,6 @@ public: AuthenticationManagementService() : m_dataStore(DataStore::getInstance()) {}; std::tuple login(const std::string& username, const std::string& password); void logout(); - void changePassword(); + void changePassword(std::string); }; From 45d00d89645ac07ddb85854d5e3b7db409d404d9 Mon Sep 17 00:00:00 2001 From: Jissin Sam Mathew Date: Mon, 6 Apr 2026 11:56:47 +0530 Subject: [PATCH 06/19] Add logout functionality in controller and datastore access AUTH003: Logout User - Added logout() method in ZenvyController and AuthenticationManagementService - Implemented logout handling in AuthenticationManagementService Smitha Mohan --- .../Trenser.Zenvy/controllers/ZenvyController.cpp | 1 + Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp | 8 +++++++- Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h | 1 + .../services/AuthenticationManagementService.cpp | 9 +++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 4efe6f2..39d42dd 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -8,6 +8,7 @@ AuthenticationContext ZenvyController::login(const std::string& email, const std void ZenvyController::logout() { + m_authenticationManagementService->logout(); } void ZenvyController::changePassword(const std::string& password) const diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index 71f6d56..16ddca1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -24,4 +24,10 @@ void DataStore::setAuthenticatedEmployee(std::shared_ptr authenticated employeeMap& DataStore::getEmployees() { return m_employees; -} \ No newline at end of file +} + +std::shared_ptr& DataStore::getAuthenticatedUser() +{ + return m_authenticatedEmployee; +} + diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 750d741..5ecfb70 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -36,6 +36,7 @@ public: DataStore(DataStore&&) = delete; DataStore& operator=(DataStore&&) = delete; employeeMap& getEmployees(); + std::shared_ptr& getAuthenticatedUser(); logMap& getLogs(); std::shared_ptr& getAuthenticatedEmployee(); void setAuthenticatedEmployee(std::shared_ptr < Employee>); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index bf98c64..5c0511a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -59,3 +59,12 @@ void AuthenticationManagementService::changePassword(const std::string& password throw std::runtime_error("User not found"); } } + +void AuthenticationManagementService::logout() { + if (m_dataStore.getAuthenticatedUser()) { + m_dataStore.getAuthenticatedUser() = nullptr; + } + else { + throw std::runtime_error("No user currently logged In..."); + } +} \ No newline at end of file From 1c22c14f3278580c31f6c2b4c0d6a61a187bddbc Mon Sep 17 00:00:00 2001 From: Princy Jerin Date: Mon, 6 Apr 2026 15:06:55 +0530 Subject: [PATCH 07/19] Add reset initial password AUTH002 : Reset Initial Password - Added logic for resetting initial password - Code Cleanup Smitha Mohan --- .../Trenser.Zenvy.vcxproj.filters | 15 +++---- .../controllers/ZenvyController.cpp | 2 +- .../controllers/ZenvyController.h | 4 +- .../AuthenticationManagementService.h | 2 +- .../Trenser.Zenvy/utilities/Validator.cpp | 43 +++++++++++++++++++ .../Trenser.Zenvy/utilities/Validator.h | 1 + .../Trenser.Zenvy/views/UserInterface.cpp | 18 ++++++-- 7 files changed, 67 insertions(+), 18 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters index c4168cc..8a20aa6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters @@ -174,9 +174,6 @@ Views - - Views - Views @@ -192,6 +189,9 @@ Models + + Services + @@ -320,12 +320,6 @@ Views - - Views - - - Views - Views @@ -341,6 +335,9 @@ Models + + Services + diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 39d42dd..1f26894 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -11,7 +11,7 @@ void ZenvyController::logout() m_authenticationManagementService->logout(); } -void ZenvyController::changePassword(const std::string& password) const +void ZenvyController::changePassword(const std::string& password) { m_authenticationManagementService->changePassword(password); } diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 6413723..11a609d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -44,7 +44,5 @@ public: //Authentication AuthenticationContext login(const std::string& email, const std::string& password); void logout(); - void changePassword(const std::string&) const; + void changePassword(const std::string&); }; - - diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h index 9c65eae..2f812d6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h @@ -14,6 +14,6 @@ public: AuthenticationManagementService() : m_dataStore(DataStore::getInstance()) {}; std::tuple login(const std::string& username, const std::string& password); void logout(); - void changePassword(std::string); + void changePassword(const std::string&); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp index fa7707e..f6c4306 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp @@ -1,4 +1,7 @@ +#include +#include #include "Validator.h" +#include "ApplicationConfig.h" bool util::isPhoneNumberValid(const std::string& phoneNumber) { if (phoneNumber.size() != 10) @@ -26,3 +29,43 @@ bool util::isEmailValid(const std::string& email) { } return true; } + + +bool util::isPasswordValid(const std::string& password) +{ + if (password == Config::DEFAULT_PASSWORD) + { + return false; + } + if (password.length() < 8) + return false; + bool hasUpper = false; + bool hasLower = false; + bool hasDigit = false; + bool hasSpecial = false; + + for (char character : password) + { + if (std::isspace(static_cast(character))) + { + return false; + } + if (std::isupper(static_cast(character))) + { + hasUpper = true; + } + else if (std::islower(static_cast(character))) + { + hasLower = true; + } + else if (std::isdigit(static_cast(character))) + { + hasDigit = true; + } + else + { + hasSpecial = true; + } + } + return hasUpper && hasLower && hasDigit && hasSpecial; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h index d5fd36d..fbdf962 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h @@ -7,4 +7,5 @@ namespace util { bool isPhoneNumberValid(const std::string&); bool isEmailValid(const std::string&); + bool isPasswordValid(const std::string&); } \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp index c320701..3bc4e6e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -14,6 +14,7 @@ #include "ZenvyController.h" #include "InputHelper.h" #include "OutputHelper.h" +#include "Validator.h" void UserInterface::run() { @@ -82,11 +83,20 @@ void UserInterface::login() if (loginStatus == Enums::LoginStatus::FIRST_LOGIN) { util::clear(); - std::cout - << "Warning: You're using the default password!\n" + std::cout << "Warning: You're using the default password!\n" << "Please change it.\n"; - // TODO: Password reset flow (to be implemented) - util::pressEnter(); + std::cout << "Enter new password: \n"; + util::read(password); + if (util::isPasswordValid(password)) + { + m_controller->changePassword(password); + } + else + { + std::cout << "\nInvalid Password"; + util::pressEnter(); + return; + } } util::clear(); // Route to appropriate menu From 719bf5e7b3755a7ce547422b41ade2fa853647e6 Mon Sep 17 00:00:00 2001 From: Tinu Johnson Date: Mon, 6 Apr 2026 16:32:18 +0530 Subject: [PATCH 08/19] Setup basic UI and controller for authentication SRS01 : Authentication - Added basic UI structure with UserInterface and role-based menus (Admin, HR, IT, Finance, Talent, Team, TeamLead, Employee). - Created menu classes for different roles, each with run() and handleOperation() methods. Smitha Mohan --- .../Trenser.Zenvy/views/AdminMenu.cpp | 51 +++++++++++ Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h | 9 ++ .../Trenser.Zenvy/views/EmployeeMenu.cpp | 78 +++++++++++++++++ .../Trenser.Zenvy/views/EmployeeMenu.h | 9 ++ .../views/FinanceExecutiveMenu.cpp | 69 +++++++++++++++ .../views/FinanceExecutiveMenu.h | 9 ++ .../Trenser.Zenvy/views/HRManagerMenu.cpp | 72 ++++++++++++++++ .../Trenser.Zenvy/views/HRManagerMenu.h | 9 ++ .../Trenser.Zenvy/views/ITExecutiveMenu.cpp | 63 ++++++++++++++ .../Trenser.Zenvy/views/ITExecutiveMenu.h | 9 ++ .../views/TalentExecutiveMenu.cpp | 75 +++++++++++++++++ .../Trenser.Zenvy/views/TalentExecutiveMenu.h | 9 ++ .../Trenser.Zenvy/views/TeamExecutiveMenu.cpp | 78 +++++++++++++++++ .../Trenser.Zenvy/views/TeamExecutiveMenu.h | 9 ++ .../Trenser.Zenvy/views/TeamLeadMenu.cpp | 84 +++++++++++++++++++ .../Trenser.Zenvy/views/TeamLeadMenu.h | 9 ++ .../Trenser.Zenvy/views/UserInterface.h | 11 +++ 17 files changed, 653 insertions(+) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp index bf4d089..2f6c762 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp @@ -1 +1,52 @@ +#include #include "AdminMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void AdminMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool AdminMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.createHRManager(); + break; + case 2: + m_zenvyController.createEmployee(); + break; + case 3: + m_zenvyController.viewEmployee(); + break; + case 4: + m_zenvyController.deactivateEmployee(); + break; + case 5: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h index 8c0d340..dab23c5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class AdminMenu { +private: + std::shared_ptr m_zenvyController; +public: + AdminMenu() :m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp index 0b6c6bf..ab5f108 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -1 +1,79 @@ +#include #include "EmployeeMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void EmployeeMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool EmployeeMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.applyLeave(); + break; + case 2: + m_zenvyController.viewPayslip(); + break; + case 3: + m_zenvyController.viewPayslipHistory(); + break; + case 4 : + m_zenvyController.raiseTicket(); + break; + case 5 : + m_zenvyController.viewTicket(); + break; + case 6: + m_zenvyController.viewTicketHistory(); + break; + case 7: + m_zenvyController.viewEmployees(); + break; + case 8: + m_zenvyController.searchEmployee(); + break; + case 9: + m_zenvyController.viewTeamMembers(); + break; + case 10: + m_zenvyController.bookMeetingRoom(); + break; + case 11: + m_zenvyController.viewBookingHistory(); + break; + case 12: + m_zenvyController.viewNotifications(); + break; + case 13: + m_zenvyController.viewAnnouncements(); + break; + case 14: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h index a789739..f082b66 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class EmployeeMenu { +private: + std::shared_ptr m_zenvyController; +public: + EmployeeMenu() : m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 45f0ba9..c4b3578 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -1 +1,70 @@ +#include #include "FinanceExecutiveMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void FinanceExecutiveMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +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 4: + m_zenvyController.viewEmployees(); + 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; + case 11: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h index 109ff36..825322f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class FinanceExecutiveMenu { +private: + std::shared_ptr m_zenvyController; +public: + FinanceExecutiveMenu() : m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp index efaec07..283812a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp @@ -1 +1,73 @@ +#include #include "HRManagerMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void HRManagerMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool HRManagerMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.applyLeave(); + break; + case 2: + m_zenvyController.viewPayslip(); + break; + case 3: + m_zenvyController.viewPayslipHistory(); + break; + case 4: + m_zenvyController.viewEmployees(); + break; + case 5: + m_zenvyController.searchEmployee(); + break; + case 6: + m_zenvyController.viewNotifications(); + break; + case 7: + m_zenvyController.viewAnnouncements(); + break; + case 8: + m_zenvyController.createEmployee(); + break; + case 9: + m_zenvyController.regularizeAttenance(); + break; + case 10: + m_zenvyController.updateLeaveRequest(); + break; + case 11: + m_zenvyController.registercandidateAsEmployee(); + break; + case 12: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h index 5ea4230..05e1f41 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class HRManagerMenu { +private: + std::shared_ptr m_zenvyController; +public: + HRManagerMenu() : m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp index 45ccf1f..de23bbe 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp @@ -1 +1,64 @@ +#include #include "ITExecutiveMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void ITExecutiveMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool ITExecutiveMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.applyLeave(); + break; + case 2: + m_zenvyController.viewPayslip(); + break; + case 3: + m_zenvyController.viewPayslipHistory(); + break; + case 4: + m_zenvyController.viewEmployees(); + 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: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h index abc8201..1c5f060 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class ITExecutiveMenu { +private: + std::shared_ptr m_zenvyController; +public: + ITExecutiveMenu() : m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp index a561bc9..9e6cc7d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp @@ -1 +1,76 @@ +#include #include "TalentExecutiveMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void TalentExecutiveMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool TalentExecutiveMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.applyLeave(); + break; + case 2: + m_zenvyController.viewPayslip(); + break; + case 3: + m_zenvyController.viewPayslipHistory(); + break; + case 4: + m_zenvyController.viewEmployees(); + break; + case 5: + m_zenvyController.searchEmployee(); + break; + case 6: + m_zenvyController.viewNotifications(); + break; + case 7: + m_zenvyController.viewAnnouncements(); + break; + case 8: + m_zenvyController.createNewJob(); + break; + case 9: + m_zenvyController.viewJobOpenings(); + break; + case 10: + m_zenvyController.addCandidate(); + break; + case 11: + m_zenvyController.updateCandidateStatus(); + break; + case 12: + m_zenvyController.viewShortlistedCandidates(); + break; + case 13: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h index 6461f74..a258eaf 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class TalentExecutiveMenu { +private: + std::shared_ptr m_zenvyController; +public: + TalentExecutiveMenu() : m_zenvyController(std::make_shared < ZenvyController>()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp index 614ea00..0f0c197 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp @@ -1 +1,79 @@ +#include #include "TeamExecutiveMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void TeamExecutiveMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool TeamExecutiveMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.applyLeave(); + break; + case 2: + m_zenvyController.viewPayslip(); + break; + case 3: + m_zenvyController.viewPayslipHistory(); + break; + case 4: + m_zenvyController.viewEmployees(); + break; + case 5: + m_zenvyController.searchEmployee(); + break; + case 6: + m_zenvyController.viewNotifications(); + break; + case 7: + m_zenvyController.viewAnnouncements(); + break; + case 8: + m_zenvyController.createTeam(); + break; + case 9: + m_zenvyController.updateTeam(); + break; + case 10: + m_zenvyController.removeTeam(); + break; + case 11: + m_zenvyController.assignEmployee(); + break; + case 12: + m_zenvyController.unassignEmployee(); + break; + case 13: + m_zenvyController.viewTeams(); + break; + case 14: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h index cfd38be..4b5181d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class TeamExecutiveMenu { +private: + std::shared_ptr m_zenvyController; +public: + TeamExecutiveMenu() : m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp index 1cc3c0d..35e89cd 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp @@ -1 +1,85 @@ +#include #include "TeamLeadMenu.h" +#include"InputHelper.h" +#include"OutputHelper.h" + +void TeamLeadMenu::run() +{ + bool isMenuActive = true; + while (isMenuActive) + { + try + { + 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: "; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } +} + +bool TeamLeadMenu::handleOperation(int choice) +{ + switch (choice) + { + case 1: + m_zenvyController.applyLeave(); + break; + case 2: + m_zenvyController.viewPayslip(); + break; + case 3: + m_zenvyController.viewPayslipHistory(); + break; + case 4: + m_zenvyController.raiseTicket(); + break; + case 5: + m_zenvyController.viewTicket(); + break; + case 6: + m_zenvyController.viewTicketHistory(); + break; + case 7: + m_zenvyController.viewEmployees(); + break; + case 8: + m_zenvyController.searchEmployee(); + break; + case 9: + m_zenvyController.viewTeamMembers(); + break; + case 10: + m_zenvyController.bookMeetingRoom(); + break; + case 11: + m_zenvyController.viewBookingHistory(); + break; + case 12: + m_zenvyController.viewNotifications(); + break; + case 13: + m_zenvyController.viewAnnouncements(); + break; + case 14: + m_zenvyController.regularizeAttendance(); + break; + case 15: + m_zenvyController.updateLeaveRequest(); + break; + case 16: + return false; + default: + std::cout << "Enter a valid choice!" << std::endl; + } + return true; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h index 7ac3b19..e1bd45b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h @@ -1,5 +1,14 @@ #pragma once +#include +#include"ZenvyController.h" + class TeamLeadMenu { +private: + std::shared_ptr m_zenvyController; +public: + TeamLeadMenu() : m_zenvyController(std::make_shared()) {}; + void run(); + bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h index 9d69aba..c346301 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h @@ -1,4 +1,15 @@ #pragma once +#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" class UserInterface { From 18afdc4189d92c91a3dddc5ca634e7517002ffd1 Mon Sep 17 00:00:00 2001 From: Tinu Johnson Date: Mon, 6 Apr 2026 17:39:09 +0530 Subject: [PATCH 09/19] Error fixes and added main method function and objects SRS01 : Authentication - Fixed polymorphism errors in Employee base class by adding virtual destructor. - Corrected constructor mismatch in GeneralEmployee to properly call Employee constructor with EmployeeType. - Created UserInterface object in main() and invoked run() to start role-based menus. Smitha Mohan --- Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp | 5 +- .../Trenser.Zenvy/Trenser.Zenvy.vcxproj | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Employee.h | 2 +- .../Trenser.Zenvy/models/GeneralEmployee.h | 3 +- .../Trenser.Zenvy/views/AdminMenu.cpp | 4 +- .../Trenser.Zenvy/views/EmployeeMenu.cpp | 4 +- .../views/FinanceExecutiveMenu.cpp | 4 +- .../Trenser.Zenvy/views/HRManagerMenu.cpp | 66 ++++++++-------- .../Trenser.Zenvy/views/ITExecutiveMenu.cpp | 4 +- .../views/TalentExecutiveMenu.cpp | 72 ++++++++--------- .../Trenser.Zenvy/views/TeamExecutiveMenu.cpp | 78 +++++++++---------- .../Trenser.Zenvy/views/TeamLeadMenu.cpp | 4 +- .../Trenser.Zenvy/views/UserInterface.cpp | 1 + 13 files changed, 126 insertions(+), 123 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp index 5aa1174..4413069 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp @@ -1,4 +1,7 @@ +#include "UserInterface.h" int main() { - + UserInterface userInterFace; + userInterFace.run(); + return 0; } \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj index d128542..4424458 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj @@ -102,7 +102,7 @@ true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(ProjectDir)models;$(ProjectDir)controllers;$(ProjectDir)services;$(ProjectDir)utilities;$(ProjectDir)factories;$(ProjectDir)datastores;%(AdditionalIncludeDirectories) + $(ProjectDir)models;$(ProjectDir)controllers;$(ProjectDir)services;$(ProjectDir)utilities;$(ProjectDir)factories;$(ProjectDir)datastores;$(ProjectDir)views;%(AdditionalIncludeDirectories) Console diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h index ef6e6b0..3509db1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h @@ -62,5 +62,5 @@ public: void addAttendance(std::shared_ptr attendance); void addLeave(std::shared_ptr leave); Enums::EmployeeType getEmployeeType() const; - ~Employee() = default; + virtual ~Employee() = default; }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h index 0485bbb..6307e28 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h @@ -15,8 +15,7 @@ public: const std::string& email, const std::string& teamId, std::shared_ptr payroll, - Enums::EmployeeDesignation designation) - : Employee(id, password, name, phone, email, teamId, payroll), m_designation(designation) {} + Enums::EmployeeDesignation designation) : Employee(id, password, name, phone, email, teamId,Enums::EmployeeType::GENERAL, payroll), m_designation(designation) {} Enums::EmployeeDesignation getDesignation() const; void setDesignation(Enums::EmployeeDesignation designation); ~GeneralEmployee() = default; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp index 2f6c762..ecad349 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp @@ -31,7 +31,7 @@ bool AdminMenu::handleOperation(int choice) { switch (choice) { - case 1: + /*case 1: m_zenvyController.createHRManager(); break; case 2: @@ -42,7 +42,7 @@ bool AdminMenu::handleOperation(int choice) break; case 4: m_zenvyController.deactivateEmployee(); - break; + break;*/ case 5: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp index ab5f108..99e3bc0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -31,7 +31,7 @@ bool EmployeeMenu::handleOperation(int choice) { switch (choice) { - case 1: + /*case 1: m_zenvyController.applyLeave(); break; case 2: @@ -69,7 +69,7 @@ bool EmployeeMenu::handleOperation(int choice) break; case 13: m_zenvyController.viewAnnouncements(); - break; + break;*/ case 14: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index c4b3578..081d281 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -31,7 +31,7 @@ bool FinanceExecutiveMenu::handleOperation(int choice) { switch (choice) { - case 1: + /*case 1: m_zenvyController.applyLeave(); break; case 2: @@ -60,7 +60,7 @@ bool FinanceExecutiveMenu::handleOperation(int choice) break; case 10: m_zenvyController.updatePayroll(); - break; + break;*/ case 11: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp index 283812a..7bf812c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp @@ -31,39 +31,39 @@ bool HRManagerMenu::handleOperation(int choice) { switch (choice) { - case 1: - m_zenvyController.applyLeave(); - break; - case 2: - m_zenvyController.viewPayslip(); - break; - case 3: - m_zenvyController.viewPayslipHistory(); - break; - case 4: - m_zenvyController.viewEmployees(); - break; - case 5: - m_zenvyController.searchEmployee(); - break; - case 6: - m_zenvyController.viewNotifications(); - break; - case 7: - m_zenvyController.viewAnnouncements(); - break; - case 8: - m_zenvyController.createEmployee(); - break; - case 9: - m_zenvyController.regularizeAttenance(); - break; - case 10: - m_zenvyController.updateLeaveRequest(); - break; - case 11: - m_zenvyController.registercandidateAsEmployee(); - break; + //case 1: + // m_zenvyController.applyLeave(); + // break; + //case 2: + // m_zenvyController.viewPayslip(); + // break; + //case 3: + // m_zenvyController.viewPayslipHistory(); + // break; + //case 4: + // m_zenvyController.viewEmployees(); + // break; + //case 5: + // m_zenvyController.searchEmployee(); + // break; + //case 6: + // m_zenvyController.viewNotifications(); + // break; + //case 7: + // m_zenvyController.viewAnnouncements(); + // break; + //case 8: + // m_zenvyController.createEmployee(); + // break; + //case 9: + // m_zenvyController.regularizeAttenance(); + // break; + //case 10: + // m_zenvyController.updateLeaveRequest(); + // break; + //case 11: + // m_zenvyController.registercandidateAsEmployee(); + // break; case 12: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp index de23bbe..836ca39 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp @@ -31,7 +31,7 @@ bool ITExecutiveMenu::handleOperation(int choice) { switch (choice) { - case 1: + /*case 1: m_zenvyController.applyLeave(); break; case 2: @@ -54,7 +54,7 @@ bool ITExecutiveMenu::handleOperation(int choice) break; case 8: m_zenvyController.resolveTicket(); - break; + break;*/ case 9: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp index 9e6cc7d..45fbfba 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp @@ -31,42 +31,42 @@ bool TalentExecutiveMenu::handleOperation(int choice) { switch (choice) { - case 1: - m_zenvyController.applyLeave(); - break; - case 2: - m_zenvyController.viewPayslip(); - break; - case 3: - m_zenvyController.viewPayslipHistory(); - break; - case 4: - m_zenvyController.viewEmployees(); - break; - case 5: - m_zenvyController.searchEmployee(); - break; - case 6: - m_zenvyController.viewNotifications(); - break; - case 7: - m_zenvyController.viewAnnouncements(); - break; - case 8: - m_zenvyController.createNewJob(); - break; - case 9: - m_zenvyController.viewJobOpenings(); - break; - case 10: - m_zenvyController.addCandidate(); - break; - case 11: - m_zenvyController.updateCandidateStatus(); - break; - case 12: - m_zenvyController.viewShortlistedCandidates(); - break; + //case 1: + // m_zenvyController.applyLeave(); + // break; + //case 2: + // m_zenvyController.viewPayslip(); + // break; + //case 3: + // m_zenvyController.viewPayslipHistory(); + // break; + //case 4: + // m_zenvyController.viewEmployees(); + // break; + //case 5: + // m_zenvyController.searchEmployee(); + // break; + //case 6: + // m_zenvyController.viewNotifications(); + // break; + //case 7: + // m_zenvyController.viewAnnouncements(); + // break; + //case 8: + // m_zenvyController.createNewJob(); + // break; + //case 9: + // m_zenvyController.viewJobOpenings(); + // break; + //case 10: + // m_zenvyController.addCandidate(); + // break; + //case 11: + // m_zenvyController.updateCandidateStatus(); + // break; + //case 12: + // m_zenvyController.viewShortlistedCandidates(); + // break; case 13: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp index 0f0c197..12c300b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp @@ -31,45 +31,45 @@ bool TeamExecutiveMenu::handleOperation(int choice) { switch (choice) { - case 1: - m_zenvyController.applyLeave(); - break; - case 2: - m_zenvyController.viewPayslip(); - break; - case 3: - m_zenvyController.viewPayslipHistory(); - break; - case 4: - m_zenvyController.viewEmployees(); - break; - case 5: - m_zenvyController.searchEmployee(); - break; - case 6: - m_zenvyController.viewNotifications(); - break; - case 7: - m_zenvyController.viewAnnouncements(); - break; - case 8: - m_zenvyController.createTeam(); - break; - case 9: - m_zenvyController.updateTeam(); - break; - case 10: - m_zenvyController.removeTeam(); - break; - case 11: - m_zenvyController.assignEmployee(); - break; - case 12: - m_zenvyController.unassignEmployee(); - break; - case 13: - m_zenvyController.viewTeams(); - break; + //case 1: + // m_zenvyController.applyLeave(); + // break; + //case 2: + // m_zenvyController.viewPayslip(); + // break; + //case 3: + // m_zenvyController.viewPayslipHistory(); + // break; + //case 4: + // m_zenvyController.viewEmployees(); + // break; + //case 5: + // m_zenvyController.searchEmployee(); + // break; + //case 6: + // m_zenvyController.viewNotifications(); + // break; + //case 7: + // m_zenvyController.viewAnnouncements(); + // break; + //case 8: + // m_zenvyController.createTeam(); + // break; + //case 9: + // m_zenvyController.updateTeam(); + // break; + //case 10: + // m_zenvyController.removeTeam(); + // break; + //case 11: + // m_zenvyController.assignEmployee(); + // break; + //case 12: + // m_zenvyController.unassignEmployee(); + // break; + //case 13: + // m_zenvyController.viewTeams(); + // break; case 14: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp index 35e89cd..4204fb7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp @@ -31,7 +31,7 @@ bool TeamLeadMenu::handleOperation(int choice) { switch (choice) { - case 1: + /*case 1: m_zenvyController.applyLeave(); break; case 2: @@ -75,7 +75,7 @@ bool TeamLeadMenu::handleOperation(int choice) break; case 15: m_zenvyController.updateLeaveRequest(); - break; + break;*/ case 16: return false; default: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp index 3bc4e6e..3429c22 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -52,6 +52,7 @@ bool UserInterface::handleOperation(int choice) return false; default: std::cout << "Enter a valid choice!" << std::endl; + util::pressEnter(); } return true; } From e7332af1e7ea3b45c5cb32b667575865aca76624 Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Tue, 7 Apr 2026 00:55:44 +0530 Subject: [PATCH 10/19] Refactor authentication: replace tuple with DTO, namespace config --- Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h | 4 +--- Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h | 5 ++++- .../services/AuthenticationManagementService.cpp | 4 ++-- .../Trenser.Zenvy/services/AuthenticationManagementService.h | 5 ++++- Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp | 2 +- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 1f26894..3d97204 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -1,7 +1,7 @@ #include "ZenvyController.h" //Authentication -AuthenticationContext ZenvyController::login(const std::string& email, const std::string& password) +AuthenticationDTO ZenvyController::login(const std::string& email, const std::string& password) { return m_authenticationManagementService->login(email, password); } diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 11a609d..1a5c77b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -13,8 +13,6 @@ #include "TicketManagementService.h" #include "Enums.h" -using AuthenticationContext = std::tuple; - class ZenvyController { private: @@ -42,7 +40,7 @@ public: m_ticketManagementService(std::make_shared()) {}; //Authentication - AuthenticationContext login(const std::string& email, const std::string& password); + AuthenticationDTO login(const std::string& email, const std::string& password); void logout(); void changePassword(const std::string&); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h index 4d7db21..8e4705e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h @@ -2,5 +2,8 @@ namespace Config { - constexpr const char* DEFAULT_PASSWORD = "password"; + namespace Authentication + { + constexpr const char* DEFAULT_PASSWORD = "password"; + } } diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 5c0511a..9d7fc4f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -2,7 +2,7 @@ #include "AuthenticationManagementService.h" #include "ApplicationConfig.h" -std::tuple AuthenticationManagementService::login(const std::string& email, const std::string& password) +AuthenticationDTO AuthenticationManagementService::login(const std::string& email, const std::string& password) { employeeMap& employees = m_dataStore.getEmployees(); Enums::LoginStatus loginStatus = Enums::LoginStatus::USER_NOT_FOUND; @@ -14,7 +14,7 @@ std::tuple { if (employee.second->getEmployeePassword() == password) { - if (password == Config::DEFAULT_PASSWORD) + if (password == Config::Authentication::DEFAULT_PASSWORD) { loginStatus = Enums::LoginStatus::FIRST_LOGIN; } diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h index 2f812d6..f838311 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h @@ -1,18 +1,21 @@ #pragma once #include #include +#include #include #include #include "DataStore.h" #include "Enums.h" +using AuthenticationDTO = std::tuple; + class AuthenticationManagementService { private: DataStore& m_dataStore; public: AuthenticationManagementService() : m_dataStore(DataStore::getInstance()) {}; - std::tuple login(const std::string& username, const std::string& password); + AuthenticationDTO login(const std::string& username, const std::string& password); void logout(); void changePassword(const std::string&); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp index f6c4306..9d14b40 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp @@ -33,7 +33,7 @@ bool util::isEmailValid(const std::string& email) { bool util::isPasswordValid(const std::string& password) { - if (password == Config::DEFAULT_PASSWORD) + if (password == Config::Authentication::DEFAULT_PASSWORD) { return false; } diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp index 3429c22..adea852 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -65,7 +65,7 @@ void UserInterface::login() util::read(email); std::cout << "Enter password: "; util::read(password); - AuthenticationContext authenticationContext = m_controller->login(email, password); + AuthenticationDTO authenticationContext = m_controller->login(email, password); Enums::LoginStatus loginStatus = std::get<0>(authenticationContext); Enums::EmployeeType employeeType = std::get<1>(authenticationContext); Enums::EmployeeDesignation employeeDesignation = std::get<2>(authenticationContext); From def0f4022b1a00f690a3de62920c5667a3764243 Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Wed, 8 Apr 2026 17:21:41 +0530 Subject: [PATCH 11/19] Add file and function header documentation across Services and Main files --- Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp | 8 + .../services/ApplicationConfig.cpp | 7 + .../services/ApplicationConfig.h | 7 + .../services/AttendanceManagementService.cpp | 7 + .../services/AttendanceManagementService.h | 7 + .../AuthenticationManagementService.cpp | 138 +++++++++++------- .../AuthenticationManagementService.h | 8 +- .../services/BookingManagementService.cpp | 7 + .../services/BookingManagementService.h | 7 + .../services/EmployeeManagememtService.cpp | 7 + .../services/EmployeeManagememtService.h | 7 + .../services/LeaveManagementService.cpp | 7 + .../services/LeaveManagementService.h | 7 + .../Trenser.Zenvy/services/LogService.cpp | 7 + .../Trenser.Zenvy/services/LogService.h | 7 + .../NotificationManagementService.cpp | 7 + .../services/NotificationManagementService.h | 8 +- .../services/PayslipManagementService.cpp | 7 + .../services/PayslipManagementService.h | 7 + .../TalentAcquisitionManagementService.cpp | 7 + .../TalentAcquisitionManagementService.h | 8 +- .../services/TeamManagementService.cpp | 7 + .../services/TeamManagementService.h | 7 + .../services/TicketManagementService.cpp | 7 + .../services/TicketManagementService.h | 7 + 25 files changed, 257 insertions(+), 53 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp index 4413069..64b1e4b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.cpp @@ -1,4 +1,12 @@ +/* + * File: Trenser.Zenvy.cpp + * Description: Zenvy Main + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "UserInterface.h" + int main() { UserInterface userInterFace; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp index cb68b98..e5a0d0e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.cpp @@ -1 +1,8 @@ +/* + * File: ApplicationConfig.cpp + * Description: Global Application Config + * Author: Trenser + * Created: 06-Apr-2026 + */ + #include "ApplicationConfig.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h index 8e4705e..bbeadd1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h @@ -1,3 +1,10 @@ +/* + * File: ApplicationConfig.h + * Description: Global Application Config + * Author: Trenser + * Created: 06-Apr-2026 + */ + #pragma once namespace Config diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.cpp index fb3ab62..2ab575a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.cpp @@ -1 +1,8 @@ +/* + * File: AttendanceManagementService.cpp + * Description: Handles Attendance related operations + * Author: Trenser + * Created: 30-Apr-2026 + */ + #include "AttendanceManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.h index 64374bf..5f12270 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AttendanceManagementService.h @@ -1,3 +1,10 @@ +/* + * File: AttendanceManagementService.h + * Description: Handles Attendance related operations + * Author: Trenser + * Created: 30-Apr-2026 + */ + #pragma once class AttendanceManagementService { diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 9d7fc4f..642c868 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -1,65 +1,103 @@ +/* + * File: AuthenticationManagementService.cpp + * Description: Handles authentication related operations + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include #include "AuthenticationManagementService.h" #include "ApplicationConfig.h" +/* + * Function: login + * Description: Authenticates a user using email and password, determines login status, + * employee type, and designation, and sets the authenticated employee + * in the data store. + * Parameters: + * email - employee email address + * password - employee password + * Returns: + * AuthenticationDTO containing login status, employee type, and employee designation + */ AuthenticationDTO AuthenticationManagementService::login(const std::string& email, const std::string& password) { - employeeMap& employees = m_dataStore.getEmployees(); - Enums::LoginStatus loginStatus = Enums::LoginStatus::USER_NOT_FOUND; - Enums::EmployeeType employeeType = Enums::EmployeeType::INVALID; - Enums::EmployeeDesignation employeeDesignation = Enums::EmployeeDesignation::INVALID; - for (const auto& employee : employees) - { - if (employee.second->getEmployeeEmail() == email) - { - if (employee.second->getEmployeePassword() == password) - { - if (password == Config::Authentication::DEFAULT_PASSWORD) - { - loginStatus = Enums::LoginStatus::FIRST_LOGIN; - } - else - { - loginStatus = Enums::LoginStatus::SUCCESS; - } - employeeType = employee.second->getEmployeeType(); - if (employeeType == Enums::EmployeeType::GENERAL) - { - std::shared_ptr generalEmployee = std::dynamic_pointer_cast(employee.second); - if (generalEmployee) - { - employeeDesignation = generalEmployee->getDesignation(); - } - else - { - throw std::runtime_error("Invalid Employee Type"); - } - } - m_dataStore.setAuthenticatedEmployee(employee.second); - } - else - { - loginStatus = Enums::LoginStatus::INVALID_PASSWORD; - } - break; - } - } - return std::make_tuple(loginStatus, employeeType, employeeDesignation); + employeeMap& employees = m_dataStore.getEmployees(); + Enums::LoginStatus loginStatus = Enums::LoginStatus::USER_NOT_FOUND; + Enums::EmployeeType employeeType = Enums::EmployeeType::INVALID; + Enums::EmployeeDesignation employeeDesignation = Enums::EmployeeDesignation::INVALID; + for (const auto& employee : employees) + { + if (employee.second->getEmployeeEmail() == email) + { + if (employee.second->getEmployeePassword() == password) + { + if (password == Config::Authentication::DEFAULT_PASSWORD) + { + loginStatus = Enums::LoginStatus::FIRST_LOGIN; + } + else + { + loginStatus = Enums::LoginStatus::SUCCESS; + } + employeeType = employee.second->getEmployeeType(); + if (employeeType == Enums::EmployeeType::GENERAL) + { + std::shared_ptr generalEmployee = std::dynamic_pointer_cast(employee.second); + if (generalEmployee) + { + employeeDesignation = generalEmployee->getDesignation(); + } + else + { + throw std::runtime_error("Invalid Employee Type"); + } + } + m_dataStore.setAuthenticatedEmployee(employee.second); + } + else + { + loginStatus = Enums::LoginStatus::INVALID_PASSWORD; + } + break; + } + } + return std::make_tuple(loginStatus, employeeType, employeeDesignation); } +/* + * Function: changePassword + * Description: Updates the password of the currently authenticated user. + * Parameters: + * password - new password to be set + * Returns: + * None + * Throws: + * runtime_error if no authenticated user is found + */ void AuthenticationManagementService::changePassword(const std::string& password) { - std::shared_ptr authenticatedUser = m_dataStore.getAuthenticatedUser(); - if (authenticatedUser) - { - authenticatedUser->setEmployeePassword(password); - } - else - { - throw std::runtime_error("User not found"); - } + std::shared_ptr authenticatedUser = m_dataStore.getAuthenticatedUser(); + if (authenticatedUser) + { + authenticatedUser->setEmployeePassword(password); + } + else + { + throw std::runtime_error("User not found"); + } } +/* + * Function: logout + * Description: Logs out the currently authenticated user by clearing authentication data. + * Parameters: + * None + * Returns: + * None + * Throws: + * runtime_error if no user is currently logged in + */ void AuthenticationManagementService::logout() { if (m_dataStore.getAuthenticatedUser()) { m_dataStore.getAuthenticatedUser() = nullptr; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h index f838311..392065b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.h @@ -1,3 +1,10 @@ +/* + * File: AuthenticationManagementService.h + * Description: Handles authentication related operations + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once #include #include @@ -19,4 +26,3 @@ public: void logout(); void changePassword(const std::string&); }; - diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.cpp index db5a4c9..cb032c3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.cpp @@ -1 +1,8 @@ +/* + * File: BookingManagementService.cpp + * Description: Handle operations related to booking meetings + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "BookingManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.h index 75d7d57..7f343a4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/BookingManagementService.h @@ -1,3 +1,10 @@ +/* + * File: BookingManagementService.h + * Description: Handle operations related to booking meetings + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class BookingManagementService { diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp index bf8ad9d..5fdebfe 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp @@ -1 +1,8 @@ +/* + * File: EmployeeManagementService.cpp + * Description: Handle operations related to employees + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "EmployeeManagememtService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h index 05e6ca7..3bb2294 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h @@ -1,3 +1,10 @@ +/* + * File: EmployeeManagementService.h + * Description: Handle operations related to employees + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class EmployeeManagememtService { diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.cpp index a40f268..733f9eb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.cpp @@ -1 +1,8 @@ +/* + * File: LeaveManagementService.cpp + * Description: Handle operations related to leaves + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "LeaveManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.h index 6447f13..1010ec4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LeaveManagementService.h @@ -1,3 +1,10 @@ +/* + * File: LeaveManagementService.h + * Description: Handle operations related to leaves + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class LeaveManagementService { diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp index 1742a3d..3e77020 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp @@ -1,3 +1,10 @@ +/* + * File: Log.cpp + * Description: Handle operations related to logging + * Author: Trenser + * Created: 01-Apr-2026 + */ + #include "LogService.h" #include "Log.h" #include "Factory.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h index 6918b25..c1cf644 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.h @@ -1,3 +1,10 @@ +/* + * File: Log.h + * Description: Handle operations related to logging + * Author: Trenser + * Created: 01-Apr-2026 + */ + #pragma once #include "Log.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.cpp index cc23059..7eaa377 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.cpp @@ -1 +1,8 @@ +/* + * File: NotificationManagementService.cpp + * Description: Handle operations related to notifications + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "NotificationManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.h index f976574..6b4aba1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/NotificationManagementService.h @@ -1,5 +1,11 @@ +/* + * File: NotificationManagementService.h + * Description: Handle operations related to notifications + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class NotificationManagementService { }; - diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp index 154cf1f..57ca929 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp @@ -1 +1,8 @@ +/* + * File: PayslipManagementService.cpp + * Description: Handle operations related to employee payslips + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "PayslipManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h index 04c9805..7f43806 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h @@ -1,3 +1,10 @@ +/* + * File: PayslipManagementService.h + * Description: Handle operations related to employee payslips + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class PayslipManagementService { diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.cpp index 5fd0d2d..9e0ef96 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.cpp @@ -1 +1,8 @@ +/* + * File: TalentAcquisitionManagementService.cpp + * Description: Handle operations related to Talent Acquisition + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "TalentAcquisitionManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.h index 855dda7..ed0dd32 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/TalentAcquisitionManagementService.h @@ -1,5 +1,11 @@ +/* + * File: TalentAcquisitionManagementService.h + * Description: Handle operations related to Talent Acquisition + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class TalentAcquisitionManagementService { }; - diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.cpp index f78fe48..8b13b81 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.cpp @@ -1 +1,8 @@ +/* + * File: TeamManagementService.cpp + * Description: Handle operations related to Team Management + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "TeamManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.h index 918229d..21275da 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/TeamManagementService.h @@ -1,3 +1,10 @@ +/* + * File: TeamManagementService.h + * Description: Handle operations related to Team Management + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class TeamManagementService { diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.cpp index 4649010..bc995f9 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.cpp @@ -1 +1,8 @@ +/* + * File: TicketManagementService.h + * Description: Handle operations related to Ticket Management + * Author: Trenser + * Created: 30-Mar-2026 + */ + #include "TicketManagementService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.h index 1db345b..8a38d98 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/TicketManagementService.h @@ -1,3 +1,10 @@ +/* + * File: TicketManagementService.h + * Description: Handle operations related to Ticket Management + * Author: Trenser + * Created: 30-Mar-2026 + */ + #pragma once class TicketManagementService { From 9a791eadcd26bb237a423dfc70042dd5206065a0 Mon Sep 17 00:00:00 2001 From: Tinu Johnson Date: Wed, 8 Apr 2026 17:23:47 +0530 Subject: [PATCH 12/19] Add file and function header documentation across Model files --- Trenser.Zenvy/Trenser.Zenvy/models/Admin.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Admin.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Booking.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Employee.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/HRManager.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.cpp | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h | 6 ++++++ 20 files changed, 121 insertions(+) diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.cpp index 0cc2b4c..f63c352 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.cpp @@ -1 +1,7 @@ +/* + * File: Admin.cpp + * Description: Admin model class + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "Admin.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h index 97f4f4e..f507ccc 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h @@ -1,3 +1,10 @@ +/* + * File: Admin.h + * Description: Admin model class + * Author: Trenser + * Created: 31-Mar-2026 + */ + #pragma once #include "Employee.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp index 01cec1a..67e0c4e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp @@ -1,3 +1,9 @@ +/* + * File: Announcement.cpp + * Description: The Announcement class that stores an announcement’s ID, timestamp, and message with getter and setter functions for controlled access. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "Announcement.h" const std::string& Announcement::getAnnouncementId() const diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp index 7565537..bcbf622 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp @@ -1,3 +1,9 @@ +/* + * File: Attendance.cpp + * Description: The Attendance class manages attendance records by storing login and logout times. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "Attendance.h" const std::string& Attendance::getAttendanceId() const diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h index 3b10f5c..89f4ed3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h @@ -1,3 +1,9 @@ +/* + * File: Attendance.h + * Description: The Attendance class represents an attendance record by storing an ID, login and logout timestamps. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include #include "Timestamp.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp index a40ed2b..6689689 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp @@ -1,3 +1,9 @@ +/* + * File: Booking.cpp + * Description: The Booking class stores booking details and calculates the duration between start and end times. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "Booking.h" const std::string& Booking::getBookingId() const diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h index 7e99b4a..f88c084 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h @@ -1,3 +1,9 @@ +/* + * File: Booking.h + * Description: The Booking class represents a time?based booking with employee and team details and supports duration calculation. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp index e4831a4..8394260 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp @@ -1,3 +1,9 @@ +/* + * File: Candidate.cpp + * Description: The Candidate class manages candidate details and status using getter and setter methods. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "Candidate.h" const std::string& Candidate::getCandidateId() const diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h index 257c54d..aefb893 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h @@ -1,3 +1,9 @@ +/* + * File: Candidate.h + * Description: The Candidate class stores and manages a candidate’s information. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include #include "Enums.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp index 4bd8c3b..68c1963 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp @@ -1,3 +1,9 @@ +/* + * File: Employee.cpp + * Description: The Employee class stores and manages employee details along with related work records. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "Employee.h" const std::string& Employee::getEmployeeId() const diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h index 3509db1..400eebd 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h @@ -1,3 +1,9 @@ +/* + * File: Employee.h + * Description: The Employee class manages employee information and associated work records such as payroll, attendance, leaves, and payslips. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp index 63a403f..a5e7b41 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.cpp @@ -1 +1,7 @@ +/* + * File: Faq.h + * Description: Faq model class. + * Author: Trenser + * Created: 02-Apr-2026 + */ #include "Faq.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h index b90edff..3788612 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FAQ.h @@ -1,3 +1,9 @@ +/* + * File: Faq.h + * Description: Faq model class. + * Author: Trenser + * Created: 02-Apr-2026 + */ #pragma once class Faq diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.cpp index ec96663..93d3b6c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.cpp @@ -1 +1,7 @@ +/* + * File: FinanceExecutive.h + * Description: FinanceExecutive model class. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "FinanceExecutive.h" \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h index 8aafc69..2f529bb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h @@ -1,3 +1,9 @@ +/* + * File: FinanceExecutive.h + * Description: FinanceExecutive model class. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include "Employee.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h index 6307e28..2c40288 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h @@ -1,3 +1,9 @@ +/* + * File: GeneralEmployee.h + * Description: The GeneralEmployee class represents a general employee with a specific designation. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include "Employee.h" #include "Enums.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.cpp index 4b7ee33..8f9615f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.cpp @@ -1 +1,7 @@ +/* + * File: HRManager.cpp + * Description: HRManager model class. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "HRManager.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h b/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h index 5e50a74..fda356c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h @@ -1,3 +1,9 @@ +/* + * File: HRManager.h + * Description: HRManager model class. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include "Employee.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.cpp index 700fcd9..7beaf7d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.cpp @@ -1 +1,7 @@ +/* + * File: ITExecutive.cpp + * Description: ITExecutive model class. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "ITExecutive.h" \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h index 2a61ef8..b839ae4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h @@ -1,3 +1,9 @@ +/* + * File: ITExecutive.h + * Description: ITExecutive model class. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include "Employee.h" From 21549b4c242bb6d66ee49fb246c1cbbd04ab5705 Mon Sep 17 00:00:00 2001 From: Princy Jerin Date: Wed, 8 Apr 2026 17:25:58 +0530 Subject: [PATCH 13/19] Add file and function header documentation across Model files --- Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Leave.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Log.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Notification.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Room.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Team.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h | 7 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp | 8 ++++++++ Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h | 7 +++++++ 22 files changed, 163 insertions(+) diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp index ba1267c..0d4b30e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp @@ -1,5 +1,13 @@ +/* +File: JobListing.cpp +* Description : Represents a job opening along with its details and applied candidates. +* Author : Trenser +* Created : 01 - Apr - 2026 +*/ + #include "JobListing.h" +//Getters and setters const std::string& JobListing::getJobId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h index 3622743..10b6c57 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h @@ -1,3 +1,10 @@ +/* +File: JobListing.h +* Description : Represents a job opening along with its details and applied candidates. +* Author : Trenser +* Created : 01 - Apr - 2026 +*/ + #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp index 1755bc7..4ac215b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp @@ -1,5 +1,13 @@ +/* +File: Leave.cpp +* Description : Stores information related to an employee’s leave application. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Leave.h" +//Getters and setters const std::string& Leave::getLeaveId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h index 0133f4a..a7588e2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h @@ -1,3 +1,10 @@ +/* +File: Leave.h +* Description : Stores information related to an employee’s leave application. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include #include "Enums.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp index 890cfc5..a022679 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp @@ -1,5 +1,13 @@ +/* +File: Log.cpp +* Description : Represents a log entry containing a timestamp and an associated message. +* Author : Trenser +* Created : 01 - Apr - 2026 +*/ + #include "Log.h" +//Getters and setters const util::Timestamp& Log::getTimestamp() const { return m_timestamp; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Log.h b/Trenser.Zenvy/Trenser.Zenvy/models/Log.h index f2350b2..416d7fb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Log.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Log.h @@ -1,3 +1,10 @@ +/* +File: Log.h +* Description : Represents a log entry containing a timestamp and an associated message. +* Author : Trenser +* Created : 01 - Apr - 2026 +*/ + #pragma once #include #include "Timestamp.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp index f91530a..2bc0c0d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp @@ -1,5 +1,13 @@ +/* +File: Notification.cpp +* Description : Represents an employee notification with message and status details. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Notification.h" +//Getters and setters const std::string& Notification::getNotificationId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h index 0cd723c..cf76caf 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h @@ -1,3 +1,10 @@ +/* +File: Notification.h +* Description : Represents an employee notification with message and status details. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include #include "Enums.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp index eae13a1..b76ab8d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp @@ -1,5 +1,13 @@ +/* +File: Payroll.cpp +* Description : Stores payroll and salary breakdown details for an employee. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Payroll.h" +//Getters and setters const std::string& Payroll::getPayrollId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h index 498eaf8..3ebe780 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h @@ -1,3 +1,10 @@ +/* +File: Payroll.h +* Description : Stores payroll and salary breakdown details for an employee. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp index 3daf4b9..70e42e7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp @@ -1,5 +1,13 @@ +/* +File: Payslip.cpp +* Description : Models a payslip entity that stores salary information. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Payslip.h" +//Getters and setters const std::string& Payslip::getPayslipId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h index 3f48dd2..06d0023 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h @@ -1,3 +1,10 @@ +/* +File: Payslip.h +* Description : Models a payslip entity that stores salary information. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp index 9fcd521..cb5abbb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp @@ -1,5 +1,13 @@ +/* +File: Room.cpp +* Description : Models a room entity that maintains room details and manages its bookings. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Room.h" +//Getters and setters const std::string& Room::getRoomId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h index 48a4ba1..595ffaa 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h @@ -1,3 +1,10 @@ +/* +File: Room.h +* Description : Models a room entity that maintains room details and manages its bookings. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp index de7213f..112c3d0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp @@ -1 +1,8 @@ +/* +File: TalentExecutive.cpp +* Description : Represents information related to a talent executive in the system. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "TalentExecutive.h" \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h index fcbfbcd..a5bfa6e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h @@ -1,3 +1,10 @@ +/* +File: TalentExecutive.h +* Description : Represents information related to a talent executive in the system. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include "Employee.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp index a6848b3..4a26647 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp @@ -1,5 +1,13 @@ +/* +File: Team.cpp +* Description : Models a team entity that maintains team identity, leadership, employee list, and size limitations. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Team.h" +//Getters and setters const std::string& Team::getTeamId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h index edb8f44..e353aa3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h @@ -1,3 +1,10 @@ +/* +File: Team.h +* Description : Models a team entity that maintains team identity, leadership, employee list, and size limitations. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp index df14a3f..aac8db4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp @@ -1 +1,8 @@ +/* +File: TeamExecutive.cpp +* Description : Represents information related to a team executive within the system. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "TeamExecutive.h" \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h index d7db4e9..1bd7def 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h @@ -1,3 +1,10 @@ +/* +File: TeamExecutive.h +* Description : Represents information related to a team executive within the system. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include "Employee.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp index 328421c..af67e08 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp @@ -1,5 +1,13 @@ +/* +File: Ticket.cpp +* Description : Represents a support ticket with its associated details and status. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #include "Ticket.h" +//Getters and setters const std::string& Ticket::getTicketId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h index 7d54a6f..88f8ed8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h @@ -1,3 +1,10 @@ +/* +File: Ticket.h +* Description : Represents a support ticket with its associated details and status. +* Author : Trenser +* Created : 31 - Mar - 2026 +*/ + #pragma once #include #include "Enums.h" From 2757e5ca98d582d8ddb0c067320cd76d83f3f20c Mon Sep 17 00:00:00 2001 From: Ajmal Jalaludeen Date: Wed, 8 Apr 2026 17:27:22 +0530 Subject: [PATCH 14/19] Add file and function header documentation across Controller, DataStore and Utility files --- .../controllers/ZenvyController.cpp | 39 +++++- .../controllers/ZenvyController.h | 7 + .../Trenser.Zenvy/datastores/DataStore.cpp | 61 ++++++++ .../Trenser.Zenvy/datastores/DataStore.h | 7 + .../Trenser.Zenvy/factories/Factory.h | 18 +++ Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h | 7 + .../Trenser.Zenvy/utilities/InputHelper.h | 33 ++++- .../Trenser.Zenvy/utilities/OutputHelper.cpp | 15 ++ .../Trenser.Zenvy/utilities/OutputHelper.h | 7 + .../Trenser.Zenvy/utilities/Timestamp.cpp | 131 ++++++++++++++++++ .../Trenser.Zenvy/utilities/Timestamp.h | 9 ++ .../Trenser.Zenvy/utilities/Validator.cpp | 38 +++++ .../Trenser.Zenvy/utilities/Validator.h | 7 + 13 files changed, 377 insertions(+), 2 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 3d97204..162bdd2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -1,16 +1,53 @@ +/* + * File: ZenvyController.cpp + * Description : Controls data flow between UI and Service Layers. + * Author: Trenser + * Created : 01-04-2026 + */ + #include "ZenvyController.h" -//Authentication +/* + * Function: login + * Description: authenticates the employee based on email and password + * Parameters: + * email - email of the employee + * password - password of the employee + * Returns: + * Tuple - login status, employee type, employee designation + * login status - success or failed + * employee type - type of the employee logged in + * employee designation - designation if employee type is GENERAL. + */ + AuthenticationDTO ZenvyController::login(const std::string& email, const std::string& password) { return m_authenticationManagementService->login(email, password); } +/* + * Function: changePassword + * Description: updates the password of the currently authenticated employee. + * Parameters: + * password - the new password to be set for the employee + * Returns: + * void - no return value + */ + void ZenvyController::logout() { m_authenticationManagementService->logout(); } +/* + * Function: changePassword + * Description: updates the password of the currently authenticated employee. + * Parameters: + * password - the new password to be set for the employee + * Returns: + * void - no return value + */ + void ZenvyController::changePassword(const std::string& password) { m_authenticationManagementService->changePassword(password); diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 1a5c77b..364ec49 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -1,3 +1,10 @@ +/* + * File: ZenvyController.h + * Description : Controls data flow between UI and Service Layers. + * Author: Trenser + * Created : 01-04-2026 + */ + #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index 16ddca1..64694df 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -1,31 +1,92 @@ +/* + * File: DataStore.cpp + * Description: Central Storage for all the System Data. + * Author: Trenser + * Created: 01-04-2026 + */ + #include "DataStore.h" +/* + * Function: getInstance + * Description: provides a singleton instance of the DataStore. + * Parameters: + * None + * Returns: + * DataStore& - reference to the single DataStore object. + */ + DataStore& DataStore::getInstance() { static DataStore dataStore; return dataStore; } +/* + * Function: getLogs + * Description: retrieves the log map containing system logs. + * Parameters: + * None + * Returns: + * logMap& - reference to the log map. + */ + logMap& DataStore::getLogs() { return m_logs; } +/* + * Function: getAuthenticatedEmployee + * Description: returns the currently authenticated employee. + * Parameters: + * None + * Returns: + * std::shared_ptr& - reference to the authenticated employee object. + */ + std::shared_ptr& DataStore::getAuthenticatedEmployee() { return m_authenticatedEmployee; } +/* + * Function: setAuthenticatedEmployee + * Description: sets the currently authenticated employee. + * Parameters: + * authenticatedEmployee - shared pointer to the employee object to be set as authenticated. + * Returns: + * void - no return value. + */ + void DataStore::setAuthenticatedEmployee(std::shared_ptr authenticatedEmployee) { m_authenticatedEmployee = authenticatedEmployee; } +/* + * Function: getEmployees + * Description: retrieves the employee map containing all employees. + * Parameters: + * None + * Returns: + * employeeMap& - reference to the employee map. + */ + employeeMap& DataStore::getEmployees() { return m_employees; } +/* + * Function: getAuthenticatedUser + * Description: alias for getAuthenticatedEmployee, returns the currently authenticated employee. + * Parameters: + * None + * Returns: + * std::shared_ptr& - reference to the authenticated employee object. + */ + std::shared_ptr& DataStore::getAuthenticatedUser() { return m_authenticatedEmployee; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 5ecfb70..603d49c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -1,3 +1,10 @@ +/* + * File: DataStore.h + * Description: Central Storage for all the System Data. + * Author: Trenser + * Created: 01-04-2026 + */ + #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h index 0c54b81..f65c267 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h +++ b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h @@ -1,3 +1,10 @@ +/* + * File: Factory.h + * Description: Provides a generic factory utility to create shared_ptr instances of objects. + * Author: Ajmal J S + * Created: 01-04-2026 + */ + #pragma once #include #include @@ -5,6 +12,17 @@ class Factory { public: + + /* + * Function: getObject + * Description: Creates and returns a shared_ptr to an object of type T. + * Parameters: + * T - the type of object to be created + * Args - constructor arguments forwarded to T's constructor + * Returns: + * std::shared_ptr - a shared pointer managing the newly created object + */ + template static std::shared_ptr getObject(Args&&... args) { diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h index ace8792..0d5111b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h @@ -1,3 +1,10 @@ +/* + * File: Enums.h + * Description: Defines strongly typed enumerations for statuses, types, and designations used across the HRMS system. + * Author: Smitha + * Created: 01-04-2026 + */ + #pragma once namespace Enums { diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h index 559acda..5de0e35 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/InputHelper.h @@ -1,5 +1,11 @@ -#pragma once +/* + * File: InputHelper.h + * Description: Handles input validation and error handling + * Author: Smitha + * Created: 08-Apr-2026 + */ +#pragma once #include #include #include @@ -7,6 +13,15 @@ namespace util { + /* + * Function: read + * Description: Reads input from console into a variable of type T. + * Parameters: + * value - reference to a variable of type T where the input will be stored + * Returns: + * void - throws runtime_error if input is invalid + */ + template inline void read(T& value) { @@ -18,11 +33,27 @@ namespace util } } + /* + * Function: read + * Description: Reads a line of text input from console into a string. + * Parameters: + * value - reference to a string where the input will be stored + * Returns: + * void - no return value + */ + inline void read(std::string& value) { std::getline(std::cin >> std::ws, value); } + /* + * Function: pressEnter + * Description: Pauses execution until the user presses Enter. + * Parameters: None + * Returns: void - no return value + */ + inline void pressEnter() { system("pause"); diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.cpp index a8e0f7c..ce37ac4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.cpp @@ -1,5 +1,20 @@ +/* + * File: OutputHelper.cpp + * Description: Provides functions to help with console output. + * Author: Trenser + * Created: 01-04-2026 +*/ + #include "outputHelper.h" +/* +* Function: clear +* Description: Clears the console screen output. +* Parameters: None +* Returns: +* void - no return value +*/ + void util::clear() { std::cout << "\x1B[2J\x1B[H" << std::flush; diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.h index a40dbaf..08a5b5f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/OutputHelper.h @@ -1,3 +1,10 @@ +/* + * File: OutputHelper.h + * Description: Provides functions to help with console output. + * Author: Trenser + * Created: 01-04-2026 +*/ + #pragma once #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.cpp index 42d4758..3a51132 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.cpp @@ -1,18 +1,56 @@ +/* + * File: Timestamp.cpp + * Description: Provides a utility class for representing and manipulating time values. + * Supports conversion between string and time formats, duration calculations + * (hours, minutes, seconds), date extraction, and comparison operators. + * Author: Trenser + * Created: 01-Apr-2026 + */ + #include #include #include #include "Timestamp.h" +/* +* Function: Timestamp +* Description: Default constructor that initializes the timestamp to the current system time. +* Parameters: +* None +* Returns: +* Timestamp object +*/ + util::Timestamp::Timestamp() { m_time = std::time(nullptr); } +/* +* Function: Timestamp (overloaded) +* Description: Constructor that initializes the timestamp with a given time value. +* Parameters: +* timeValue - time_t value representing a specific time +* Returns: +* Timestamp object +*/ + util::Timestamp::Timestamp(std::time_t timeValue) { m_time = timeValue; } +/* +* Function: fromString +* Description: Creates a Timestamp object from a formatted string. +* Parameters: +* timeString - string in the format "YYYY-MM-DD HH:MM:SS" +* Returns: +* Timestamp object representing the parsed time +* Throws: +* runtime_error if the string format is invalid +*/ + util::Timestamp util::Timestamp::fromString(const std::string& timeString) { std::tm timeStruct = {}; @@ -26,6 +64,15 @@ util::Timestamp util::Timestamp::fromString(const std::string& timeString) return Timestamp(parsedTimestamp); } +/* +* Function: toString +* Description: Converts the Timestamp object into a formatted string. +* Parameters: +* None +* Returns: +* string - formatted as "YYYY-MM-DD HH:MM:SS" +*/ + std::string util::Timestamp::toString() const { std::tm timeStruct = {}; @@ -35,11 +82,30 @@ std::string util::Timestamp::toString() const return outputStream.str(); } +/* +* Function: getDurationInSeconds +* Description: Calculates the duration between two timestamps in seconds. +* Parameters: +* startTimestamp - starting time +* endTimestamp - ending time +* Returns: +* double - duration in seconds +*/ + double util::Timestamp::getDurationInSeconds(const Timestamp& startTimestamp, const Timestamp& endTimestamp) { return std::difftime(endTimestamp.m_time, startTimestamp.m_time); } +/* +* Function: getDateAsInt +* Description: Returns the date portion of the timestamp as an integer in YYYYMMDD format. +* Parameters: +* None +* Returns: +* int - date as YYYYMMDD +*/ + int util::Timestamp::getDateAsInt() const { std::tm timeStruct{}; @@ -50,36 +116,101 @@ int util::Timestamp::getDateAsInt() const return year * 10000 + month * 100 + day; } +/* +* Function: getDurationInMinutes +* Description: Calculates the duration between two timestamps in minutes. +* Parameters: +* startTimestamp - starting time +* endTimestamp - ending time +* Returns: +* double - duration in minutes +*/ + double util::Timestamp::getDurationInMinutes(const Timestamp& startTimestamp, const Timestamp& endTimestamp) { return getDurationInSeconds(startTimestamp, endTimestamp) / 60.0; } +/* +* Function: getDurationInHours +* Description: Calculates the duration between two timestamps in hours. +* Parameters: +* startTimestamp - starting time +* endTimestamp - ending time +* Returns: +* double - duration in hours +*/ + double util::Timestamp::getDurationInHours(const Timestamp& startTimestamp, const Timestamp& endTimestamp) { return getDurationInSeconds(startTimestamp, endTimestamp) / 3600.0; } +/* +* Function: operator< +* Description: Compares two timestamps to check if one is earlier than the other. +* Parameters: +* other - Timestamp to compare against +* Returns: +* bool - true if current timestamp is earlier +*/ + bool util::Timestamp::operator<(const Timestamp& other) const { return m_time < other.m_time; } +/* +* Function: operator> +* Description: Compares two timestamps to check if one is later than the other. +* Parameters: +* other - Timestamp to compare against +* Returns: +* bool - true if current timestamp is later +*/ + bool util::Timestamp::operator>(const Timestamp& other) const { return m_time > other.m_time; } +/* +* Function: operator<= +* Description: Compares two timestamps to check if one is earlier or equal. +* Parameters: +* other - Timestamp to compare against +* Returns: +* bool - true if current timestamp is earlier or equal +*/ + bool util::Timestamp::operator<=(const Timestamp& other) const { return m_time <= other.m_time; } +/* +* Function: operator>= +* Description: Compares two timestamps to check if one is later or equal. +* Parameters: +* other - Timestamp to compare against +* Returns: +* bool - true if current timestamp is later or equal +*/ + bool util::Timestamp::operator>=(const Timestamp& other) const { return m_time >= other.m_time; } +/* +* Function: operator== +* Description: Compares two timestamps for equality. +* Parameters: +* other - Timestamp to compare against +* Returns: +* bool - true if both timestamps are equal +*/ + bool util::Timestamp::operator==(const Timestamp& other) const { return m_time == other.m_time; diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.h index abbc58f..ace001a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Timestamp.h @@ -1,3 +1,12 @@ +/* + * File: Timestamp.h + * Description: Provides a utility class for representing and manipulating time values. + * Supports conversion between string and time formats, duration calculations + * (hours, minutes, seconds), date extraction, and comparison operators. + * Author: Trenser + * Created: 01-Apr-2026 + */ + #pragma once #include #include diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp index 9d14b40..8510bdf 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp @@ -1,8 +1,24 @@ +/* + * File: Validator.cpp + * Description: Validates inputs like phone number, email, password + * Author: Trenser + * Created: 01-Apr-2026 + */ + #include #include #include "Validator.h" #include "ApplicationConfig.h" + /* + * Function: isPhoneNumberValid + * Description: Validates whether the given string is a valid phone number. + * Parameters: + * phoneNumber - string containing the phone number to validate + * Returns: + * bool - true if the phone number is valid (10 digits, all numeric), false otherwise + */ + bool util::isPhoneNumberValid(const std::string& phoneNumber) { if (phoneNumber.size() != 10) { @@ -16,6 +32,15 @@ bool util::isPhoneNumberValid(const std::string& phoneNumber) { ); } +/* + * Function: isEmailValid + * Description: Validates whether the given string is a properly formatted email address. + * Parameters: + * email - string containing the email address to validate + * Returns: + * bool - true if the email contains exactly one '@' character and is not at the start or end, false otherwise + */ + bool util::isEmailValid(const std::string& email) { size_t index = email.find('@'); if (index == std::string::npos) return false; @@ -30,6 +55,19 @@ bool util::isEmailValid(const std::string& email) { return true; } +/* + * Function: isPasswordValid + * Description: Validates whether the given string meets password requirements. + * Parameters: + * password - string containing the password to validate + * Returns: + * bool - true if the password is valid, false otherwise + * Notes: + * - Must not equal the default password + * - Must be at least 8 characters long + * - Must contain at least one uppercase letter, one lowercase letter, one digit, and one special character + * - Must not contain whitespace + */ bool util::isPasswordValid(const std::string& password) { diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h index fbdf962..3710604 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h @@ -1,3 +1,10 @@ +/* + * File: Validator.h + * Description: Validates inputs like phone number, email, password + * Author: Trenser + * Created: 01-Apr-2026 + */ + #pragma once #include #include From 6c05d2b35271c12c7015122f67674168ac172c33 Mon Sep 17 00:00:00 2001 From: Jissin Sam Mathew Date: Wed, 8 Apr 2026 17:29:01 +0530 Subject: [PATCH 15/19] Add files and function header documentation across Views --- .../Trenser.Zenvy/views/AdminMenu.cpp | 25 +++++++++++++++ Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h | 7 ++++ .../Trenser.Zenvy/views/EmployeeMenu.cpp | 24 ++++++++++++++ .../Trenser.Zenvy/views/EmployeeMenu.h | 7 ++++ .../views/FinanceExecutiveMenu.cpp | 24 ++++++++++++++ .../views/FinanceExecutiveMenu.h | 7 ++++ .../Trenser.Zenvy/views/HRManagerMenu.cpp | 24 ++++++++++++++ .../Trenser.Zenvy/views/HRManagerMenu.h | 7 ++++ .../Trenser.Zenvy/views/ITExecutiveMenu.cpp | 24 ++++++++++++++ .../Trenser.Zenvy/views/ITExecutiveMenu.h | 7 ++++ .../views/TalentExecutiveMenu.cpp | 24 ++++++++++++++ .../Trenser.Zenvy/views/TalentExecutiveMenu.h | 7 ++++ .../Trenser.Zenvy/views/TeamExecutiveMenu.cpp | 24 ++++++++++++++ .../Trenser.Zenvy/views/TeamExecutiveMenu.h | 7 ++++ .../Trenser.Zenvy/views/TeamLeadMenu.cpp | 24 ++++++++++++++ .../Trenser.Zenvy/views/TeamLeadMenu.h | 7 ++++ .../Trenser.Zenvy/views/UserInterface.cpp | 32 +++++++++++++++++++ .../Trenser.Zenvy/views/UserInterface.h | 7 ++++ 18 files changed, 288 insertions(+) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp index ecad349..91a2445 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp @@ -1,8 +1,24 @@ +/* + * File: AdminMenu.cpp + * Description: Handles user-related operations such as creation, authentication, and validation. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "AdminMenu.h" #include"InputHelper.h" #include"OutputHelper.h" + /* + * Function: AdminMenu::run + * Description: Starts and manages the administrator menu loop. Continuously displays + * options to the administrator until logout is selected or an exception occurs. + * Parameters: + * None + * Returns: + * None + */ void AdminMenu::run() { bool isMenuActive = true; @@ -27,6 +43,15 @@ void AdminMenu::run() } } +/* + * Function: AdminMenu::handleOperation + * Description: Processes the administrator’s menu choice and executes the corresponding action. + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the administrator chooses to logout + */ bool AdminMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h index dab23c5..ed6a48b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h @@ -1,3 +1,10 @@ +/* + * File: AdminMenu.h + * Description: Declaration of the AdminMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp index 99e3bc0..4a0dd07 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: EmployeeMenu.cpp + * Description: Implements the EmployeeMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "EmployeeMenu.h" #include"InputHelper.h" #include"OutputHelper.h" + /* + * Function: EmployeeMenu::run + * Description: Starts the employee menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void EmployeeMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void EmployeeMenu::run() } } +/* + * Function: EmployeeMenu::handleOperation + * Description: Handles the employee’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the employee chooses to logout + */ bool EmployeeMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h index f082b66..8611935 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h @@ -1,3 +1,10 @@ +/* + * File: EmployeeMenu.h + * Description: Declaration of the EmployeeMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 081d281..4503969 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: FinanceExecutiveMenu.cpp + * Description: Implements the FinanceExecutiveMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "FinanceExecutiveMenu.h" #include"InputHelper.h" #include"OutputHelper.h" +/* + * Function: FinanceExecutiveMenu::run + * Description: Starts the finance executive menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void FinanceExecutiveMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void FinanceExecutiveMenu::run() } } +/* + * Function: FinanceExecutiveMenu::handleOperation + * Description: Handles the finance executive’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the finance executive chooses to logout + */ bool FinanceExecutiveMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h index 825322f..d1c4d77 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h @@ -1,3 +1,10 @@ +/* + * File: FinanceExecutiveMenu.h + * Description: Declaration of the FinanceExecutiveMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp index 7bf812c..dff562a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: HRManagerMenu.cpp + * Description: Implements the HRManagerMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "HRManagerMenu.h" #include"InputHelper.h" #include"OutputHelper.h" +/* + * Function: HRManagerMenu::run + * Description: Starts the HR manager menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void HRManagerMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void HRManagerMenu::run() } } +/* + * Function: HRManagerMenu::handleOperation + * Description: Handles the HR manager’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the HR manager chooses to logout + */ bool HRManagerMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h index 05e1f41..a3c1ff1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h @@ -1,3 +1,10 @@ +/* + * File: HRManagerMenu.h + * Description: Declaration of the EmployeeMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp index 836ca39..b415d57 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: ITExecutiveMenu.cpp + * Description: Implements the ITExecutiveMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "ITExecutiveMenu.h" #include"InputHelper.h" #include"OutputHelper.h" +/* + * Function: ITExecutiveMenu::run + * Description: Starts the IT executive menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void ITExecutiveMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void ITExecutiveMenu::run() } } +/* + * Function: ITExecutiveMenu::handleOperation + * Description: Handles the IT executive’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the IT executive chooses to logout + */ bool ITExecutiveMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h index 1c5f060..7447643 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h @@ -1,3 +1,10 @@ +/* + * File: ITExecutiveMenu.h + * Description: Declaration of the ITExecutiveMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp index 45fbfba..250da5a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: TalentExecutiveMenu.cpp + * Description: Implements the TalentExecutiveMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "TalentExecutiveMenu.h" #include"InputHelper.h" #include"OutputHelper.h" +/* + * Function: TalentExecutiveMenu::run + * Description: Starts the talent executive menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void TalentExecutiveMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void TalentExecutiveMenu::run() } } +/* + * Function: TalentExecutiveMenu::handleOperation + * Description: Handles the talent executive’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the talent executive chooses to logout + */ bool TalentExecutiveMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h index a258eaf..7cbee73 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h @@ -1,3 +1,10 @@ +/* + * File: TalentExecutiveMenu.h + * Description: Declaration of the TalentExecutiveMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp index 12c300b..97401b2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: TeamExecutiveMenu.cpp + * Description: Implements the TeamExecutiveMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "TeamExecutiveMenu.h" #include"InputHelper.h" #include"OutputHelper.h" +/* + * Function: TeamExecutiveMenu::run + * Description: Starts the team executive menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void TeamExecutiveMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void TeamExecutiveMenu::run() } } +/* + * Function: TeamExecutiveMenu::handleOperation + * Description: Handles the team executive’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the team executive chooses to logout + */ bool TeamExecutiveMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h index 4b5181d..3f6d5f3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h @@ -1,3 +1,10 @@ +/* + * File: TeamExecutiveMenu.h + * Description: Declaration of the TeamExecutiveMenu and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp index 4204fb7..31143d1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp @@ -1,8 +1,23 @@ +/* + * File: TeamLeadMenu.cpp + * Description: Implements the TeamLeadMenu class functions including menu loop and operation handling. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include "TeamLeadMenu.h" #include"InputHelper.h" #include"OutputHelper.h" +/* + * Function: TeamLeadMenu::run + * Description: Starts the team lead menu loop and displays available options until logout is selected + * Parameters: + * None + * Returns: + * None + */ void TeamLeadMenu::run() { bool isMenuActive = true; @@ -27,6 +42,15 @@ void TeamLeadMenu::run() } } +/* + * Function: TeamLeadMenu::handleOperation + * Description: Handles the team lead’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the menu should remain active + * false - if the team lead chooses to logout + */ bool TeamLeadMenu::handleOperation(int choice) { switch (choice) diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h index e1bd45b..d2057aa 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h @@ -1,3 +1,10 @@ +/* + * File: TeamLeadMenu.h + * Description: Declaration of the TeamLeadMenu class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include"ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp index adea852..1f08092 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -1,3 +1,10 @@ +/* + * File: UserInterface.cpp + * Description: Implements the UserInterface class functions including menu loop, login handling, and routing to appropriate role-based menus. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #include #include #include @@ -16,6 +23,14 @@ #include "OutputHelper.h" #include "Validator.h" +/* + * Function: UserInterface::run + * Description: Starts the user interface loop and displays login/exit options until exit is selected + * Parameters: + * None + * Returns: + * None + */ void UserInterface::run() { bool isMenuActive = true; @@ -40,6 +55,15 @@ void UserInterface::run() } } +/* + * Function: UserInterface::handleOperation + * Description: Handles the user’s menu choice and executes the corresponding action + * Parameters: + * choice - integer representing the selected menu option + * Returns: + * true - if the interface should remain active + * false - if the user chooses to exit + */ bool UserInterface::handleOperation(int choice) { switch (choice) @@ -57,6 +81,14 @@ bool UserInterface::handleOperation(int choice) return true; } +/* + * Function: UserInterface::login + * Description: Authenticates the user by email and password, validates login status, and routes to the appropriate menu + * Parameters: + * None + * Returns: + * None + */ void UserInterface::login() { std::string email, password; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h index c346301..cf9c924 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h @@ -1,3 +1,10 @@ +/* + * File: UserInterface.h + * Description: Declaration of the UserInterface class and related functions. + * Author: Trenser + * Created: 02-Apr-2026 + */ + #pragma once #include #include From 75b69f8c11d25052dcdb163b282fadbb9c017e3f Mon Sep 17 00:00:00 2001 From: Tinu Johnson Date: Fri, 10 Apr 2026 15:00:31 +0530 Subject: [PATCH 16/19] Convert shared pointer to raw pointer --- .../controllers/ZenvyController.cpp | 14 +++++ .../controllers/ZenvyController.h | 52 +++++++++---------- .../Trenser.Zenvy/datastores/DataStore.cpp | 6 +-- .../Trenser.Zenvy/datastores/DataStore.h | 13 +++-- .../Trenser.Zenvy/factories/Factory.h | 5 +- .../Trenser.Zenvy/models/Booking.cpp | 4 +- Trenser.Zenvy/Trenser.Zenvy/models/Booking.h | 12 ++--- .../Trenser.Zenvy/models/Employee.cpp | 10 ++-- Trenser.Zenvy/Trenser.Zenvy/models/Employee.h | 21 ++++---- .../Trenser.Zenvy/models/GeneralEmployee.h | 2 +- .../Trenser.Zenvy/models/JobListing.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Room.h | 4 +- Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp | 4 +- Trenser.Zenvy/Trenser.Zenvy/models/Team.h | 10 ++-- .../AuthenticationManagementService.cpp | 12 +++-- .../Trenser.Zenvy/services/LogService.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h | 5 +- .../Trenser.Zenvy/views/EmployeeMenu.h | 5 +- .../views/FinanceExecutiveMenu.h | 5 +- .../Trenser.Zenvy/views/HRManagerMenu.h | 5 +- .../Trenser.Zenvy/views/ITExecutiveMenu.h | 5 +- .../Trenser.Zenvy/views/TalentExecutiveMenu.h | 5 +- .../Trenser.Zenvy/views/TeamExecutiveMenu.h | 5 +- .../Trenser.Zenvy/views/TeamLeadMenu.h | 5 +- .../Trenser.Zenvy/views/UserInterface.cpp | 15 +++++- .../Trenser.Zenvy/views/UserInterface.h | 48 ++++++++--------- 27 files changed, 145 insertions(+), 133 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 162bdd2..ec69829 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -52,3 +52,17 @@ void ZenvyController::changePassword(const std::string& password) { m_authenticationManagementService->changePassword(password); } + +ZenvyController::~ZenvyController() +{ + delete m_authenticationManagementService; + delete m_attendanceManagementService; + delete m_bookingManagementService; + delete m_employeeManagememtService; + delete m_leaveManagementService; + delete m_notificationManagementService; + delete m_payslipManagementService; + delete m_talentAcquisitionManagementService; + delete m_teamManagementService; + delete m_ticketManagementService; +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 364ec49..e456409 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -6,7 +6,6 @@ */ #pragma once -#include #include #include "AuthenticationManagementService.h" #include "AttendanceManagementService.h" @@ -23,31 +22,30 @@ 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; + AuthenticationManagementService* m_authenticationManagementService; + AttendanceManagementService* m_attendanceManagementService; + BookingManagementService* m_bookingManagementService; + EmployeeManagememtService* m_employeeManagememtService; + LeaveManagementService* m_leaveManagementService; + NotificationManagementService* m_notificationManagementService; + PayslipManagementService* m_payslipManagementService; + TalentAcquisitionManagementService* m_talentAcquisitionManagementService; + TeamManagementService* m_teamManagementService; + TicketManagementService* 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()) {}; - - //Authentication - AuthenticationDTO login(const std::string& email, const std::string& password); - void logout(); - void changePassword(const std::string&); + ZenvyController() : + m_authenticationManagementService(new AuthenticationManagementService()), + m_attendanceManagementService(new AttendanceManagementService()), + m_bookingManagementService(new BookingManagementService()), + m_employeeManagememtService(new EmployeeManagememtService()), + m_leaveManagementService(new LeaveManagementService()), + m_notificationManagementService(new NotificationManagementService()), + m_payslipManagementService(new PayslipManagementService()), + m_talentAcquisitionManagementService(new TalentAcquisitionManagementService()), + m_teamManagementService(new TeamManagementService()), + m_ticketManagementService(new TicketManagementService()) {}; + AuthenticationDTO login(const std::string& email, const std::string& password); + void logout(); + void changePassword(const std::string&); + ~ZenvyController(); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index 64694df..eb2a3b5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -45,7 +45,7 @@ logMap& DataStore::getLogs() * std::shared_ptr& - reference to the authenticated employee object. */ -std::shared_ptr& DataStore::getAuthenticatedEmployee() +Employee*& DataStore::getAuthenticatedEmployee() { return m_authenticatedEmployee; } @@ -59,7 +59,7 @@ std::shared_ptr& DataStore::getAuthenticatedEmployee() * void - no return value. */ -void DataStore::setAuthenticatedEmployee(std::shared_ptr authenticatedEmployee) +void DataStore::setAuthenticatedEmployee(Employee* authenticatedEmployee) { m_authenticatedEmployee = authenticatedEmployee; } @@ -87,7 +87,7 @@ employeeMap& DataStore::getEmployees() * std::shared_ptr& - reference to the authenticated employee object. */ -std::shared_ptr& DataStore::getAuthenticatedUser() +Employee* DataStore::getAuthenticatedUser() { return m_authenticatedEmployee; } diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 603d49c..86e304e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -6,7 +6,6 @@ */ #pragma once -#include #include #include "Employee.h" #include "Log.h" @@ -26,13 +25,13 @@ #include "Announcement.h" #include "Faq.h" -using employeeMap = std::map>; -using logMap = std::map>; +using employeeMap = std::map; +using logMap = std::map; class DataStore { private: - std::shared_ptr m_authenticatedEmployee; + Employee* m_authenticatedEmployee; employeeMap m_employees; logMap m_logs; DataStore() = default; @@ -43,8 +42,8 @@ public: DataStore(DataStore&&) = delete; DataStore& operator=(DataStore&&) = delete; employeeMap& getEmployees(); - std::shared_ptr& getAuthenticatedUser(); + Employee* getAuthenticatedUser(); logMap& getLogs(); - std::shared_ptr& getAuthenticatedEmployee(); - void setAuthenticatedEmployee(std::shared_ptr < Employee>); + Employee*& getAuthenticatedEmployee(); + void setAuthenticatedEmployee(Employee*); }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h index f65c267..604a3f0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h +++ b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h @@ -6,7 +6,6 @@ */ #pragma once -#include #include class Factory @@ -24,8 +23,8 @@ public: */ template - static std::shared_ptr getObject(Args&&... args) + static T* getObject(Args&&... args) { - return std::make_shared(std::forward(args)...); + return T*(std::forward(args)...); } }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp index 6689689..5ac6682 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp @@ -26,7 +26,7 @@ const std::string& Booking::getEmployeeId() const return m_employeeId; } -std::shared_ptr Booking::getTeam() const +Team* Booking::getTeam() const { return m_team; } @@ -51,7 +51,7 @@ void Booking::setEmployeeId(const std::string& employeeId) m_employeeId = employeeId; } -void Booking::setTeam(std::shared_ptr team) +void Booking::setTeam(Team* team) { m_team = team; } diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h index f88c084..d99a5f3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h @@ -6,7 +6,6 @@ */ #pragma once #include -#include #include "Team.h" #include "Timestamp.h" @@ -17,25 +16,24 @@ private: util::Timestamp m_startTime; util::Timestamp m_endTime; std::string m_employeeId; - std::shared_ptr m_team; + Team* m_team; public: - Booking() : m_id(""), m_startTime(), m_endTime(), m_employeeId(""), m_team(nullptr) {} + Booking() : m_id(""), m_startTime(), m_endTime(), m_employeeId(""), m_team(nullptr) {}; Booking(const std::string& id, const util::Timestamp& startTime, const util::Timestamp& endTime, const std::string& employeeId, - std::shared_ptr team) - : m_id(id), m_startTime(startTime), m_endTime(endTime), m_employeeId(employeeId), m_team(team) {} + Team* team) : m_id(id), m_startTime(startTime), m_endTime(endTime), m_employeeId(employeeId), m_team(team) {}; const std::string& getBookingId() const; const util::Timestamp& getStartTime() const; const util::Timestamp& getEndTime() const; const std::string& getEmployeeId() const; - std::shared_ptr getTeam() const; + Team* getTeam() const; void setBookingId(const std::string& id); void setStartTime(const util::Timestamp& startTime); void setEndTime(const util::Timestamp& endTime); void setEmployeeId(const std::string& employeeId); - void setTeam(std::shared_ptr team); + void setTeam(Team* team); double getDurationInHours() const; double getDurationInMinutes() const; }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp index 68c1963..a2b426e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp @@ -46,7 +46,7 @@ const std::string& Employee::getEmployeeTeamId() const return m_teamId; } -std::shared_ptr Employee::getPayroll() const +Payroll* Employee::getPayroll() const { return m_payroll; } @@ -101,12 +101,12 @@ void Employee::setEmployeeTeamId(const std::string& teamId) m_teamId = teamId; } -void Employee::setEmployeePayroll(std::shared_ptr payroll) +void Employee::setEmployeePayroll(Payroll* payroll) { m_payroll = payroll; } -void Employee::addPayslip(std::shared_ptr payslip) +void Employee::addPayslip(Payslip* payslip) { if (payslip) { @@ -114,7 +114,7 @@ void Employee::addPayslip(std::shared_ptr payslip) } } -void Employee::addAttendance(std::shared_ptr attendance) +void Employee::addAttendance(Attendance* attendance) { if (attendance) { @@ -122,7 +122,7 @@ void Employee::addAttendance(std::shared_ptr attendance) } } -void Employee::addLeave(std::shared_ptr leave) +void Employee::addLeave(Leave* leave) { if (leave) { diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h index 400eebd..e7ce4c7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h @@ -6,16 +6,15 @@ */ #pragma once #include -#include #include #include "Payslip.h" #include "Attendance.h" #include "Leave.h" #include "Payroll.h" #include "Enums.h" -using payslipMap = std::map>; -using attendanceMap = std::map>>; -using leaveMap = std::map>; +using payslipMap = std::map; +using attendanceMap = std::map>; +using leaveMap = std::map; class Employee { @@ -28,7 +27,7 @@ private: Enums::AccountStatus m_accountStatus; Enums::TeamStatus m_teamStatus; std::string m_teamId; - std::shared_ptr m_payroll; + Payroll* m_payroll; payslipMap m_payslips; attendanceMap m_attendances; leaveMap m_leaves; @@ -42,7 +41,7 @@ public: const std::string& email, const std::string& teamId, Enums::EmployeeType employeeType, - std::shared_ptr payroll) + Payroll* payroll) : m_id(id), m_password(password), m_name(name), m_phone(phone), m_email(email), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId(teamId), m_employeeType(employeeType), m_payroll(payroll) { } const std::string& getEmployeeId() const; const std::string& getEmployeePassword() const; @@ -52,7 +51,7 @@ public: Enums::AccountStatus getEmployeeAccountStatus() const; Enums::TeamStatus getEmployeeTeamStatus() const; const std::string& getEmployeeTeamId() const; - std::shared_ptr getPayroll() const; + Payroll* getPayroll() const; const payslipMap& getEmployeePayslips() const; const attendanceMap& getEmployeeAttendances() const; const leaveMap& getEmployeeLeaves() const; @@ -63,10 +62,10 @@ public: void setEmployeeAccountStatus(Enums::AccountStatus status); void setEmployeeTeamStatus(Enums::TeamStatus status); void setEmployeeTeamId(const std::string& teamId); - void setEmployeePayroll(std::shared_ptr payroll); - void addPayslip(std::shared_ptr payslip); - void addAttendance(std::shared_ptr attendance); - void addLeave(std::shared_ptr leave); + void setEmployeePayroll(Payroll* payroll); + void addPayslip(Payslip* payslip); + void addAttendance(Attendance* attendance); + void addLeave(Leave* leave); Enums::EmployeeType getEmployeeType() const; virtual ~Employee() = default; }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h index 2c40288..93a7d06 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h @@ -20,7 +20,7 @@ public: const std::string& phone, const std::string& email, const std::string& teamId, - std::shared_ptr payroll, + Payroll* payroll, Enums::EmployeeDesignation designation) : Employee(id, password, name, phone, email, teamId,Enums::EmployeeType::GENERAL, payroll), m_designation(designation) {} Enums::EmployeeDesignation getDesignation() const; void setDesignation(Enums::EmployeeDesignation designation); diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h index 10b6c57..db016a0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h @@ -11,7 +11,7 @@ File: JobListing.h #include #include "Candidate.h" #include "Enums.h" -using candidateMap = std::map>; +using candidateMap = std::map; class JobListing { diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp index cb5abbb..0d697ed 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp @@ -33,7 +33,7 @@ void Room::setRoomName(const std::string& name) m_name = name; } -void Room::addBooking(std::shared_ptr booking) +void Room::addBooking(Booking* booking) { if (booking) { diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h index 595ffaa..c412b58 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h @@ -10,7 +10,7 @@ File: Room.h #include #include #include "Booking.h" -using bookingMap = std::map>; +using bookingMap = std::map; class Room { @@ -26,5 +26,5 @@ public: const bookingMap& getBookings() const; void setRoomId(const std::string& id); void setRoomName(const std::string& name); - void addBooking(std::shared_ptr booking); + void addBooking(Booking* booking); }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp index 4a26647..7ce86c2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp @@ -18,7 +18,7 @@ const std::string& Team::getTeamName() const return m_name; } -std::shared_ptr Team::getTeamLead() const +Employee* Team::getTeamLead() const { return m_lead; } @@ -43,7 +43,7 @@ void Team::setTeamName(const std::string& name) m_name = name; } -void Team::setTeamLead(std::shared_ptr lead) +void Team::setTeamLead(Employee* lead) { m_lead = lead; } diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h index e353aa3..7e3d818 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h @@ -10,32 +10,32 @@ File: Team.h #include #include #include "Employee.h" -using employeeMap = std::map>; +using employeeMap = std::map; class Team { private: std::string m_id; std::string m_name; - std::shared_ptr m_lead; + Employee* m_lead; employeeMap m_employees; int m_maximumNumberOfEmployees; public: Team() : m_id(""), m_name(""), m_lead(nullptr), m_maximumNumberOfEmployees(0) {} Team(const std::string& id, const std::string& name, - std::shared_ptr lead, + Employee* lead, int maximumNumberOfEmployees) : m_id(id), m_name(name), m_lead(lead), m_maximumNumberOfEmployees(maximumNumberOfEmployees) { } const std::string& getTeamId() const; const std::string& getTeamName() const; - std::shared_ptr getTeamLead() const; + Employee* getTeamLead() const; const employeeMap& getEmployeesInTeam() const; int getMaximumNumberOfEmployeesInTeam() const; void setTeamId(const std::string& id); void setTeamName(const std::string& name); - void setTeamLead(std::shared_ptr lead); + void setTeamLead(Employee* lead); void setEmployeesInTeam(const employeeMap& employees); void setMaximumNumberOfEmployeesInTeam(int maximumNumberOfEmployees); }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 642c868..294c3b8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -43,7 +43,7 @@ AuthenticationDTO AuthenticationManagementService::login(const std::string& emai employeeType = employee.second->getEmployeeType(); if (employeeType == Enums::EmployeeType::GENERAL) { - std::shared_ptr generalEmployee = std::dynamic_pointer_cast(employee.second); + GeneralEmployee* generalEmployee = dynamic_cast(employee.second); if (generalEmployee) { employeeDesignation = generalEmployee->getDesignation(); @@ -77,7 +77,7 @@ AuthenticationDTO AuthenticationManagementService::login(const std::string& emai */ void AuthenticationManagementService::changePassword(const std::string& password) { - std::shared_ptr authenticatedUser = m_dataStore.getAuthenticatedUser(); + Employee* authenticatedUser = m_dataStore.getAuthenticatedUser(); if (authenticatedUser) { authenticatedUser->setEmployeePassword(password); @@ -99,10 +99,12 @@ void AuthenticationManagementService::changePassword(const std::string& password * runtime_error if no user is currently logged in */ void AuthenticationManagementService::logout() { - if (m_dataStore.getAuthenticatedUser()) { - m_dataStore.getAuthenticatedUser() = nullptr; + if (m_dataStore.getAuthenticatedEmployee()) + { + m_dataStore.getAuthenticatedEmployee() = nullptr; } - else { + else + { throw std::runtime_error("No user currently logged In..."); } } \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp index 3e77020..6917cda 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/LogService.cpp @@ -14,6 +14,6 @@ void LogService::log(const std::string& message) { DataStore& dataStore = DataStore::getInstance(); logMap& logs = dataStore.getLogs(); - std::shared_ptr log = Factory::getObject(message); + Log* log = Factory::getObject(message); logs.emplace(std::make_pair(log->getTimestamp(), log)); } diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h index ed6a48b..6144d4e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class AdminMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - AdminMenu() :m_zenvyController(std::make_shared()) {}; + AdminMenu() :m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h index 8611935..907ab82 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class EmployeeMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController m_zenvyController; public: - EmployeeMenu() : m_zenvyController(std::make_shared()) {}; + EmployeeMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h index d1c4d77..98dd6c8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class FinanceExecutiveMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - FinanceExecutiveMenu() : m_zenvyController(std::make_shared()) {}; + FinanceExecutiveMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h index a3c1ff1..ed7c5fa 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class HRManagerMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - HRManagerMenu() : m_zenvyController(std::make_shared()) {}; + HRManagerMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h index 7447643..5d32d37 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class ITExecutiveMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - ITExecutiveMenu() : m_zenvyController(std::make_shared()) {}; + ITExecutiveMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h index 7cbee73..93946ae 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class TalentExecutiveMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - TalentExecutiveMenu() : m_zenvyController(std::make_shared < ZenvyController>()) {}; + TalentExecutiveMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h index 3f6d5f3..747b5d4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class TeamExecutiveMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - TeamExecutiveMenu() : m_zenvyController(std::make_shared()) {}; + TeamExecutiveMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h index d2057aa..159f485 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.h @@ -6,15 +6,14 @@ */ #pragma once -#include #include"ZenvyController.h" class TeamLeadMenu { private: - std::shared_ptr m_zenvyController; + ZenvyController* m_zenvyController; public: - TeamLeadMenu() : m_zenvyController(std::make_shared()) {}; + TeamLeadMenu() : m_zenvyController(new ZenvyController()) {}; void run(); bool handleOperation(int); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp index 1f08092..cefe64a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.cpp @@ -7,7 +7,6 @@ #include #include -#include #include #include "UserInterface.h" #include "AdminMenu.h" @@ -132,7 +131,6 @@ void UserInterface::login() } } util::clear(); - // Route to appropriate menu switch (employeeType) { case Enums::EmployeeType::ADMIN: @@ -191,4 +189,17 @@ void UserInterface::login() break; } m_controller->logout(); +} + +UserInterface::~UserInterface() +{ + delete m_controller; + delete m_employeeMenu; + delete m_adminMenu; + delete m_financeExecutiveMenu; + delete m_hrManagerMenu; + delete m_itExecutiveMenu; + delete m_talentExecutiveMenu; + delete m_teamExecutiveMenu; + delete m_teamLeadMenu; } \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h index cf9c924..e400ba6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/UserInterface.h @@ -6,7 +6,6 @@ */ #pragma once -#include #include #include "AdminMenu.h" #include "EmployeeMenu.h" @@ -21,27 +20,28 @@ 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; + ZenvyController* m_controller; + EmployeeMenu* m_employeeMenu; + AdminMenu* m_adminMenu; + FinanceExecutiveMenu* m_financeExecutiveMenu; + HRManagerMenu* m_hrManagerMenu; + ITExecutiveMenu* m_itExecutiveMenu; + TalentExecutiveMenu* m_talentExecutiveMenu; + TeamExecutiveMenu* m_teamExecutiveMenu; + TeamLeadMenu* 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(); -}; - + UserInterface() : + m_controller(new ZenvyController()), + m_employeeMenu(new EmployeeMenu()), + m_adminMenu(new AdminMenu()), + m_financeExecutiveMenu(new FinanceExecutiveMenu()), + m_hrManagerMenu(new HRManagerMenu()), + m_itExecutiveMenu(new ITExecutiveMenu()), + m_talentExecutiveMenu(new TalentExecutiveMenu()), + m_teamExecutiveMenu(new TeamExecutiveMenu()), + m_teamLeadMenu(new TeamLeadMenu()) {}; + void run(); + bool handleOperation(int choice); + void login(); + ~UserInterface(); +}; \ No newline at end of file From 83f1c4183c8421d0d4bbe2664483d59cbc7dc7bf Mon Sep 17 00:00:00 2001 From: Tinu Johnson Date: Fri, 10 Apr 2026 15:23:27 +0530 Subject: [PATCH 17/19] Add destructor in datastore --- .../Trenser.Zenvy/datastores/DataStore.cpp | 18 ++++++++++++++++++ .../Trenser.Zenvy/datastores/DataStore.h | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index eb2a3b5..c8e6e0d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -91,4 +91,22 @@ Employee* DataStore::getAuthenticatedUser() { return m_authenticatedEmployee; } +DataStore::~DataStore() +{ + for (auto& pair : m_employees) + { + delete pair.second; + } + m_employees.clear(); + for (auto& pair : m_logs) + { + delete pair.second; + } + m_logs.clear(); + if (m_authenticatedEmployee) + { + delete m_authenticatedEmployee; + m_authenticatedEmployee = nullptr; + } +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 86e304e..fc16308 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -34,7 +34,7 @@ private: Employee* m_authenticatedEmployee; employeeMap m_employees; logMap m_logs; - DataStore() = default; + DataStore() : m_authenticatedEmployee(nullptr) {}; public: static DataStore& getInstance(); DataStore(const DataStore&) = delete; @@ -46,4 +46,5 @@ public: logMap& getLogs(); Employee*& getAuthenticatedEmployee(); void setAuthenticatedEmployee(Employee*); + ~DataStore(); }; \ No newline at end of file From 85f97f30f95e39e2dcf99cc6f27de9c0e0b83fb4 Mon Sep 17 00:00:00 2001 From: Tinu Johnson Date: Mon, 13 Apr 2026 09:56:41 +0530 Subject: [PATCH 18/19] Add missing header --- Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp | 3 ++- Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h | 6 ++++++ Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp | 3 ++- Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp | 5 +++-- Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp | 3 ++- Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp | 3 ++- Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.cpp | 7 +++++++ 7 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp index 67e0c4e..8cdada4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp @@ -1,11 +1,12 @@ /* * File: Announcement.cpp - * Description: The Announcement class that stores an announcement’s ID, timestamp, and message with getter and setter functions for controlled access. + * Description: The Announcement class defines a simple object for managing announcement details. * Author: Trenser * Created: 31-Mar-2026 */ #include "Announcement.h" +//Getters and Setters const std::string& Announcement::getAnnouncementId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h index 23e333c..3006d0f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h @@ -1,3 +1,9 @@ +/* + * File: Announcement.h + * Description: The Announcement class defines a simple object for managing announcement details. + * Author: Trenser + * Created: 31-Mar-2026 + */ #pragma once #include #include "Timestamp.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp index bcbf622..399fccd 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp @@ -1,11 +1,12 @@ /* * File: Attendance.cpp - * Description: The Attendance class manages attendance records by storing login and logout times. + * Description: The Attendance class represents an attendance record by storing an ID, login and logout timestamps. * Author: Trenser * Created: 31-Mar-2026 */ #include "Attendance.h" + //Getters and Setters const std::string& Attendance::getAttendanceId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp index 5ac6682..a069f96 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp @@ -1,11 +1,12 @@ -/* +/* * File: Booking.cpp - * Description: The Booking class stores booking details and calculates the duration between start and end times. + * Description: The Booking class represents a time‑based booking with employee and team details and supports duration calculation. * Author: Trenser * Created: 31-Mar-2026 */ #include "Booking.h" + //Getters and Setters const std::string& Booking::getBookingId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp index 8394260..182fedc 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp @@ -1,11 +1,12 @@ /* * File: Candidate.cpp - * Description: The Candidate class manages candidate details and status using getter and setter methods. + * Description: The Candidate class stores and manages a candidate’s information. * Author: Trenser * Created: 31-Mar-2026 */ #include "Candidate.h" + //Getters and Setters const std::string& Candidate::getCandidateId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp index a2b426e..83a1ca2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp @@ -1,11 +1,12 @@ /* * File: Employee.cpp - * Description: The Employee class stores and manages employee details along with related work records. + * Description: The Employee class manages employee information and associated work records such as payroll, attendance, leaves, and payslips. * Author: Trenser * Created: 31-Mar-2026 */ #include "Employee.h" + //Getters and Setters const std::string& Employee::getEmployeeId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.cpp index 46f9e61..2fd78e5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.cpp @@ -1,5 +1,12 @@ +/* + * File: GeneralEmployee.h + * Description: The GeneralEmployee class represents a general employee with a specific designation. + * Author: Trenser + * Created: 31-Mar-2026 + */ #include "GeneralEmployee.h" + //Getters and Setters Enums::EmployeeDesignation GeneralEmployee::getDesignation() const { return m_designation; From 853ed05e8d629241580b5137fb1703abbc1ad678 Mon Sep 17 00:00:00 2001 From: Ajmal Jalaludeen Date: Mon, 13 Apr 2026 10:05:29 +0530 Subject: [PATCH 19/19] Corrected date format and removed unwanted spaces across all files. --- Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h | 4 ++-- Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Leave.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Log.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Notification.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Room.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Team.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp | 2 +- Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h | 2 +- 27 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index ec69829..cdc3a08 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -2,7 +2,7 @@ * File: ZenvyController.cpp * Description : Controls data flow between UI and Service Layers. * Author: Trenser - * Created : 01-04-2026 + * Created : 01-Apr-2026 */ #include "ZenvyController.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index e456409..965a5d1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -2,7 +2,7 @@ * File: ZenvyController.h * Description : Controls data flow between UI and Service Layers. * Author: Trenser - * Created : 01-04-2026 + * Created : 01-Apr-2026 */ #pragma once @@ -48,4 +48,4 @@ public: void logout(); void changePassword(const std::string&); ~ZenvyController(); -}; +}; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index c8e6e0d..75e9f43 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -2,7 +2,7 @@ * File: DataStore.cpp * Description: Central Storage for all the System Data. * Author: Trenser - * Created: 01-04-2026 + * Created: 01-Apr-2026 */ #include "DataStore.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index fc16308..6cd9518 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -2,7 +2,7 @@ * File: DataStore.h * Description: Central Storage for all the System Data. * Author: Trenser - * Created: 01-04-2026 + * Created: 01-Apr-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h index 604a3f0..216a823 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h +++ b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h @@ -2,7 +2,7 @@ * File: Factory.h * Description: Provides a generic factory utility to create shared_ptr instances of objects. * Author: Ajmal J S - * Created: 01-04-2026 + * Created: 01-Apr-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp index 0d4b30e..910c0e8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp @@ -2,7 +2,7 @@ File: JobListing.cpp * Description : Represents a job opening along with its details and applied candidates. * Author : Trenser -* Created : 01 - Apr - 2026 +* Created : 01-Apr-2026 */ #include "JobListing.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h index db016a0..a269cff 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h @@ -2,7 +2,7 @@ File: JobListing.h * Description : Represents a job opening along with its details and applied candidates. * Author : Trenser -* Created : 01 - Apr - 2026 +* Created : 01-Apr-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp index 4ac215b..c8496c6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp @@ -2,7 +2,7 @@ File: Leave.cpp * Description : Stores information related to an employee’s leave application. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Leave.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h index a7588e2..4aa0473 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h @@ -2,7 +2,7 @@ File: Leave.h * Description : Stores information related to an employee’s leave application. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp index a022679..af1e9e2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Log.cpp @@ -2,7 +2,7 @@ File: Log.cpp * Description : Represents a log entry containing a timestamp and an associated message. * Author : Trenser -* Created : 01 - Apr - 2026 +* Created : 01-Apr-2026 */ #include "Log.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Log.h b/Trenser.Zenvy/Trenser.Zenvy/models/Log.h index 416d7fb..f258643 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Log.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Log.h @@ -2,7 +2,7 @@ File: Log.h * Description : Represents a log entry containing a timestamp and an associated message. * Author : Trenser -* Created : 01 - Apr - 2026 +* Created : 01-Apr-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp index 2bc0c0d..0a7456e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp @@ -2,7 +2,7 @@ File: Notification.cpp * Description : Represents an employee notification with message and status details. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Notification.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h index cf76caf..28f2cad 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h @@ -2,7 +2,7 @@ File: Notification.h * Description : Represents an employee notification with message and status details. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp index b76ab8d..a4659ce 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp @@ -2,7 +2,7 @@ File: Payroll.cpp * Description : Stores payroll and salary breakdown details for an employee. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Payroll.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h index 3ebe780..dcbaeab 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h @@ -2,7 +2,7 @@ File: Payroll.h * Description : Stores payroll and salary breakdown details for an employee. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp index 70e42e7..cdbef42 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp @@ -2,7 +2,7 @@ File: Payslip.cpp * Description : Models a payslip entity that stores salary information. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Payslip.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h index 06d0023..b9b7aa1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h @@ -2,7 +2,7 @@ File: Payslip.h * Description : Models a payslip entity that stores salary information. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp index 0d697ed..8b32aea 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp @@ -2,7 +2,7 @@ File: Room.cpp * Description : Models a room entity that maintains room details and manages its bookings. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Room.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h index c412b58..3f1811b 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h @@ -2,7 +2,7 @@ File: Room.h * Description : Models a room entity that maintains room details and manages its bookings. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp index 112c3d0..5c44816 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.cpp @@ -2,7 +2,7 @@ File: TalentExecutive.cpp * Description : Represents information related to a talent executive in the system. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "TalentExecutive.h" \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h index a5bfa6e..54382d4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h @@ -2,7 +2,7 @@ File: TalentExecutive.h * Description : Represents information related to a talent executive in the system. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp index 7ce86c2..e345eb8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp @@ -2,7 +2,7 @@ File: Team.cpp * Description : Models a team entity that maintains team identity, leadership, employee list, and size limitations. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Team.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h index 7e3d818..9ef386f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h @@ -2,7 +2,7 @@ File: Team.h * Description : Models a team entity that maintains team identity, leadership, employee list, and size limitations. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp index aac8db4..c780ad7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.cpp @@ -2,7 +2,7 @@ File: TeamExecutive.cpp * Description : Represents information related to a team executive within the system. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "TeamExecutive.h" \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h index 1bd7def..ee45b0a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h @@ -2,7 +2,7 @@ File: TeamExecutive.h * Description : Represents information related to a team executive within the system. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp index af67e08..ba7227d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp @@ -2,7 +2,7 @@ File: Ticket.cpp * Description : Represents a support ticket with its associated details and status. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #include "Ticket.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h index 88f8ed8..e8657e6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h @@ -2,7 +2,7 @@ File: Ticket.h * Description : Represents a support ticket with its associated details and status. * Author : Trenser -* Created : 31 - Mar - 2026 +* Created : 31-Mar-2026 */ #pragma once