From 07bd979685ccf0ddcd19c194032b88660f62992e Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Tue, 7 Apr 2026 10:51:38 +0530 Subject: [PATCH] Set up employee management codebase SRS02 : Employee Management - Renamed EmployeeManagememtService to EmployeeManagementService - Added basic employee management service structure - Connected employee management into controller and datastore - Updated project config files - Added auto ID generation across models - Added payroll-related config constants Smitha Mohan --- .../Trenser.Zenvy/Trenser.Zenvy.vcxproj | 4 +-- .../Trenser.Zenvy.vcxproj.filters | 12 ++++---- .../controllers/ZenvyController.cpp | 19 ++++++++++++ .../controllers/ZenvyController.h | 12 ++++++-- .../Trenser.Zenvy/datastores/DataStore.cpp | 1 + Trenser.Zenvy/Trenser.Zenvy/models/Admin.h | 11 +++++++ .../Trenser.Zenvy/models/Announcement.cpp | 2 ++ .../Trenser.Zenvy/models/Announcement.h | 8 ++--- .../Trenser.Zenvy/models/Attendance.cpp | 2 ++ .../Trenser.Zenvy/models/Attendance.h | 8 ++--- .../Trenser.Zenvy/models/Booking.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Booking.h | 8 ++--- .../Trenser.Zenvy/models/Candidate.cpp | 2 ++ .../Trenser.Zenvy/models/Candidate.h | 8 ++--- .../Trenser.Zenvy/models/Employee.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Employee.h | 8 ++--- .../Trenser.Zenvy/models/FinanceExecutive.h | 12 ++++++++ .../Trenser.Zenvy/models/GeneralEmployee.h | 2 +- .../Trenser.Zenvy/models/HRManager.h | 11 +++++++ .../Trenser.Zenvy/models/ITExecutive.h | 11 +++++++ .../Trenser.Zenvy/models/JobListing.cpp | 2 ++ .../Trenser.Zenvy/models/JobListing.h | 8 ++--- Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Leave.h | 8 ++--- .../Trenser.Zenvy/models/Notification.cpp | 2 ++ .../Trenser.Zenvy/models/Notification.h | 8 ++--- .../Trenser.Zenvy/models/Payroll.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h | 8 ++--- .../Trenser.Zenvy/models/Payslip.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h | 5 ++-- Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Room.h | 5 ++-- .../Trenser.Zenvy/models/TalentExecutive.h | 11 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Team.h | 7 +++-- .../Trenser.Zenvy/models/TeamExecutive.h | 11 +++++++ Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp | 2 ++ Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h | 7 +++-- .../services/ApplicationConfig.h | 29 +++++++++++++++++++ .../services/EmployeeManagememtService.cpp | 1 - .../services/EmployeeManagememtService.h | 5 ---- .../services/EmployeeManagementService.cpp | 17 +++++++++++ .../services/EmployeeManagementService.h | 19 ++++++++++++ .../services/PayslipManagementService.h | 6 +++- 44 files changed, 251 insertions(+), 65 deletions(-) delete mode 100644 Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp delete mode 100644 Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h create mode 100644 Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp create mode 100644 Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj index 4424458..7b35079 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj @@ -150,7 +150,7 @@ - + @@ -204,7 +204,7 @@ - + diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters index 8a20aa6..d9514f7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters @@ -39,9 +39,6 @@ Services - - Services - Services @@ -192,14 +189,14 @@ Services + + Services + Services - - Services - Services @@ -338,6 +335,9 @@ Services + + Services + diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 3d97204..e7f4e30 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -15,3 +15,22 @@ void ZenvyController::changePassword(const std::string& password) { m_authenticationManagementService->changePassword(password); } + +//Employee Management +void ZenvyController::createEmployee(Enums::EmployeeType employeeType, const std::string& email, const std::string& password, const std::string& name, const std::string& phone) +{ + m_employeeManagementService->createEmployee(employeeType, email, password, name, phone); +} + +bool ZenvyController::deactivateEmployee(const std::string& id) +{ + return m_employeeManagementService->deactivateEmployee(id); +} + +Employees EmployeeManagementService::getEmployees() +{ +} + +std::shared_ptr EmployeeManagementService::getEmployee(const std::string& id) +{ +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index 1a5c77b..89ba319 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -4,7 +4,7 @@ #include "AuthenticationManagementService.h" #include "AttendanceManagementService.h" #include "BookingManagementService.h" -#include "EmployeeManagememtService.h" +#include "EmployeeManagementService.h" #include "LeaveManagementService.h" #include "NotificationManagementService.h" #include "PayslipManagementService.h" @@ -19,7 +19,7 @@ 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_employeeManagementService; std::shared_ptr m_leaveManagementService; std::shared_ptr m_notificationManagementService; std::shared_ptr m_payslipManagementService; @@ -31,7 +31,7 @@ public: m_authenticationManagementService(std::make_shared()), m_attendanceManagementService(std::make_shared()), m_bookingManagementService(std::make_shared()), - m_employeeManagememtService(std::make_shared()), + m_employeeManagementService(std::make_shared()), m_leaveManagementService(std::make_shared()), m_notificationManagementService(std::make_shared()), m_payslipManagementService(std::make_shared()), @@ -43,4 +43,10 @@ public: AuthenticationDTO login(const std::string& email, const std::string& password); void logout(); void changePassword(const std::string&); + + //Employee Management + void createEmployee(Enums::EmployeeType, const std::string&, const std::string&, const std::string&, const std::string&); + bool deactivateEmployee(const std::string&); + Employees getEmployees(); + std::shared_ptr getEmployee(const std::string&); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index 16ddca1..e4f3c0c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -1,4 +1,5 @@ #include "DataStore.h" +#include "EmployeeManagementService.h" DataStore& DataStore::getInstance() { diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h index 97f4f4e..5233d8d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h @@ -3,4 +3,15 @@ class Admin : public Employee { + Admin() = default; + Admin( + const std::string& password, + const std::string& name, + const std::string& phone, + const std::string& email, + const std::string& teamId, + std::shared_ptr payroll + ) :Employee(password, name, phone, email, teamId, Enums::EmployeeType::GENERAL, payroll) { + }; + ~Admin() = default; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp index 01cec1a..2b61e80 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp @@ -1,5 +1,7 @@ #include "Announcement.h" +int Announcement::m_anid = 0; + 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..5d69bdb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h @@ -5,14 +5,14 @@ class Announcement { private: + static int m_anid; std::string m_id; util::Timestamp m_timestamp; std::string m_message; public: - Announcement() : m_id(""), m_timestamp(), m_message("") {} - Announcement(const std::string& id, - const std::string& message) - : m_id(id), m_message(message) {} + Announcement() : m_id("AN" + std::to_string(++m_anid)), m_timestamp(), m_message("") {} + Announcement(const std::string& message) + : m_id("AN" + std::to_string(++m_anid)), m_message(message) {} const std::string& getAnnouncementId() const; const util::Timestamp& getAnnouncementTimestamp() const; const std::string& getAnnouncementMessage() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp index 7565537..a6220dd 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp @@ -1,5 +1,7 @@ #include "Attendance.h" +int Attendance::m_aid = 0; + const std::string& Attendance::getAttendanceId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h index 3b10f5c..9f6d481 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h @@ -5,15 +5,15 @@ class Attendance { private: + static int m_aid; std::string m_id; util::Timestamp m_loginTime; util::Timestamp m_logoutTime; public: - Attendance() : m_id(""), m_loginTime(), m_logoutTime() {} - Attendance(const std::string& id, - const util::Timestamp& loginTime, + Attendance() : m_id("AD" + std::to_string(++m_aid)), m_loginTime(), m_logoutTime() {} + Attendance(const util::Timestamp& loginTime, const util::Timestamp& logoutTime) - : m_id(id), m_loginTime(loginTime), m_logoutTime(logoutTime) {} + : m_id("AD" + std::to_string(++m_aid)), m_loginTime(loginTime), m_logoutTime(logoutTime) {} const std::string& getAttendanceId() const; const util::Timestamp& getLoginTime() const; const util::Timestamp& getLogoutTime() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp index a40ed2b..4c0dcb0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp @@ -1,5 +1,7 @@ #include "Booking.h" +int Booking::m_bid = 0; + const std::string& Booking::getBookingId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h index 7e99b4a..c8bc55c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h @@ -7,19 +7,19 @@ class Booking { private: + static int m_bid; std::string m_id; util::Timestamp m_startTime; util::Timestamp m_endTime; std::string m_employeeId; std::shared_ptr m_team; public: - Booking() : m_id(""), m_startTime(), m_endTime(), m_employeeId(""), m_team(nullptr) {} - Booking(const std::string& id, - const util::Timestamp& startTime, + Booking() : m_id("BK" + std::to_string(++m_bid)), 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) - : m_id(id), m_startTime(startTime), m_endTime(endTime), m_employeeId(employeeId), m_team(team) {} + : m_id("BK" + std::to_string(++m_bid)), 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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp index e4831a4..c48c2a1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp @@ -1,5 +1,7 @@ #include "Candidate.h" +int Candidate::m_cid = 0; + const std::string& Candidate::getCandidateId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h index 257c54d..646a8ef 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h @@ -5,19 +5,19 @@ class Candidate { private: + static int m_cid; std::string m_id; std::string m_name; long int m_phone; std::string m_qualification; Enums::CandidateStatus m_status; public: - Candidate() : m_id(""), m_name(""), m_phone(0), m_qualification(""), m_status(Enums::CandidateStatus::PENDING) {} - Candidate(const std::string& id, - const std::string& name, + Candidate() : m_id("CD" + std::to_string(++m_cid)), m_name(""), m_phone(0), m_qualification(""), m_status(Enums::CandidateStatus::PENDING) {} + Candidate(const std::string& name, long int phone, const std::string& qualification, Enums::CandidateStatus status) - : m_id(id), m_name(name), m_phone(phone), m_qualification(qualification), m_status(status) {} + : m_id("CD" + std::to_string(++m_cid)), m_name(name), m_phone(phone), m_qualification(qualification), m_status(status) {} const std::string& getCandidateId() const; const std::string& getCandidateName() const; long int getCandidatePhone() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp index 4bd8c3b..57db7a9 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp @@ -1,5 +1,7 @@ #include "Employee.h" +int Employee::m_uid = 0; + const std::string& Employee::getEmployeeId() const { return m_id; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h index 3509db1..4b26cd0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h @@ -14,6 +14,7 @@ using leaveMap = std::map>; class Employee { private: + static int m_uid; std::string m_id; std::string m_password; std::string m_name; @@ -28,16 +29,15 @@ private: 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(""), m_employeeType(Enums::EmployeeType::GENERAL) {} - Employee(const std::string& id, - const std::string& password, + Employee() : m_id("EMP" + std::to_string(++m_uid)), 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& 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_employeeType(employeeType), m_payroll(payroll) { } + : m_id("EMP" + std::to_string(++m_uid)), 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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h index 8aafc69..8956d13 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/FinanceExecutive.h @@ -1,7 +1,19 @@ #pragma once +#include #include "Employee.h" class FinanceExecutive : public Employee { +public: + FinanceExecutive() = default; + FinanceExecutive( + const std::string& password, + const std::string& name, + const std::string& phone, + const std::string& email, + const std::string& teamId, + std::shared_ptr payroll + ) :Employee(password, name, phone, email, teamId, Enums::EmployeeType::GENERAL, payroll) {}; + ~FinanceExecutive() = default; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h index 6307e28..14b33a4 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/GeneralEmployee.h @@ -15,7 +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,Enums::EmployeeType::GENERAL, payroll), m_designation(designation) {} + Enums::EmployeeDesignation designation) : Employee(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/models/HRManager.h b/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h index 5e50a74..5ace8bc 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/HRManager.h @@ -3,5 +3,16 @@ class HRManager : public Employee { + HRManager() = default; + HRManager( + const std::string& password, + const std::string& name, + const std::string& phone, + const std::string& email, + const std::string& teamId, + std::shared_ptr payroll + ) :Employee(password, name, phone, email, teamId, Enums::EmployeeType::GENERAL, payroll) { + }; + ~HRManager() = default; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h index 2a61ef8..c8b1c0f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/ITExecutive.h @@ -3,5 +3,16 @@ class ITExecutive : public Employee { + ITExecutive() = default; + ITExecutive( + const std::string& password, + const std::string& name, + const std::string& phone, + const std::string& email, + const std::string& teamId, + std::shared_ptr payroll + ) :Employee(password, name, phone, email, teamId, Enums::EmployeeType::GENERAL, payroll) { + }; + ~ITExecutive() = default; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp index ba1267c..5c2f704 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.cpp @@ -1,5 +1,7 @@ #include "JobListing.h" +int JobListing::m_jid = 0; + 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..7310897 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/JobListing.h @@ -9,6 +9,7 @@ using candidateMap = std::map>; class JobListing { private: + static int m_jid; std::string m_id; std::string m_name; std::string m_description; @@ -16,14 +17,13 @@ private: int m_numberOfVacancies; candidateMap m_candidates; public: - JobListing() : m_id(""), m_name(""), m_description(""), m_status(Enums::JobListingStatus::CLOSED), m_numberOfVacancies(0) {} - JobListing(const std::string& id, - const std::string& name, + JobListing() : m_id("JL" + std::to_string(++m_jid)), m_name(""), m_description(""), m_status(Enums::JobListingStatus::CLOSED), m_numberOfVacancies(0) {} + JobListing(const std::string& name, const std::string& description, Enums::JobListingStatus status, int numberOfVacancies, const candidateMap& candidates) - : m_id(id), m_name(name), m_description(description), m_status(status), m_numberOfVacancies(numberOfVacancies), m_candidates(candidates) {} + : m_id("JL" + std::to_string(++m_jid)), m_name(name), m_description(description), m_status(status), m_numberOfVacancies(numberOfVacancies), m_candidates(candidates) {} const std::string& getJobId() const; const std::string& getJobName() const; const std::string& getJobDescription() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp index 1755bc7..1163bcb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.cpp @@ -1,5 +1,7 @@ #include "Leave.h" +int Leave::m_lid = 0; + 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..b745dbf 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Leave.h @@ -6,6 +6,7 @@ class Leave { private: + static int m_lid; std::string m_id; std::string m_employeeId; util::Timestamp m_timestamp; @@ -15,13 +16,12 @@ private: static int m_numberOfMedicalLeave; Enums::LeaveType m_leaveType; public: - Leave() : m_id(""), m_employeeId(""), m_timestamp(), m_reason(""), m_leaveType(Enums::LeaveType::GENERAL) {} - Leave(const std::string& id, - const std::string& employeeId, + Leave() : m_id("LV" + std::to_string(++m_lid)), m_employeeId(""), m_timestamp(), m_reason(""), m_leaveType(Enums::LeaveType::GENERAL) {} + Leave(const std::string& employeeId, const util::Timestamp& timestamp, const std::string& reason, Enums::LeaveType leaveType) - : m_id(id), m_employeeId(employeeId), m_timestamp(timestamp), m_reason(reason), m_leaveType(leaveType) {} + : m_id("LV" + std::to_string(++m_lid)), m_employeeId(employeeId), m_timestamp(timestamp), m_reason(reason), m_leaveType(leaveType) {} const std::string& getLeaveId() const; const std::string& getEmployeeId() const; const util::Timestamp& getTimestamp() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp index f91530a..dae35ee 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.cpp @@ -1,5 +1,7 @@ #include "Notification.h" +int Notification::m_nid = 0; + 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..000f381 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Notification.h @@ -6,18 +6,18 @@ class Notification { private: + static int m_nid; std::string m_id; std::string m_employeeId; std::string m_message; util::Timestamp m_timestamp; Enums::NotificationStatus m_notificationStatus; public: - Notification() : m_id(""), m_employeeId(""), m_message(""), m_timestamp(), m_notificationStatus(Enums::NotificationStatus::UNREAD) {} - Notification(const std::string& id, - const std::string& employeeId, + Notification() : m_id("NF" + std::to_string(++m_nid)), m_employeeId(""), m_message(""), m_timestamp(), m_notificationStatus(Enums::NotificationStatus::UNREAD) {} + Notification(const std::string& employeeId, const std::string& message, Enums::NotificationStatus notificationStatus) - : m_id(id), m_employeeId(employeeId), m_message(message), m_notificationStatus(notificationStatus) {} + : m_id("NF" + std::to_string(++m_nid)), m_employeeId(employeeId), m_message(message), m_notificationStatus(notificationStatus) {} const std::string& getNotificationId() const; const std::string& getEmployeeId() const; const std::string& getNotificationMessage() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp index eae13a1..71a3d5a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp @@ -1,5 +1,7 @@ #include "Payroll.h" +int Payroll::m_prid = 0; + 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..48215f5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h @@ -4,6 +4,7 @@ class Payroll { private: + static int m_prid; std::string m_id; double m_basicSalary; double m_houseRentAllowance; @@ -11,14 +12,13 @@ private: double m_employeePFContribution; double m_employerPFContribution; public: - Payroll() : m_id(""), m_basicSalary(0.0), m_houseRentAllowance(0.0), m_foodAllowance(0.0), m_employeePFContribution(0.0), m_employerPFContribution(0.0) {} - Payroll(const std::string& id, - double basicSalary, + Payroll() : m_id("PR" + std::to_string(++m_prid)), m_basicSalary(0.0), m_houseRentAllowance(0.0), m_foodAllowance(0.0), m_employeePFContribution(0.0), m_employerPFContribution(0.0) {} + Payroll(double basicSalary, double houseRentAllowance, double foodAllowance, double employeePFContribution, double employerPFContribution) - : m_id(id), m_basicSalary(basicSalary), m_houseRentAllowance(houseRentAllowance), m_foodAllowance(foodAllowance), m_employeePFContribution(employeePFContribution), m_employerPFContribution(employerPFContribution) {} + : m_id("PR" + std::to_string(++m_prid)), m_basicSalary(basicSalary), m_houseRentAllowance(houseRentAllowance), m_foodAllowance(foodAllowance), m_employeePFContribution(employeePFContribution), m_employerPFContribution(employerPFContribution) {} const std::string& getPayrollId() const; double getBasicSalary() const; double getHouseRentAllowance() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp index 3daf4b9..fd40ee6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.cpp @@ -1,5 +1,7 @@ #include "Payslip.h" +int Payslip::m_pid = 0; + 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..78e37b1 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payslip.h @@ -4,11 +4,12 @@ class Payslip { private: + static int m_pid; std::string m_id; double m_salary; public: - Payslip() : m_id(""), m_salary(0.0) {} - Payslip(const std::string& id, double salary) : m_id(id), m_salary(salary) {} + Payslip() : m_id("PS" + std::to_string(++m_pid)), m_salary(0.0) {} + Payslip(const double salary) : m_id("PS" + std::to_string(++m_pid)), m_salary(salary) {} const std::string& getPayslipId() const; double getSalary() const; void setPayslipId(const std::string& id); diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp index 9fcd521..8134102 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.cpp @@ -1,5 +1,7 @@ #include "Room.h" +int Room::m_rid = 0; + 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..e0084e9 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Room.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Room.h @@ -8,12 +8,13 @@ using bookingMap = std::map>; class Room { private: + static int m_rid; std::string m_id; std::string m_name; bookingMap m_bookings; public: - Room() : m_id(""), m_name("") {} - Room(const std::string& id, const std::string& name) : m_id(id), m_name(name) {} + Room() : m_id("RM" + std::to_string(++m_rid)), m_name("") {} + Room(const std::string& name) : m_id("RM" + std::to_string(++m_rid)), m_name(name) {} const std::string& getRoomId() const; const std::string& getRoomName() const; const bookingMap& getBookings() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h index fcbfbcd..88c5018 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TalentExecutive.h @@ -3,5 +3,16 @@ class TalentExecutive : public Employee { + TalentExecutive() = default; + TalentExecutive( + const std::string& password, + const std::string& name, + const std::string& phone, + const std::string& email, + const std::string& teamId, + std::shared_ptr payroll + ) :Employee(password, name, phone, email, teamId, Enums::EmployeeType::GENERAL, payroll) { + }; + ~TalentExecutive() = default; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp index a6848b3..fce9fd5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.cpp @@ -1,5 +1,7 @@ #include "Team.h" +int Team::m_tmid = 0; + 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..b4782cd 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Team.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Team.h @@ -8,18 +8,19 @@ using employeeMap = std::map>; class Team { private: + static int m_tmid; std::string m_id; std::string m_name; std::shared_ptr 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, + Team() : m_id("TM" + std::to_string(++m_tmid)), m_name(""), m_lead(nullptr), m_maximumNumberOfEmployees(0) {} + Team( const std::string& name, std::shared_ptr lead, int maximumNumberOfEmployees) - : m_id(id), m_name(name), m_lead(lead), m_maximumNumberOfEmployees(maximumNumberOfEmployees) { + : m_id("TM" + std::to_string(++m_tmid)), m_name(name), m_lead(lead), m_maximumNumberOfEmployees(maximumNumberOfEmployees) { } const std::string& getTeamId() const; const std::string& getTeamName() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h index d7db4e9..e948a78 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/TeamExecutive.h @@ -3,5 +3,16 @@ class TeamExecutive : public Employee { + TeamExecutive() = default; + TeamExecutive( + const std::string& password, + const std::string& name, + const std::string& phone, + const std::string& email, + const std::string& teamId, + std::shared_ptr payroll + ) :Employee(password, name, phone, email, teamId, Enums::EmployeeType::GENERAL, payroll) { + }; + ~TeamExecutive() = default; }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp index 328421c..431093e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.cpp @@ -1,5 +1,7 @@ #include "Ticket.h" +int Ticket::m_tid = 0; + 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..1ab88aa 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Ticket.h @@ -5,19 +5,20 @@ class Ticket { private: + static int m_tid; std::string m_id; Enums::TicketType m_type; std::string m_description; Enums::TicketStatus m_status; std::string m_employeeId; public: - Ticket() : m_id(""), m_type(Enums::TicketType::UNKNOWN), m_description(""), m_status(Enums::TicketStatus::OPEN), m_employeeId("") {} - Ticket(const std::string& id, + Ticket() : m_id("TKT" + std::to_string(++m_tid)), m_type(Enums::TicketType::UNKNOWN), m_description(""), m_status(Enums::TicketStatus::OPEN), m_employeeId("") {} + Ticket( Enums::TicketType type, const std::string& description, const std::string& employeeId, Enums::TicketStatus status) - : m_id(id), m_type(type), m_description(description), m_status(status), m_employeeId(employeeId) {} + : m_id("TKT" + std::to_string(++m_tid)), m_type(type), m_description(description), m_status(status), m_employeeId(employeeId) {} const std::string& getTicketId() const; Enums::TicketType getTicketType() const; const std::string& getDescription() const; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h index 8e4705e..0f3ab3d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/ApplicationConfig.h @@ -6,4 +6,33 @@ namespace Config { constexpr const char* DEFAULT_PASSWORD = "password"; } + + namespace Payroll + { + constexpr double TEAM_LEAD_BASIC_SALARY = 0.0; + constexpr double TEAM_LEAD_HOUSE_RENT_ALLOWANCE = 0.0; + constexpr double TEAM_LEAD_FOOD_ALLOWANCE = 0.0; + constexpr double TEAM_LEAD_EMPLOYEE_PF_CONTRIBUTION = 0.0; + constexpr double TEAM_LEAD_EMPLOYER_PF_CONTRIBUTION = 0.0; + constexpr double SENIOR_BASIC_SALARY = 0.0; + constexpr double SENIOR_HOUSE_RENT_ALLOWANCE = 0.0; + constexpr double SENIOR_FOOD_ALLOWANCE = 0.0; + constexpr double SENIOR_EMPLOYEE_PF_CONTRIBUTION = 0.0; + constexpr double SENIOR_EMPLOYER_PF_CONTRIBUTION = 0.0; + constexpr double JUNIOR_BASIC_SALARY = 0.0; + constexpr double JUNIOR_HOUSE_RENT_ALLOWANCE = 0.0; + constexpr double JUNIOR_FOOD_ALLOWANCE = 0.0; + constexpr double JUNIOR_EMPLOYEE_PF_CONTRIBUTION = 0.0; + constexpr double JUNIOR_EMPLOYER_PF_CONTRIBUTION = 0.0; + constexpr double HR_MANAGER_BASIC_SALARY = 0.0; + constexpr double HR_MANAGER_HOUSE_RENT_ALLOWANCE = 0.0; + constexpr double HR_MANAGER_FOOD_ALLOWANCE = 0.0; + constexpr double HR_MANAGER_EMPLOYEE_PF_CONTRIBUTION = 0.0; + constexpr double HR_MANAGER_EMPLOYER_PF_CONTRIBUTION = 0.0; + constexpr double EXECUTIVE_BASIC_SALARY = 0.0; + constexpr double EXECUTIVE_HOUSE_RENT_ALLOWANCE = 0.0; + constexpr double EXECUTIVE_FOOD_ALLOWANCE = 0.0; + constexpr double EXECUTIVE_EMPLOYEE_PF_CONTRIBUTION = 0.0; + constexpr double EXECUTIVE_EMPLOYER_PF_CONTRIBUTION = 0.0; + } } diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp deleted file mode 100644 index bf8ad9d..0000000 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "EmployeeManagememtService.h" diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h deleted file mode 100644 index 05e6ca7..0000000 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagememtService.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -class EmployeeManagememtService -{ -}; - diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp new file mode 100644 index 0000000..56e27b0 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp @@ -0,0 +1,17 @@ +#include "EmployeeManagementService.h" + +void EmployeeManagementService::createEmployee(Enums::EmployeeType, const std::string& email, const std::string& password, const std::string& name, const std::string& phone) +{ +} + +bool EmployeeManagementService::deactivateEmployee(const std::string& id) +{ +} + +Employees EmployeeManagementService::getEmployees() +{ +} + +std::shared_ptr EmployeeManagementService::getEmployee(const std::string& id) +{ +} diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h new file mode 100644 index 0000000..5ff7613 --- /dev/null +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h @@ -0,0 +1,19 @@ +#pragma once +#include +#include +#include "DataStore.h" +#include "Enums.h" + +using Employees = std::vector>; + +class EmployeeManagementService +{ +private: + DataStore& m_dataStore; +public: + EmployeeManagementService() : m_dataStore(DataStore::getInstance()) {}; + void createEmployee(Enums::EmployeeType, const std::string&, const std::string&, const std::string&, const std::string&); + bool deactivateEmployee(const std::string&); + Employees getEmployees(); + std::shared_ptr getEmployee(const std::string&); +}; diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h index 04c9805..510ffe3 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h @@ -1,5 +1,9 @@ #pragma once + class PayslipManagementService { +private: + DataStore& m_dataStore; +public: + PayslipManagementService() : m_dataStore(DataStore::getInstance()) {}; }; -