diff --git a/Trenser.FileManager/Trenser.FileManager/FileManager.h b/Trenser.FileManager/Trenser.FileManager/FileManager.h index 1c9f3b2..198934d 100644 --- a/Trenser.FileManager/Trenser.FileManager/FileManager.h +++ b/Trenser.FileManager/Trenser.FileManager/FileManager.h @@ -2,7 +2,7 @@ #include #include "FileIO.h" -template using objects = std::map>; +template using objects = std::map; template class FileManager diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 9584cce..e4d91bb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -15,14 +15,13 @@ * password - password of the employee * Returns: * Tuple - login status, employee type, employee designation - * login status - success or failed + * 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); + return m_authenticationManagementService->login(email, password); } /* @@ -36,7 +35,7 @@ AuthenticationDTO ZenvyController::login(const std::string& email, const std::st void ZenvyController::logout() { - m_authenticationManagementService->logout(); + m_authenticationManagementService->logout(); } /* @@ -50,73 +49,73 @@ void ZenvyController::logout() void ZenvyController::changePassword(const std::string& password) { - m_authenticationManagementService->changePassword(password); + m_authenticationManagementService->changePassword(password); } //Employee Management -void ZenvyController::createEmployee(Enums::EmployeeType employeeType, Enums::EmployeeDesignation employeeDesignation, const std::string& email, const std::string& name, const std::string& phone) +void ZenvyController::createEmployee(Enums::EmployeeType employeeType, Enums::EmployeeDesignation employeeDesignation, const std::string& email, const std::string& name, const std::string& phone) const { - m_employeeManagementService->createEmployee(employeeType, employeeDesignation, email, name, phone); + m_employeeManagementService->createEmployee(employeeType, employeeDesignation, email, name, phone); } -bool ZenvyController::deactivateEmployee(const std::string& id) +bool ZenvyController::deactivateEmployee(const std::string& id) const { - return m_employeeManagementService->deactivateEmployee(id); + return m_employeeManagementService->deactivateEmployee(id); } void ZenvyController::updateProfile(const std::string& name, const std::string& phone) { - m_employeeManagementService->updateProfile(name,phone); + m_employeeManagementService->updateProfile(name, phone); } -std::pair>> ZenvyController::searchEmployee(const std::string& name) +std::pair> ZenvyController::searchEmployee(const std::string& name) { - return m_employeeManagementService->searchEmployee(name); + return m_employeeManagementService->searchEmployee(name); } -std::shared_ptr ZenvyController::getCurrentEmployee() +const Employee* ZenvyController::getCurrentEmployee() const { - return m_employeeManagementService->getCurrentEmployee(); + return m_employeeManagementService->getCurrentEmployee(); } -bool ZenvyController::updateDesignation(const std::string& id,Enums::EmployeeDesignation designation) +bool ZenvyController::updateDesignation(const std::string& id, Enums::EmployeeDesignation designation) { - return m_employeeManagementService->updateDesignation(id,designation); + return m_employeeManagementService->updateDesignation(id, designation); } -std::vector> ZenvyController::getShorlistedCandidates() +std::vector ZenvyController::getShorlistedCandidates() const { - return m_employeeManagementService->getShorlistedCandidates(); + return m_employeeManagementService->getShorlistedCandidates(); } //Payslip Management void ZenvyController::updateSalary(const std::string& employeeId, double basicSalary, double houseRentAllowance, double foodAllowance, double employeePFContribution, double employerPFContribution) { - m_payslipManagementService->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution); + m_payslipManagementService->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution); } void ZenvyController::generatePayslips() { - m_payslipManagementService->generatePayslips(); + m_payslipManagementService->generatePayslips(); } void ZenvyController::loadStates() { - m_employeeManagementService->loadEmployees(); - m_payslipManagementService->loadPayrolls(); - m_payslipManagementService->loadPayslips(); + m_employeeManagementService->loadEmployees(); + m_payslipManagementService->loadPayrolls(); + m_payslipManagementService->loadPayslips(); } void ZenvyController::persistStates() { - m_employeeManagementService->saveEmployees(); - m_payslipManagementService->savePayrolls(); - m_payslipManagementService->savePayslips(); + m_employeeManagementService->saveEmployees(); + m_payslipManagementService->savePayrolls(); + m_payslipManagementService->savePayslips(); } -std::pair, std::shared_ptr> ZenvyController::getPayslipForMonth(const std::string& employeeId, int year, int month) +std::pair ZenvyController::getPayslipForMonth(const std::string& employeeId, int year, int month) { - return m_payslipManagementService->getPayslipForMonth(employeeId, year, month); + return m_payslipManagementService->getPayslipForMonth(employeeId, year, month); } ZenvyController::~ZenvyController() @@ -131,4 +130,4 @@ ZenvyController::~ZenvyController() delete m_talentAcquisitionManagementService; delete m_teamManagementService; delete m_ticketManagementService; -} +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index c6151eb..3f503d4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -22,55 +22,56 @@ class ZenvyController { private: - 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; + 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(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); - void logout(); - void changePassword(const std::string&); + ZenvyController() : + 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()) {}; + ~ZenvyController(); - //Employee Management - void createEmployee(Enums::EmployeeType, Enums::EmployeeDesignation, const std::string&, const std::string&, const std::string&); - bool deactivateEmployee(const std::string&); - std::shared_ptr getCurrentEmployee(); - void updateProfile(const std::string&,const std::string&); - std::pair>> searchEmployee(const std::string&); - bool updateDesignation(const std::string&,Enums::EmployeeDesignation); - std::vector> getShorlistedCandidates(); + //Authentication + AuthenticationDTO login(const std::string& email, const std::string& password); + void logout(); + void changePassword(const std::string&); - template - Employees getEmployees(Types ...types) - { - return m_employeeManagementService->getEmployees(types...); - } + //Employee Management + void createEmployee(Enums::EmployeeType, Enums::EmployeeDesignation, const std::string&, const std::string&, const std::string&) const; + bool deactivateEmployee(const std::string&) const; + const Employee* getCurrentEmployee() const; + void updateProfile(const std::string&, const std::string&); + std::pair> searchEmployee(const std::string&); + bool updateDesignation(const std::string&, Enums::EmployeeDesignation); + std::vector getShorlistedCandidates() const; - //Payslip management - void updateSalary(const std::string&, double, double, double, double, double); - void generatePayslips(); - std::pair, std::shared_ptr>getPayslipForMonth(const std::string&, int, int); + template + Employees getEmployees(Types ...types) const + { + return m_employeeManagementService->getEmployees(types...); + } - //File Management - void loadStates(); - void persistStates(); -}; + //Payslip management + void updateSalary(const std::string&, double, double, double, double, double); + void generatePayslips(); + std::pairgetPayslipForMonth(const std::string&, int, int); + + //File Management + void loadStates(); + void persistStates(); +}; \ 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 a8a23a7..4495e9d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -8,19 +8,19 @@ #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. - */ + /* + * 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; + static DataStore dataStore; + return dataStore; } /* @@ -34,7 +34,7 @@ DataStore& DataStore::getInstance() logMap& DataStore::getLogs() { - return m_logs; + return m_logs; } /* @@ -48,7 +48,7 @@ logMap& DataStore::getLogs() Employee*& DataStore::getAuthenticatedEmployee() { - return m_authenticatedEmployee; + return m_authenticatedEmployee; } /* @@ -62,7 +62,7 @@ Employee*& DataStore::getAuthenticatedEmployee() void DataStore::setAuthenticatedEmployee(Employee* authenticatedEmployee) { - m_authenticatedEmployee = authenticatedEmployee; + m_authenticatedEmployee = authenticatedEmployee; } /* @@ -76,12 +76,22 @@ void DataStore::setAuthenticatedEmployee(Employee* authenticatedEmployee) employeeMap& DataStore::getEmployees() { - return m_employees; + return m_employees; } payrollMap& DataStore::getPayrolls() { - return m_payrolls; + return m_payrolls; +} + +payslipMap& DataStore::getPayslips() +{ + return m_payslips; +} + +candidateMap& DataStore::getCandidates() +{ + return m_candidates; } DataStore::~DataStore() @@ -91,19 +101,25 @@ DataStore::~DataStore() delete pair.second; } m_employees.clear(); + for (auto& pair : m_payrolls) + { + delete pair.second; + } + m_payrolls.clear(); + for (auto& pair : m_payslips) + { + delete pair.second; + } + m_payslips.clear(); for (auto& pair : m_logs) { delete pair.second; } m_logs.clear(); - if (m_authenticatedEmployee) + for (auto& pair : m_candidates) { - delete m_authenticatedEmployee; - m_authenticatedEmployee = nullptr; + delete pair.second; } -} - -payslipMap& DataStore::getPayslips() -{ - return m_payslips; + m_candidates.clear(); + m_authenticatedEmployee = nullptr; } diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 957ea04..3fe7ed6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -49,7 +49,7 @@ public: DataStore& operator=(const DataStore&) = delete; DataStore(DataStore&&) = delete; DataStore& operator=(DataStore&&) = delete; - employeeMap& getEmployees(); + employeeMap& getEmployees(); payrollMap& getPayrolls(); payslipMap& getPayslips(); logMap& getLogs(); diff --git a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h index 216a823..15b829d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h +++ b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h @@ -20,11 +20,10 @@ public: * Args - constructor arguments forwarded to T's constructor * Returns: * std::shared_ptr - a shared pointer managing the newly created object - */ - - template - static T* getObject(Args&&... args) - { - return T*(std::forward(args)...); - } -}; + */; + template + static T* getObject(Args&&... args) + { + return new T(std::forward(args)...); + } +}; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h index 640a9be..214e89c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h @@ -44,6 +44,7 @@ public: m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId(""), + m_payroll(nullptr), m_employeeType(Enums::EmployeeType::GENERAL) {} Employee(const std::string& name, const std::string& phone, diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h index 3332b08..ddbf58d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h @@ -7,7 +7,6 @@ File: JobListing.h #pragma once #include #include -#include #include "Candidate.h" #include "Enums.h" using candidateMap = std::map; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp index 7ed278b..d5afbdb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp @@ -4,6 +4,7 @@ File: Payroll.cpp * Author : Trenser * Created : 31-Mar-2026 */ +#include #include "Payroll.h" #include "StringHelper.h" #include "Factory.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h index cb5e74b..ebf13ed 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h @@ -6,7 +6,6 @@ File: Payroll.h */ #pragma once #include -#include #include "Timestamp.h" class Payroll diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h index 7144570..e5e617f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h @@ -5,7 +5,6 @@ File: Payslip.h * Created : 31-Mar-2026 */ #pragma once -#include #include #include "Timestamp.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h index 3eb6934..63a52a8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h @@ -7,7 +7,6 @@ File: Room.h #pragma once #include #include -#include #include "Booking.h" using bookingMap = std::map; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h index 9296243..7afcaae 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h @@ -7,7 +7,6 @@ File: Team.h #pragma once #include #include -#include #include "Employee.h" using employeeMap = std::map; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp index ecd60d9..f0c9045 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp @@ -24,8 +24,8 @@ void EmployeeManagementService::createEmployee(Enums::EmployeeType employeeType, throw std::runtime_error("No authenticated user"); } Enums::EmployeeType authenticatedEmployeeType = authenticatedEmployee->getEmployeeType(); - Employee* employee; - Payroll* payroll; + Employee* employee = nullptr; + Payroll* payroll = nullptr; if (employeeType != Enums::EmployeeType::GENERAL && util::hasActiveEmployeeOfType(employeeType, employees)) { throw std::runtime_error("Cannot create more than one employee of type " + Enums::getEmployeeTypeString(employeeType)); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h index a292c31..d8ea1bc 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h @@ -7,23 +7,23 @@ #include "Enums.h" #include "StringHelper.h" -using Employees = std::vector>; +using Employees = std::vector; class EmployeeManagementService { private: - DataStore& m_dataStore; + DataStore& m_dataStore; public: - EmployeeManagementService() : m_dataStore(DataStore::getInstance()) {}; - void createEmployee(Enums::EmployeeType, Enums::EmployeeDesignation, const std::string&, const std::string&, const std::string&); - bool deactivateEmployee(const std::string&); - bool updateDesignation(const std::string&,Enums::EmployeeDesignation); - void updateProfile(const std::string&,const std::string&); - std::pair>> searchEmployee(const std::string&); - std::shared_ptr getCurrentEmployee(); - std::vector> getShorlistedCandidates(); - void loadEmployees(); - void saveEmployees(); + EmployeeManagementService() : m_dataStore(DataStore::getInstance()) {}; + void createEmployee(Enums::EmployeeType, Enums::EmployeeDesignation, const std::string&, const std::string&, const std::string&); + bool deactivateEmployee(const std::string&); + bool updateDesignation(const std::string&, Enums::EmployeeDesignation); + void updateProfile(const std::string&, const std::string&); + std::pair> searchEmployee(const std::string&); + const Employee* getCurrentEmployee(); + std::vector getShorlistedCandidates(); + void loadEmployees(); + void saveEmployees(); template Employees getEmployees(Types... types) @@ -52,8 +52,8 @@ public: std::sort( filteredEmployees.begin(), filteredEmployees.end(), - [](const std::shared_ptr& employeeOne, - const std::shared_ptr& employeeTwo) + [](const Employee* employeeOne, + const Employee* employeeTwo) { return util::extractNumber(employeeOne->getId()) < util::extractNumber(employeeTwo->getId()); @@ -61,4 +61,4 @@ public: ); return filteredEmployees; } -}; +}; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp index 2996d71..f06a860 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.cpp @@ -112,7 +112,7 @@ bool util::isPasswordValid(const std::string& password) return hasUpper && hasLower && hasDigit && hasSpecial; } -bool util::hasActiveEmployeeOfType(Enums::EmployeeType employeeType, const std::map> & employees) +bool util::hasActiveEmployeeOfType(Enums::EmployeeType employeeType, const std::map & employees) { for (const auto& employeePair : employees) { @@ -125,7 +125,7 @@ bool util::hasActiveEmployeeOfType(Enums::EmployeeType employeeType, const std:: return false; } -bool util::isEmailDuplicate(const std::string& email, const std::map>& employees) +bool util::isEmailDuplicate(const std::string& email, const std::map& employees) { for (const auto& employeePair : employees) { @@ -138,7 +138,7 @@ bool util::isEmailDuplicate(const std::string& email, const std::map>& employees) +bool util::isPhoneDuplicate(const std::string& phone, const std::map& employees) { for (const auto& employeePair : employees) { @@ -151,7 +151,7 @@ bool util::isPhoneDuplicate(const std::string& phone, const std::map>& employees) +bool util::isPhoneDuplicate(const std::string& phone, const std::vector& employees) { for (const auto& employee : employees) { diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h index c7d2b60..eaef165 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Validator.h @@ -4,7 +4,6 @@ * Author: Trenser * Created: 01-Apr-2026 */ - #pragma once #include #include @@ -21,8 +20,8 @@ namespace util bool isPhoneNumberValid(const std::string&); bool isEmailValid(const std::string&); bool isPasswordValid(const std::string&); - bool hasActiveEmployeeOfType(Enums::EmployeeType, const std::map>&); - bool isEmailDuplicate(const std::string&, const std::map>&); - bool isPhoneDuplicate(const std::string&, const std::map>&); - bool isPhoneDuplicate(const std::string&, const std::vector>&); + bool hasActiveEmployeeOfType(Enums::EmployeeType, const std::map&); + bool isEmailDuplicate(const std::string&, const std::map&); + bool isPhoneDuplicate(const std::string&, const std::map&); + bool isPhoneDuplicate(const std::string&, const std::vector&); } \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h index 7cee5cb..d7517f1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h @@ -1,6 +1,5 @@ #pragma once #include -#include #include #include #include @@ -22,7 +21,7 @@ void addShortlistedCandidateAsEmployee(const ZenvyController* m_zenvyController) inline void viewPayslipHistory(ZenvyController* m_zenvyController) { - auto employeePayslips = m_zenvyController->getCurrentEmployee()->getEmployeePayslips(); + auto& employeePayslips = m_zenvyController->getCurrentEmployee()->getEmployeePayslips(); util::clear(); if (employeePayslips.empty()) { @@ -147,7 +146,7 @@ inline void updateProfile(ZenvyController* m_zenvyController) } } -inline std::string selectEmployeeId(std::vector& allEmployees) +inline std::string selectEmployeeId(const std::vector& allEmployees) { int choice; std::map employeeList; @@ -353,7 +352,7 @@ inline void viewPayslip(ZenvyController* m_zenvyController) if (payroll && payslip) { util::clear(); - std::cout << "Payslip for " << employee->getEmployeeName() << " (" << year << "-" << std::setw(2) << std::setfill('0') << month << ")\n\n"; + std::cout << "Payslip for " << employee->getEmployeeName() << " (" << year << "-" << std::setw(2) << month << ")\n\n"; std::cout << "Basic Salary : " << payroll->getBasicSalary() << "\n"; std::cout << "House Rent Allowance : " << payroll->getHouseRentAllowance() << "\n"; std::cout << "Food Allowance : " << payroll->getFoodAllowance() << "\n";