Merge branch 'feature' into feature-employee-management-native-pointers

This commit is contained in:
2026-04-16 16:57:18 +05:30
98 changed files with 1302 additions and 150 deletions
@@ -1,3 +1,10 @@
/*
* File: Trenser.Zenvy.cpp
* Description: Zenvy Main
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "UserInterface.h"
#include "FileManager.h"
int main()
@@ -1,16 +1,53 @@
/*
* File: ZenvyController.cpp
* Description : Controls data flow between UI and Service Layers.
* Author: Trenser
* Created : 01-Apr-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);
@@ -81,3 +118,17 @@ std::pair<std::shared_ptr<Payroll>, std::shared_ptr<Payslip>> ZenvyController::g
{
return m_payslipManagementService->getPayslipForMonth(employeeId, year, month);
}
ZenvyController::~ZenvyController()
{
delete m_authenticationManagementService;
delete m_attendanceManagementService;
delete m_bookingManagementService;
delete m_employeeManagementService;
delete m_leaveManagementService;
delete m_notificationManagementService;
delete m_payslipManagementService;
delete m_talentAcquisitionManagementService;
delete m_teamManagementService;
delete m_ticketManagementService;
}
@@ -1,5 +1,11 @@
/*
* File: ZenvyController.h
* Description : Controls data flow between UI and Service Layers.
* Author: Trenser
* Created : 01-Apr-2026
*/
#pragma once
#include <memory>
#include <utility>
#include "AuthenticationManagementService.h"
#include "AttendanceManagementService.h"
@@ -16,28 +22,28 @@
class ZenvyController
{
private:
std::shared_ptr<AuthenticationManagementService> m_authenticationManagementService;
std::shared_ptr<AttendanceManagementService> m_attendanceManagementService;
std::shared_ptr<BookingManagementService> m_bookingManagementService;
std::shared_ptr<EmployeeManagementService> m_employeeManagementService;
std::shared_ptr<LeaveManagementService> m_leaveManagementService;
std::shared_ptr<NotificationManagementService> m_notificationManagementService;
std::shared_ptr<PayslipManagementService> m_payslipManagementService;
std::shared_ptr<TalentAcquisitionManagementService> m_talentAcquisitionManagementService;
std::shared_ptr<TeamManagementService> m_teamManagementService;
std::shared_ptr<TicketManagementService> m_ticketManagementService;
AuthenticationManagementService* m_authenticationManagementService;
AttendanceManagementService* m_attendanceManagementService;
BookingManagementService* m_bookingManagementService;
EmployeeManagementService* m_employeeManagementService;
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<AuthenticationManagementService>()),
m_attendanceManagementService(std::make_shared<AttendanceManagementService>()),
m_bookingManagementService(std::make_shared<BookingManagementService>()),
m_employeeManagementService(std::make_shared<EmployeeManagementService>()),
m_leaveManagementService(std::make_shared<LeaveManagementService>()),
m_notificationManagementService(std::make_shared<NotificationManagementService>()),
m_payslipManagementService(std::make_shared<PayslipManagementService>()),
m_talentAcquisitionManagementService(std::make_shared<TalentAcquisitionManagementService>()),
m_teamManagementService(std::make_shared<TeamManagementService>()),
m_ticketManagementService(std::make_shared<TicketManagementService>()) {};
m_authenticationManagementService(new AuthenticationManagementService()),
m_attendanceManagementService(new AttendanceManagementService()),
m_bookingManagementService(new BookingManagementService()),
m_employeeManagementService(new EmployeeManagementService()),
m_leaveManagementService(new LeaveManagementService()),
m_notificationManagementService(new NotificationManagementService()),
m_payslipManagementService(new PayslipManagementService()),
m_talentAcquisitionManagementService(new TalentAcquisitionManagementService()),
m_teamManagementService(new TeamManagementService()),
m_ticketManagementService(new TicketManagementService()) {};
//Authentication
AuthenticationDTO login(const std::string& email, const std::string& password);
@@ -1,32 +1,79 @@
/*
* File: DataStore.cpp
* Description: Central Storage for all the System Data.
* Author: Trenser
* Created: 01-Apr-2026
*/
#include "DataStore.h"
#include "EmployeeManagementService.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;
}
candidateMap& DataStore::getCandidates()
{
return m_candidates;
}
/*
* Function: getAuthenticatedEmployee
* Description: returns the currently authenticated employee.
* Parameters:
* None
* Returns:
* std::shared_ptr<Employee>& - reference to the authenticated employee object.
*/
std::shared_ptr<Employee>& DataStore::getAuthenticatedEmployee()
Employee*& DataStore::getAuthenticatedEmployee()
{
return m_authenticatedEmployee;
}
void DataStore::setAuthenticatedEmployee(std::shared_ptr<Employee> 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(Employee* 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;
@@ -37,6 +84,25 @@ payrollMap& DataStore::getPayrolls()
return m_payrolls;
}
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;
}
}
payslipMap& DataStore::getPayslips()
{
return m_payslips;
@@ -1,5 +1,11 @@
/*
* File: DataStore.h
* Description: Central Storage for all the System Data.
* Author: Trenser
* Created: 01-Apr-2026
*/
#pragma once
#include <memory>
#include <map>
#include "Employee.h"
#include "Log.h"
@@ -21,22 +27,22 @@
#include "Payroll.h"
#include "Payslip.h"
using employeeMap = std::map<std::string, std::shared_ptr<Employee>>;
using employeeMap = std::map<std::string,Employee*>;
using payrollMap = std::map<std::string, std::shared_ptr<Payroll>>;
using payslipMap = std::map<std::string, std::shared_ptr<Payslip>>;
using logMap = std::map<util::Timestamp, std::shared_ptr<Log>>;
using logMap = std::map<util::Timestamp, Log*>;
using candidateMap = std::map<std::string, std::shared_ptr<Candidate>>;
class DataStore
{
private:
std::shared_ptr<Employee> m_authenticatedEmployee;
Employee* m_authenticatedEmployee;
employeeMap m_employees;
payrollMap m_payrolls;
payslipMap m_payslips;
logMap m_logs;
candidateMap m_candidates;
DataStore() = default;
DataStore() : m_authenticatedEmployee(nullptr) {};
public:
static DataStore& getInstance();
DataStore(const DataStore&) = delete;
@@ -48,6 +54,7 @@ public:
payslipMap& getPayslips();
logMap& getLogs();
candidateMap& getCandidates();
std::shared_ptr<Employee>& getAuthenticatedEmployee();
void setAuthenticatedEmployee(std::shared_ptr < Employee>);
Employee*& getAuthenticatedEmployee();
void setAuthenticatedEmployee(Employee*);
~DataStore();
};
@@ -1,13 +1,30 @@
/*
* File: Factory.h
* Description: Provides a generic factory utility to create shared_ptr instances of objects.
* Author: Ajmal J S
* Created: 01-Apr-2026
*/
#pragma once
#include <memory>
#include <utility>
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<T> - a shared pointer managing the newly created object
*/
template<typename T, typename... Args>
static std::shared_ptr<T> getObject(Args&&... args)
static T* getObject(Args&&... args)
{
return std::make_shared<T>(std::forward<Args>(args)...);
return T*(std::forward<Args>(args)...);
}
};
@@ -1 +1,7 @@
/*
* File: Admin.cpp
* Description: Admin model class
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "Admin.h"
@@ -1,3 +1,10 @@
/*
* File: Admin.h
* Description: Admin model class
* Author: Trenser
* Created: 31-Mar-2026
*/
#pragma once
#include "Employee.h"
@@ -1,3 +1,9 @@
/*
* File: Announcement.cpp
* Description: The Announcement class defines a simple object for managing announcement details.
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "Announcement.h"
int Announcement::m_uid = 0;
@@ -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 <string>
#include "Timestamp.h"
@@ -1,3 +1,9 @@
/*
* File: Attendance.cpp
* 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"
int Attendance::m_uid = 0;
@@ -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 <string>
#include "Timestamp.h"
@@ -1,3 +1,9 @@
/*
* File: Booking.cpp
* Description: The Booking class represents a timebased booking with employee and team details and supports duration calculation.
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "Booking.h"
int Booking::m_uid = 0;
@@ -22,7 +28,7 @@ const std::string& Booking::getEmployeeId() const
return m_employeeId;
}
std::shared_ptr<Team> Booking::getTeam() const
Team* Booking::getTeam() const
{
return m_team;
}
@@ -47,7 +53,7 @@ void Booking::setEmployeeId(const std::string& employeeId)
m_employeeId = employeeId;
}
void Booking::setTeam(std::shared_ptr<Team> team)
void Booking::setTeam(Team* team)
{
m_team = team;
}
+10 -5
View File
@@ -1,6 +1,11 @@
/*
* 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 <string>
#include <memory>
#include "Team.h"
#include "Timestamp.h"
@@ -12,24 +17,24 @@ private:
util::Timestamp m_startTime;
util::Timestamp m_endTime;
std::string m_employeeId;
std::shared_ptr<Team> m_team;
Team* m_team;
public:
Booking() : m_id("BK" + std::to_string(++m_uid)), m_startTime(), m_endTime(), m_employeeId(""), m_team(nullptr) {}
Booking(const util::Timestamp& startTime,
const util::Timestamp& endTime,
const std::string& employeeId,
std::shared_ptr<Team> team)
Team* team)
: m_id("BK" + std::to_string(++m_uid)), 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<Team> 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> team);
void setTeam(Team* team);
double getDurationInHours() const;
double getDurationInMinutes() const;
};
@@ -1,3 +1,9 @@
/*
* File: Candidate.cpp
* Description: The Candidate class stores and manages a candidates information.
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "Candidate.h"
int Candidate::m_uid = 0;
@@ -1,3 +1,9 @@
/*
* File: Candidate.h
* Description: The Candidate class stores and manages a candidates information.
* Author: Trenser
* Created: 31-Mar-2026
*/
#pragma once
#include <string>
#include "Enums.h"
@@ -1,3 +1,9 @@
/*
* File: Employee.cpp
* 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 <sstream>
#include "Employee.h"
#include "Factory.h"
@@ -79,7 +85,7 @@ const std::string& Employee::getEmployeeTeamId() const
return m_teamId;
}
std::shared_ptr<Payroll> Employee::getPayroll() const
Payroll* Employee::getPayroll() const
{
return m_payroll;
}
@@ -134,12 +140,12 @@ void Employee::setEmployeeTeamId(const std::string& teamId)
m_teamId = teamId;
}
void Employee::setEmployeePayroll(std::shared_ptr<Payroll> payroll)
void Employee::setEmployeePayroll(Payroll* payroll)
{
m_payroll = payroll;
}
void Employee::addPayslip(std::shared_ptr<Payslip> payslip)
void Employee::addPayslip(Payslip* payslip)
{
if (payslip)
{
@@ -147,7 +153,7 @@ void Employee::addPayslip(std::shared_ptr<Payslip> payslip)
}
}
void Employee::addAttendance(std::shared_ptr<Attendance> attendance)
void Employee::addAttendance(Attendance* attendance)
{
if (attendance)
{
@@ -155,7 +161,7 @@ void Employee::addAttendance(std::shared_ptr<Attendance> attendance)
}
}
void Employee::addLeave(std::shared_ptr<Leave> leave)
void Employee::addLeave(Leave* leave)
{
if (leave)
{
+16 -11
View File
@@ -1,6 +1,11 @@
/*
* 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 <string>
#include <memory>
#include <map>
#include "Payslip.h"
#include "Attendance.h"
@@ -8,9 +13,9 @@
#include "Payroll.h"
#include "Enums.h"
#include "ApplicationConfig.h"
using payslipMap = std::map<std::string, std::shared_ptr<Payslip>>;
using attendanceMap = std::map<int, std::map<std::string, std::shared_ptr<Attendance>>>;
using leaveMap = std::map<std::string, std::shared_ptr<Leave>>;
using payslipMap = std::map<std::string, Payslip*>;
using attendanceMap = std::map<int, std::map<std::string, Attendance*>>;
using leaveMap = std::map<std::string, Leave*>;
class Employee
{
@@ -24,7 +29,7 @@ protected:
Enums::AccountStatus m_accountStatus;
Enums::TeamStatus m_teamStatus;
std::string m_teamId;
std::shared_ptr<Payroll> m_payroll;
Payroll* m_payroll;
payslipMap m_payslips;
attendanceMap m_attendances;
leaveMap m_leaves;
@@ -44,7 +49,7 @@ public:
const std::string& phone,
const std::string& email,
Enums::EmployeeType employeeType,
std::shared_ptr<Payroll> payroll)
Payroll* payroll)
: m_id("EMP" + std::to_string(++m_uid)),
m_password(Config::Authentication::DEFAULT_PASSWORD),
m_name(name),
@@ -72,7 +77,7 @@ public:
Enums::AccountStatus getEmployeeAccountStatus() const;
Enums::TeamStatus getEmployeeTeamStatus() const;
const std::string& getEmployeeTeamId() const;
std::shared_ptr<Payroll> getPayroll() const;
Payroll* getPayroll() const;
const payslipMap& getEmployeePayslips() const;
const attendanceMap& getEmployeeAttendances() const;
const leaveMap& getEmployeeLeaves() const;
@@ -83,10 +88,10 @@ public:
void setEmployeeAccountStatus(Enums::AccountStatus status);
void setEmployeeTeamStatus(Enums::TeamStatus status);
void setEmployeeTeamId(const std::string& teamId);
void setEmployeePayroll(std::shared_ptr<Payroll> payroll);
void addPayslip(std::shared_ptr<Payslip> payslip);
void addAttendance(std::shared_ptr<Attendance> attendance);
void addLeave(std::shared_ptr<Leave> leave);
void setEmployeePayroll(Payroll* payroll);
void addPayslip(Payslip* payslip);
void addAttendance(Attendance* attendance);
void addLeave(Leave* leave);
Enums::EmployeeType getEmployeeType() const;
virtual std::string serialize() const;
static std::shared_ptr<Employee> deserialize(const std::string&);
@@ -1 +1,7 @@
/*
* File: Faq.h
* Description: Faq model class.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include "Faq.h"
+6
View File
@@ -1,3 +1,9 @@
/*
* File: Faq.h
* Description: Faq model class.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
class Faq
@@ -1 +1,7 @@
/*
* File: FinanceExecutive.h
* Description: FinanceExecutive model class.
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "FinanceExecutive.h"
@@ -1,3 +1,9 @@
/*
* File: FinanceExecutive.h
* Description: FinanceExecutive model class.
* Author: Trenser
* Created: 31-Mar-2026
*/
#pragma once
#include "Employee.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
*/
#include <sstream>
#include "GeneralEmployee.h"
#include "Factory.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"
@@ -12,7 +18,7 @@ public:
GeneralEmployee(const std::string& name,
const std::string& phone,
const std::string& email,
std::shared_ptr<Payroll> payroll,
Payroll* payroll,
Enums::EmployeeDesignation designation)
: Employee(name,
phone,
@@ -1 +1,7 @@
/*
* File: HRManager.cpp
* Description: HRManager model class.
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "HRManager.h"
@@ -1,3 +1,9 @@
/*
* File: HRManager.h
* Description: HRManager model class.
* Author: Trenser
* Created: 31-Mar-2026
*/
#pragma once
#include "Employee.h"
@@ -1 +1,7 @@
/*
* File: ITExecutive.cpp
* Description: ITExecutive model class.
* Author: Trenser
* Created: 31-Mar-2026
*/
#include "ITExecutive.h"
@@ -1,3 +1,9 @@
/*
* File: ITExecutive.h
* Description: ITExecutive model class.
* Author: Trenser
* Created: 31-Mar-2026
*/
#pragma once
#include "Employee.h"
@@ -1,3 +1,10 @@
/*
File: JobListing.cpp
* Description : Represents a job opening along with its details and applied candidates.
* Author : Trenser
* Created : 01-Apr-2026
*/
#include "JobListing.h"
int JobListing::m_uid = 0;
@@ -1,10 +1,17 @@
/*
File: JobListing.h
* Description : Represents a job opening along with its details and applied candidates.
* Author : Trenser
* Created : 01-Apr-2026
*/
#pragma once
#include <string>
#include <map>
#include <memory>
#include "Candidate.h"
#include "Enums.h"
using candidateMap = std::map<std::string, std::shared_ptr<Candidate>>;
using candidateMap = std::map<std::string, Candidate*>;
class JobListing
{
@@ -1,3 +1,10 @@
/*
File: Leave.cpp
* Description : Stores information related to an employees leave application.
* Author : Trenser
* Created : 31-Mar-2026
*/
#include "Leave.h"
int Leave::m_uid = 0;
@@ -1,3 +1,10 @@
/*
File: Leave.h
* Description : Stores information related to an employees leave application.
* Author : Trenser
* Created : 31-Mar-2026
*/
#pragma once
#include <string>
#include "Enums.h"
@@ -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;
+7
View File
@@ -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 <string>
#include "Timestamp.h"
@@ -1,3 +1,10 @@
/*
File: Notification.cpp
* Description : Represents an employee notification with message and status details.
* Author : Trenser
* Created : 31-Mar-2026
*/
#include "Notification.h"
int Notification::m_uid = 0;
@@ -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 <string>
#include "Enums.h"
@@ -1,5 +1,10 @@
#include <sstream>
#include <stdexcept>
/*
File: Payroll.cpp
* Description : Stores payroll and salary breakdown details for an employee.
* Author : Trenser
* Created : 31-Mar-2026
*/
#include "Payroll.h"
#include "StringHelper.h"
#include "Factory.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 <string>
#include <memory>
@@ -1,3 +1,10 @@
/*
File: Payslip.cpp
* Description : Models a payslip entity that stores salary information.
* Author : Trenser
* Created : 31-Mar-2026
*/
#include <sstream>
#include "Payslip.h"
#include "StringHelper.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 <memory>
#include <string>
+8 -1
View File
@@ -1,3 +1,10 @@
/*
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"
int Room::m_uid = 0;
@@ -27,7 +34,7 @@ void Room::setRoomName(const std::string& name)
m_name = name;
}
void Room::addBooking(std::shared_ptr<Booking> booking)
void Room::addBooking(Booking* booking)
{
if (booking)
{
+9 -2
View File
@@ -1,9 +1,16 @@
/*
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 <string>
#include <map>
#include <memory>
#include "Booking.h"
using bookingMap = std::map<std::string, std::shared_ptr<Booking>>;
using bookingMap = std::map<std::string, Booking*>;
class Room
{
@@ -20,5 +27,5 @@ public:
const bookingMap& getBookings() const;
void setRoomId(const std::string& id);
void setRoomName(const std::string& name);
void addBooking(std::shared_ptr<Booking> booking);
void addBooking(Booking* booking);
};
@@ -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"
@@ -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"
+9 -2
View File
@@ -1,3 +1,10 @@
/*
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"
int Team::m_uid = 0;
@@ -12,7 +19,7 @@ const std::string& Team::getTeamName() const
return m_name;
}
std::shared_ptr<Employee> Team::getTeamLead() const
Employee* Team::getTeamLead() const
{
return m_lead;
}
@@ -37,7 +44,7 @@ void Team::setTeamName(const std::string& name)
m_name = name;
}
void Team::setTeamLead(std::shared_ptr<Employee> lead)
void Team::setTeamLead(Employee* lead)
{
m_lead = lead;
}
+12 -5
View File
@@ -1,9 +1,16 @@
/*
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 <string>
#include <map>
#include <memory>
#include "Employee.h"
using employeeMap = std::map<std::string, std::shared_ptr<Employee>>;
using employeeMap = std::map<std::string, Employee*>;
class Team
{
@@ -11,25 +18,25 @@ private:
static int m_uid;
std::string m_id;
std::string m_name;
std::shared_ptr<Employee> m_lead;
Employee* m_lead;
employeeMap m_employees;
int m_maximumNumberOfEmployees;
public:
Team() : m_id("TM" + std::to_string(++m_uid)), m_name(""), m_lead(nullptr), m_maximumNumberOfEmployees(0) {}
Team(
const std::string& name,
std::shared_ptr<Employee> lead,
Employee* lead,
int maximumNumberOfEmployees)
: m_id("TM" + std::to_string(++m_uid)), m_name(name), m_lead(lead), m_maximumNumberOfEmployees(maximumNumberOfEmployees) {
}
const std::string& getTeamId() const;
const std::string& getTeamName() const;
std::shared_ptr<Employee> 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<Employee> lead);
void setTeamLead(Employee* lead);
void setEmployeesInTeam(const employeeMap& employees);
void setMaximumNumberOfEmployeesInTeam(int maximumNumberOfEmployees);
};
@@ -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"
@@ -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"
@@ -1,3 +1,10 @@
/*
File: Ticket.cpp
* Description : Represents a support ticket with its associated details and status.
* Author : Trenser
* Created : 31-Mar-2026
*/
#include "Ticket.h"
int Ticket::m_uid = 0;
@@ -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 <string>
#include "Enums.h"
@@ -1 +1,8 @@
/*
* File: ApplicationConfig.cpp
* Description: Global Application Config
* Author: Trenser
* Created: 06-Apr-2026
*/
#include "ApplicationConfig.h"
@@ -1,3 +1,10 @@
/*
* File: ApplicationConfig.h
* Description: Global Application Config
* Author: Trenser
* Created: 06-Apr-2026
*/
#pragma once
namespace Config
@@ -1 +1,8 @@
/*
* File: AttendanceManagementService.cpp
* Description: Handles Attendance related operations
* Author: Trenser
* Created: 30-Apr-2026
*/
#include "AttendanceManagementService.h"
@@ -1,3 +1,10 @@
/*
* File: AttendanceManagementService.h
* Description: Handles Attendance related operations
* Author: Trenser
* Created: 30-Apr-2026
*/
#pragma once
class AttendanceManagementService
{
@@ -1,7 +1,25 @@
/*
* File: AuthenticationManagementService.cpp
* Description: Handles authentication related operations
* Author: Trenser
* Created: 30-Mar-2026
*/
#include <stdexcept>
#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();
@@ -29,7 +47,7 @@ AuthenticationDTO AuthenticationManagementService::login(const std::string& emai
employeeType = employee.second->getEmployeeType();
if (employeeType == Enums::EmployeeType::GENERAL)
{
std::shared_ptr<GeneralEmployee> generalEmployee = std::dynamic_pointer_cast<GeneralEmployee>(employee.second);
GeneralEmployee* generalEmployee = dynamic_cast<GeneralEmployee*>(employee.second);
if (generalEmployee)
{
employeeDesignation = generalEmployee->getDesignation();
@@ -51,24 +69,46 @@ AuthenticationDTO AuthenticationManagementService::login(const std::string& emai
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<Employee> authenticatedUser = m_dataStore.getAuthenticatedEmployee();
if (authenticatedUser)
{
authenticatedUser->setEmployeePassword(password);
}
else
{
throw std::runtime_error("User not found");
}
Employee* 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.getAuthenticatedEmployee()) {
if (m_dataStore.getAuthenticatedEmployee())
{
m_dataStore.getAuthenticatedEmployee() = nullptr;
}
else {
else
{
throw std::runtime_error("No user currently logged In...");
}
}
@@ -1,3 +1,10 @@
/*
* File: AuthenticationManagementService.h
* Description: Handles authentication related operations
* Author: Trenser
* Created: 30-Mar-2026
*/
#pragma once
#include <string>
#include <map>
@@ -19,4 +26,3 @@ public:
void logout();
void changePassword(const std::string&);
};
@@ -1 +1,8 @@
/*
* File: BookingManagementService.cpp
* Description: Handle operations related to booking meetings
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "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
{
@@ -1 +1,8 @@
/*
* File: LeaveManagementService.cpp
* Description: Handle operations related to leaves
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "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
{
@@ -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"
@@ -7,6 +14,6 @@ void LogService::log(const std::string& message)
{
DataStore& dataStore = DataStore::getInstance();
logMap& logs = dataStore.getLogs();
std::shared_ptr<Log> log = Factory::getObject<Log>(message);
Log* log = Factory::getObject<Log>(message);
logs.emplace(std::make_pair(log->getTimestamp(), log));
}
@@ -1,3 +1,10 @@
/*
* File: Log.h
* Description: Handle operations related to logging
* Author: Trenser
* Created: 01-Apr-2026
*/
#pragma once
#include "Log.h"
@@ -1 +1,8 @@
/*
* File: NotificationManagementService.cpp
* Description: Handle operations related to notifications
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "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
{
};
@@ -1,3 +1,10 @@
/*
* File: PayslipManagementService.cpp
* Description: Handle operations related to employee payslips
* Author: Trenser
* Created: 30-Mar-2026
*/
#include <stdexcept>
#include <algorithm>
#include "PayslipManagementService.h"
@@ -1,3 +1,10 @@
/*
* File: PayslipManagementService.h
* Description: Handle operations related to employee payslips
* Author: Trenser
* Created: 30-Mar-2026
*/
#pragma once
#include <string>
#include<stdexcept>
@@ -1 +1,8 @@
/*
* File: TalentAcquisitionManagementService.cpp
* Description: Handle operations related to Talent Acquisition
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "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
{
};
@@ -1 +1,8 @@
/*
* File: TeamManagementService.cpp
* Description: Handle operations related to Team Management
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "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
{
@@ -1 +1,8 @@
/*
* File: TicketManagementService.h
* Description: Handle operations related to Ticket Management
* Author: Trenser
* Created: 30-Mar-2026
*/
#include "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
{
@@ -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
#include <string>
@@ -1,3 +1,10 @@
/*
* File: InputHelper.h
* Description: Handles input validation and error handling
* Author: Smitha
* Created: 08-Apr-2026
*/
#pragma once
#include <iostream>
#include <limits>
@@ -6,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 <typename T>
inline void read(T& value)
{
@@ -17,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()
{
std::cout << std::endl;
@@ -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;
@@ -1,3 +1,10 @@
/*
* File: OutputHelper.h
* Description: Provides functions to help with console output.
* Author: Trenser
* Created: 01-04-2026
*/
#pragma once
#include <iostream>
@@ -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 <sstream>
#include <iomanip>
#include <stdexcept>
#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{};
@@ -71,36 +137,101 @@ int util::Timestamp::getDay() const
return timeStruct.tm_mday;
}
/*
* 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;
@@ -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 <ctime>
#include <string>
@@ -1,8 +1,25 @@
/*
* File: Validator.cpp
* Description: Validates inputs like phone number, email, password
* Author: Trenser
* Created: 01-Apr-2026
*/
#include <string>
#include <cctype>
#include "Validator.h"
#include "Employee.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 +33,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)
@@ -33,6 +59,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)
{
@@ -1,3 +1,10 @@
/*
* File: Validator.h
* Description: Validates inputs like phone number, email, password
* Author: Trenser
* Created: 01-Apr-2026
*/
#pragma once
#include<string>
#include<map>
@@ -1,9 +1,25 @@
/*
* File: AdminMenu.cpp
* Description: Handles user-related operations such as creation, authentication, and validation.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "AdminMenu.h"
#include"InputHelper.h"
#include"OutputHelper.h"
#include "MenuHelper.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;
@@ -28,6 +44,15 @@ void AdminMenu::run()
}
}
/*
* Function: AdminMenu::handleOperation
* Description: Processes the administrators 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)
@@ -1,13 +1,19 @@
/*
* File: AdminMenu.h
* Description: Declaration of the AdminMenu class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class AdminMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
AdminMenu() :m_zenvyController(std::make_shared<ZenvyController>()) {};
AdminMenu() :m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,3 +1,10 @@
/*
* File: EmployeeMenu.cpp
* Description: Implements the EmployeeMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include<iomanip>
#include "EmployeeMenu.h"
@@ -5,6 +12,14 @@
#include "OutputHelper.h"
#include "MenuHelper.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;
@@ -29,6 +44,15 @@ void EmployeeMenu::run()
}
}
/*
* Function: EmployeeMenu::handleOperation
* Description: Handles the employees 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)
@@ -1,13 +1,19 @@
/*
* File: EmployeeMenu.h
* Description: Declaration of the EmployeeMenu class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class EmployeeMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController m_zenvyController;
public:
EmployeeMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
EmployeeMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,3 +1,10 @@
/*
* File: FinanceExecutiveMenu.cpp
* Description: Implements the FinanceExecutiveMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "FinanceExecutiveMenu.h"
#include "InputHelper.h"
@@ -5,6 +12,14 @@
#include "MenuHelper.h"
#include "Timestamp.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;
@@ -52,15 +67,15 @@ void FinanceExecutiveMenu::updatePayroll()
}
}
void FinanceExecutiveMenu::generatePayslips()
{
util::Timestamp currentTimestamp;
util::clear();
m_zenvyController->generatePayslips();
std::cout << "Generated payslips for the month of " << currentTimestamp.getMonth() << "-" << currentTimestamp.getYear() << " successfully.";
util::pressEnter();
}
/*
* Function: FinanceExecutiveMenu::handleOperation
* Description: Handles the finance executives 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)
@@ -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<memory>
#include<iostream>
@@ -8,9 +15,9 @@
class FinanceExecutiveMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
FinanceExecutiveMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
FinanceExecutiveMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
void updatePayroll();
@@ -1,9 +1,24 @@
/*
* File: HRManagerMenu.cpp
* Description: Implements the HRManagerMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "HRManagerMenu.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.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;
@@ -28,6 +43,15 @@ void HRManagerMenu::run()
}
}
/*
* Function: HRManagerMenu::handleOperation
* Description: Handles the HR managers 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)
@@ -1,13 +1,19 @@
/*
* File: HRManagerMenu.h
* Description: Declaration of the EmployeeMenu class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class HRManagerMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
HRManagerMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
HRManagerMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,9 +1,24 @@
/*
* File: ITExecutiveMenu.cpp
* Description: Implements the ITExecutiveMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "ITExecutiveMenu.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.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;
@@ -28,6 +43,15 @@ void ITExecutiveMenu::run()
}
}
/*
* Function: ITExecutiveMenu::handleOperation
* Description: Handles the IT executives 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)
@@ -1,13 +1,19 @@
/*
* File: ITExecutiveMenu.h
* Description: Declaration of the ITExecutiveMenu class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class ITExecutiveMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
ITExecutiveMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
ITExecutiveMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,9 +1,24 @@
/*
* File: TalentExecutiveMenu.cpp
* Description: Implements the TalentExecutiveMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "TalentExecutiveMenu.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.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;
@@ -28,6 +43,15 @@ void TalentExecutiveMenu::run()
}
}
/*
* Function: TalentExecutiveMenu::handleOperation
* Description: Handles the talent executives 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)
@@ -1,13 +1,19 @@
/*
* File: TalentExecutiveMenu.h
* Description: Declaration of the TalentExecutiveMenu class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class TalentExecutiveMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
TalentExecutiveMenu() : m_zenvyController(std::make_shared < ZenvyController>()) {};
TalentExecutiveMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,9 +1,24 @@
/*
* File: TeamExecutiveMenu.cpp
* Description: Implements the TeamExecutiveMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "TeamExecutiveMenu.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.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;
@@ -28,6 +43,15 @@ void TeamExecutiveMenu::run()
}
}
/*
* Function: TeamExecutiveMenu::handleOperation
* Description: Handles the team executives 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)
@@ -1,13 +1,19 @@
/*
* File: TeamExecutiveMenu.h
* Description: Declaration of the TeamExecutiveMenu and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class TeamExecutiveMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
TeamExecutiveMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
TeamExecutiveMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,9 +1,24 @@
/*
* File: TeamLeadMenu.cpp
* Description: Implements the TeamLeadMenu class functions including menu loop and operation handling.
* Author: Trenser
* Created: 02-Apr-2026
*/
#include <iostream>
#include "TeamLeadMenu.h"
#include "InputHelper.h"
#include "OutputHelper.h"
#include "MenuHelper.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;
@@ -28,6 +43,15 @@ void TeamLeadMenu::run()
}
}
/*
* Function: TeamLeadMenu::handleOperation
* Description: Handles the team leads 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)
@@ -1,13 +1,19 @@
/*
* File: TeamLeadMenu.h
* Description: Declaration of the TeamLeadMenu class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include<memory>
#include"ZenvyController.h"
class TeamLeadMenu
{
private:
std::shared_ptr<ZenvyController> m_zenvyController;
ZenvyController* m_zenvyController;
public:
TeamLeadMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
TeamLeadMenu() : m_zenvyController(new ZenvyController()) {};
void run();
bool handleOperation(int);
};
@@ -1,6 +1,12 @@
/*
* 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 <iostream>
#include <utility>
#include <memory>
#include <stdexcept>
#include "UserInterface.h"
#include "AdminMenu.h"
@@ -16,6 +22,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;
@@ -58,6 +72,15 @@ void UserInterface::run()
}
}
/*
* Function: UserInterface::handleOperation
* Description: Handles the users 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)
@@ -75,6 +98,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;
@@ -118,7 +149,6 @@ void UserInterface::login()
}
}
util::clear();
// Route to appropriate menu
switch (employeeType)
{
case Enums::EmployeeType::ADMIN:
@@ -178,3 +208,16 @@ void UserInterface::login()
}
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;
}
@@ -1,5 +1,11 @@
/*
* File: UserInterface.h
* Description: Declaration of the UserInterface class and related functions.
* Author: Trenser
* Created: 02-Apr-2026
*/
#pragma once
#include <memory>
#include <utility>
#include "AdminMenu.h"
#include "EmployeeMenu.h"
@@ -14,27 +20,28 @@
class UserInterface
{
private:
std::shared_ptr<ZenvyController> m_controller;
std::shared_ptr<EmployeeMenu> m_employeeMenu;
std::shared_ptr<AdminMenu> m_adminMenu;
std::shared_ptr<FinanceExecutiveMenu> m_financeExecutiveMenu;
std::shared_ptr<HRManagerMenu> m_hrManagerMenu;
std::shared_ptr<ITExecutiveMenu> m_itExecutiveMenu;
std::shared_ptr<TalentExecutiveMenu> m_talentExecutiveMenu;
std::shared_ptr<TeamExecutiveMenu> m_teamExecutiveMenu;
std::shared_ptr<TeamLeadMenu> m_teamLeadMenu;
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<ZenvyController>()),
m_employeeMenu(std::make_shared<EmployeeMenu>()),
m_adminMenu(std::make_shared<AdminMenu>()),
m_financeExecutiveMenu(std::make_shared<FinanceExecutiveMenu>()),
m_hrManagerMenu(std::make_shared<HRManagerMenu>()),
m_itExecutiveMenu(std::make_shared<ITExecutiveMenu>()),
m_talentExecutiveMenu(std::make_shared<TalentExecutiveMenu>()),
m_teamExecutiveMenu(std::make_shared<TeamExecutiveMenu>()),
m_teamLeadMenu(std::make_shared<TeamLeadMenu>()) {};
void run();
bool handleOperation(int choice);
void login();
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();
};