diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj
index e96c07f..88bb765 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj
+++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj
@@ -102,6 +102,7 @@
true
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
+ $(ProjectDir)controllers;$(ProjectDir)services;$(ProjectDir)utilities;%(AdditionalIncludeDirectories)
Console
@@ -123,6 +124,9 @@
+
+
+
@@ -132,6 +136,7 @@
+
@@ -145,6 +150,7 @@
+
@@ -154,8 +160,16 @@
+
+
+
+
+
+
+
+
@@ -165,6 +179,7 @@
+
@@ -178,11 +193,17 @@
+
+
+
+
+
+
diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters
index 9bf2d28..3c26252 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters
+++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters
@@ -19,6 +19,18 @@
{62c491e3-6127-40c4-a2d9-fb10b223bb12}
+
+ {e64383cf-bc11-454c-b3ee-b009eff44d92}
+
+
+ {060093db-4db8-4e52-9337-59364f6b5581}
+
+
+ {d6d09774-b79d-4ec9-a8c5-db90e95350df}
+
+
+ {eb93b9d1-08eb-48aa-be2a-e17085ce27bd}
+
@@ -114,6 +126,36 @@
Models
+
+ Controllers
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Factories
+
+
+ DataStores
+
+
+ Services
+
+
+ Models
+
@@ -197,6 +239,36 @@
Models
+
+ Controllers
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Utilities
+
+
+ Factories
+
+
+ DataStores
+
+
+ Services
+
+
+ Models
+
diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp
new file mode 100644
index 0000000..aa50123
--- /dev/null
+++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp
@@ -0,0 +1 @@
+#include "ZenvyController.h"
diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h
new file mode 100644
index 0000000..7dae696
--- /dev/null
+++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h
@@ -0,0 +1,5 @@
+#pragma once
+class ZenvyController
+{
+};
+
diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp
new file mode 100644
index 0000000..e81f26f
--- /dev/null
+++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp
@@ -0,0 +1 @@
+#include "DataStore.h"
diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h
new file mode 100644
index 0000000..09042e4
--- /dev/null
+++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h
@@ -0,0 +1,5 @@
+#pragma once
+class DataStore
+{
+};
+
diff --git a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.cpp b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.cpp
new file mode 100644
index 0000000..5b5c707
--- /dev/null
+++ b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.cpp
@@ -0,0 +1 @@
+#include "Factory.h"
diff --git a/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h
new file mode 100644
index 0000000..0c54b81
--- /dev/null
+++ b/Trenser.Zenvy/Trenser.Zenvy/factories/Factory.h
@@ -0,0 +1,13 @@
+#pragma once
+#include
+#include
+
+class Factory
+{
+public:
+ template
+ static std::shared_ptr getObject(Args&&... args)
+ {
+ return std::make_shared(std::forward(args)...);
+ }
+};
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h
index d3127d2..97f4f4e 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Admin.h
@@ -1,5 +1,6 @@
#pragma once
#include "Employee.h"
+
class Admin : public Employee
{
};
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp
index ac2e1f4..01cec1a 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.cpp
@@ -1 +1,31 @@
-#include "Announcement.h"
\ No newline at end of file
+#include "Announcement.h"
+
+const std::string& Announcement::getAnnouncementId() const
+{
+ return m_id;
+}
+
+const util::Timestamp& Announcement::getAnnouncementTimestamp() const
+{
+ return m_timestamp;
+}
+
+const std::string& Announcement::getAnnouncementMessage() const
+{
+ return m_message;
+}
+
+void Announcement::setAnnouncementId(const std::string& id)
+{
+ m_id = id;
+}
+
+void Announcement::setAnnouncementTimestamp(const util::Timestamp& timestamp)
+{
+ m_timestamp = timestamp;
+}
+
+void Announcement::setAnnouncementMessage(const std::string& message)
+{
+ m_message = message;
+}
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h
index 7f95f37..23e333c 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Announcement.h
@@ -1,5 +1,22 @@
#pragma once
+#include
+#include "Timestamp.h"
+
class Announcement
{
-};
-
+private:
+ 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) {}
+ const std::string& getAnnouncementId() const;
+ const util::Timestamp& getAnnouncementTimestamp() const;
+ const std::string& getAnnouncementMessage() const;
+ void setAnnouncementId(const std::string& id);
+ void setAnnouncementTimestamp(const util::Timestamp& timestamp);
+ void setAnnouncementMessage(const std::string& message);
+};
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp
index f22066e..7565537 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.cpp
@@ -1 +1,41 @@
#include "Attendance.h"
+
+const std::string& Attendance::getAttendanceId() const
+{
+ return m_id;
+}
+
+const util::Timestamp& Attendance::getLoginTime() const
+{
+ return m_loginTime;
+}
+
+const util::Timestamp& Attendance::getLogoutTime() const
+{
+ return m_logoutTime;
+}
+
+void Attendance::setAttendanceId(const std::string& id)
+{
+ m_id = id;
+}
+
+void Attendance::setLoginTime(const util::Timestamp& loginTime)
+{
+ m_loginTime = loginTime;
+}
+
+void Attendance::setLogoutTime(const util::Timestamp& logoutTime)
+{
+ m_logoutTime = logoutTime;
+}
+
+double Attendance::getWorkingHours() const
+{
+ return util::Timestamp::getDurationInHours(m_loginTime, m_logoutTime);
+}
+
+double Attendance::getWorkingMinutes() const
+{
+ return util::Timestamp::getDurationInMinutes(m_loginTime, m_logoutTime);
+}
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h
index 8e13375..3b10f5c 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Attendance.h
@@ -1,5 +1,25 @@
#pragma once
+#include
+#include "Timestamp.h"
+
class Attendance
{
-};
-
+private:
+ 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,
+ const util::Timestamp& logoutTime)
+ : m_id(id), m_loginTime(loginTime), m_logoutTime(logoutTime) {}
+ const std::string& getAttendanceId() const;
+ const util::Timestamp& getLoginTime() const;
+ const util::Timestamp& getLogoutTime() const;
+ void setAttendanceId(const std::string& id);
+ void setLoginTime(const util::Timestamp& loginTime);
+ void setLogoutTime(const util::Timestamp& logoutTime);
+ double getWorkingHours() const;
+ double getWorkingMinutes() const;
+};
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp
index e0e3e0c..a40ed2b 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.cpp
@@ -1 +1,61 @@
#include "Booking.h"
+
+const std::string& Booking::getBookingId() const
+{
+ return m_id;
+}
+
+const util::Timestamp& Booking::getStartTime() const
+{
+ return m_startTime;
+}
+
+const util::Timestamp& Booking::getEndTime() const
+{
+ return m_endTime;
+}
+
+const std::string& Booking::getEmployeeId() const
+{
+ return m_employeeId;
+}
+
+std::shared_ptr Booking::getTeam() const
+{
+ return m_team;
+}
+
+void Booking::setBookingId(const std::string& id)
+{
+ m_id = id;
+}
+
+void Booking::setStartTime(const util::Timestamp& startTime)
+{
+ m_startTime = startTime;
+}
+
+void Booking::setEndTime(const util::Timestamp& endTime)
+{
+ m_endTime = endTime;
+}
+
+void Booking::setEmployeeId(const std::string& employeeId)
+{
+ m_employeeId = employeeId;
+}
+
+void Booking::setTeam(std::shared_ptr team)
+{
+ m_team = team;
+}
+
+double Booking::getDurationInHours() const
+{
+ return util::Timestamp::getDurationInHours(m_startTime, m_endTime);
+}
+
+double Booking::getDurationInMinutes() const
+{
+ return util::Timestamp::getDurationInMinutes(m_startTime, m_endTime);
+}
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h
index 60e6c50..7e99b4a 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Booking.h
@@ -1,5 +1,35 @@
#pragma once
+#include
+#include
+#include "Team.h"
+#include "Timestamp.h"
+
class Booking
{
-};
-
+private:
+ 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,
+ 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) {}
+ const std::string& getBookingId() const;
+ const util::Timestamp& getStartTime() const;
+ const util::Timestamp& getEndTime() const;
+ const std::string& getEmployeeId() const;
+ std::shared_ptr getTeam() const;
+ 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);
+ double getDurationInHours() const;
+ double getDurationInMinutes() const;
+};
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp
index 8105d03..e4831a4 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.cpp
@@ -1 +1,51 @@
#include "Candidate.h"
+
+const std::string& Candidate::getCandidateId() const
+{
+ return m_id;
+}
+
+const std::string& Candidate::getCandidateName() const
+{
+ return m_name;
+}
+
+long int Candidate::getCandidatePhone() const
+{
+ return m_phone;
+}
+
+const std::string& Candidate::getCandidateQualification() const
+{
+ return m_qualification;
+}
+
+Enums::CandidateStatus Candidate::getCandidateStatus() const
+{
+ return m_status;
+}
+
+void Candidate::setCandidateId(const std::string& id)
+{
+ m_id = id;
+}
+
+void Candidate::setCandidateName(const std::string& name)
+{
+ m_name = name;
+}
+
+void Candidate::setCandidatePhone(long int phone)
+{
+ m_phone = phone;
+}
+
+void Candidate::setCandidateQualification(const std::string& qualification)
+{
+ m_qualification = qualification;
+}
+
+void Candidate::setCandidateStatus(Enums::CandidateStatus status)
+{
+ m_status = status;
+}
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h
index 9e26890..257c54d 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Candidate.h
@@ -1,5 +1,31 @@
#pragma once
+#include
+#include "Enums.h"
+
class Candidate
{
-};
-
+private:
+ 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,
+ 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) {}
+ const std::string& getCandidateId() const;
+ const std::string& getCandidateName() const;
+ long int getCandidatePhone() const;
+ const std::string& getCandidateQualification() const;
+ Enums::CandidateStatus getCandidateStatus() const;
+ void setCandidateId(const std::string& id);
+ void setCandidateName(const std::string& name);
+ void setCandidatePhone(long int phone);
+ void setCandidateQualification(const std::string& qualification);
+ void setCandidateStatus(Enums::CandidateStatus status);
+};
\ No newline at end of file
diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp
index b0c2c2c..d5d4554 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.cpp
@@ -1 +1,125 @@
#include "Employee.h"
+
+const std::string& Employee::getEmployeeId() const
+{
+ return m_id;
+}
+
+const std::string& Employee::getEmployeePassword() const
+{
+ return m_password;
+}
+
+const std::string& Employee::getEmployeeName() const
+{
+ return m_name;
+}
+
+const std::string& Employee::getEmployeePhone() const
+{
+ return m_phone;
+}
+
+const std::string& Employee::getEmployeeEmail() const
+{
+ return m_email;
+}
+
+Enums::AccountStatus Employee::getEmployeeAccountStatus() const
+{
+ return m_accountStatus;
+}
+
+Enums::TeamStatus Employee::getEmployeeTeamStatus() const
+{
+ return m_teamStatus;
+}
+
+const std::string& Employee::getEmployeeTeamId() const
+{
+ return m_teamId;
+}
+
+std::shared_ptr Employee::getPayroll() const
+{
+ return m_payroll;
+}
+
+const payslipMap& Employee::getEmployeePayslips() const
+{
+ return m_payslips;
+}
+
+const attendanceMap& Employee::getEmployeeAttendances() const
+{
+ return m_attendances;
+}
+
+const leaveMap& Employee::getEmployeeLeaves() const
+{
+ return m_leaves;
+}
+
+void Employee::setEmployeeId(const std::string& id)
+{
+ m_id = id;
+}
+
+void Employee::setEmployeePassword(const std::string& password)
+{
+ m_password = password;
+}
+
+void Employee::setEmployeeName(const std::string& name)
+{
+ m_name = name;
+}
+
+void Employee::setEmployeePhone(const std::string& phone)
+{
+ m_phone = phone;
+}
+
+void Employee::setEmployeeAccountStatus(Enums::AccountStatus status)
+{
+ m_accountStatus = status;
+}
+
+void Employee::setEmployeeTeamStatus(Enums::TeamStatus status)
+{
+ m_teamStatus = status;
+}
+
+void Employee::setEmployeeTeamId(const std::string& teamId)
+{
+ m_teamId = teamId;
+}
+
+void Employee::setEmployeePayroll(std::shared_ptr payroll)
+{
+ m_payroll = payroll;
+}
+
+void Employee::addPayslip(std::shared_ptr payslip)
+{
+ if (payslip)
+ {
+ m_payslips[payslip->getPayslipId()] = payslip;
+ }
+}
+
+void Employee::addAttendance(std::shared_ptr attendance)
+{
+ if (attendance)
+ {
+ m_attendances[attendance->getLoginTime().getDateAsInt()][attendance->getAttendanceId()] = attendance;
+ }
+}
+
+void Employee::addLeave(std::shared_ptr leave)
+{
+ if (leave)
+ {
+ m_leaves[leave->getLeaveId()] = leave;
+ }
+}
\ 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 83f5238..559afba 100644
--- a/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h
+++ b/Trenser.Zenvy/Trenser.Zenvy/models/Employee.h
@@ -1,5 +1,63 @@
#pragma once
+#include
+#include
+#include