Set up codebase

- Define models, factory classes, data store,
utility classes (timestamp, io helpers, enums, validator)
- Define Model Class Structures
- Add new model Log
- Add new service LogService
- Add Factory class
- Add Utilities like Timestamp, Validator, Input/Output Helpers..

Co-authored-by: Tinu Johnson <tinu.johnson@trenser.com>
Co-authored-by: Princy Jerin <princy.jerin@trenser.com>
Co-authored-by: Ajmal Jalaludeen <ajmal.jalaludeen@trenser.com>
Co-authored-by: Jissin Sam Mathew <jissin.mathew@trenser.com>
This commit is contained in:
2026-04-01 13:26:58 +05:30
parent 045ea2d743
commit 11b47d38c1
57 changed files with 1570 additions and 29 deletions
@@ -102,6 +102,7 @@
<SDLCheck>true</SDLCheck> <SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(ProjectDir)controllers;$(ProjectDir)services;$(ProjectDir)utilities;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
@@ -123,6 +124,9 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="controllers\ZenvyController.cpp" />
<ClCompile Include="datastores\DataStore.cpp" />
<ClCompile Include="factories\Factory.cpp" />
<ClCompile Include="models\Announcement.cpp" /> <ClCompile Include="models\Announcement.cpp" />
<ClCompile Include="models\Attendance.cpp" /> <ClCompile Include="models\Attendance.cpp" />
<ClCompile Include="models\Booking.cpp" /> <ClCompile Include="models\Booking.cpp" />
@@ -132,6 +136,7 @@
<ClCompile Include="models\ITExecutive.cpp" /> <ClCompile Include="models\ITExecutive.cpp" />
<ClCompile Include="models\JobListing.cpp" /> <ClCompile Include="models\JobListing.cpp" />
<ClCompile Include="models\Leave.cpp" /> <ClCompile Include="models\Leave.cpp" />
<ClCompile Include="models\Log.cpp" />
<ClCompile Include="models\Notification.cpp" /> <ClCompile Include="models\Notification.cpp" />
<ClCompile Include="models\Payroll.cpp" /> <ClCompile Include="models\Payroll.cpp" />
<ClCompile Include="models\Payslip.cpp" /> <ClCompile Include="models\Payslip.cpp" />
@@ -145,6 +150,7 @@
<ClCompile Include="services\BookingManagementService.cpp" /> <ClCompile Include="services\BookingManagementService.cpp" />
<ClCompile Include="services\EmployeeManagememtService.cpp" /> <ClCompile Include="services\EmployeeManagememtService.cpp" />
<ClCompile Include="services\LeaveManagementService.cpp" /> <ClCompile Include="services\LeaveManagementService.cpp" />
<ClCompile Include="services\LogService.cpp" />
<ClCompile Include="services\NotificationManagementService.cpp" /> <ClCompile Include="services\NotificationManagementService.cpp" />
<ClCompile Include="services\PayslipManagementService.cpp" /> <ClCompile Include="services\PayslipManagementService.cpp" />
<ClCompile Include="services\TalentAcquisitionManagementService.cpp" /> <ClCompile Include="services\TalentAcquisitionManagementService.cpp" />
@@ -154,8 +160,16 @@
<ClCompile Include="models\Employee.cpp" /> <ClCompile Include="models\Employee.cpp" />
<ClCompile Include="models\HRManager.cpp" /> <ClCompile Include="models\HRManager.cpp" />
<ClCompile Include="Trenser.Zenvy.cpp" /> <ClCompile Include="Trenser.Zenvy.cpp" />
<ClCompile Include="utilities\Enums.cpp" />
<ClCompile Include="utilities\InputHelper.cpp" />
<ClCompile Include="utilities\OutputHelper.cpp" />
<ClCompile Include="utilities\Timestamp.cpp" />
<ClCompile Include="utilities\Validator.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="controllers\ZenvyController.h" />
<ClInclude Include="datastores\DataStore.h" />
<ClInclude Include="factories\Factory.h" />
<ClInclude Include="models\Announcement.h" /> <ClInclude Include="models\Announcement.h" />
<ClInclude Include="models\Attendance.h" /> <ClInclude Include="models\Attendance.h" />
<ClInclude Include="models\Booking.h" /> <ClInclude Include="models\Booking.h" />
@@ -165,6 +179,7 @@
<ClInclude Include="models\ITExecutive.h" /> <ClInclude Include="models\ITExecutive.h" />
<ClInclude Include="models\JobListing.h" /> <ClInclude Include="models\JobListing.h" />
<ClInclude Include="models\Leave.h" /> <ClInclude Include="models\Leave.h" />
<ClInclude Include="models\Log.h" />
<ClInclude Include="models\Notification.h" /> <ClInclude Include="models\Notification.h" />
<ClInclude Include="models\Payroll.h" /> <ClInclude Include="models\Payroll.h" />
<ClInclude Include="models\Payslip.h" /> <ClInclude Include="models\Payslip.h" />
@@ -178,11 +193,17 @@
<ClInclude Include="services\BookingManagementService.h" /> <ClInclude Include="services\BookingManagementService.h" />
<ClInclude Include="services\EmployeeManagememtService.h" /> <ClInclude Include="services\EmployeeManagememtService.h" />
<ClInclude Include="services\LeaveManagementService.h" /> <ClInclude Include="services\LeaveManagementService.h" />
<ClInclude Include="services\LogService.h" />
<ClInclude Include="services\NotificationManagementService.h" /> <ClInclude Include="services\NotificationManagementService.h" />
<ClInclude Include="services\PayslipManagementService.h" /> <ClInclude Include="services\PayslipManagementService.h" />
<ClInclude Include="services\TalentAcquisitionManagementService.h" /> <ClInclude Include="services\TalentAcquisitionManagementService.h" />
<ClInclude Include="services\TeamManagementService.h" /> <ClInclude Include="services\TeamManagementService.h" />
<ClInclude Include="services\TicketManagementService.h" /> <ClInclude Include="services\TicketManagementService.h" />
<ClInclude Include="utilities\Enums.h" />
<ClInclude Include="utilities\InputHelper.h" />
<ClInclude Include="utilities\OutputHelper.h" />
<ClInclude Include="utilities\Timestamp.h" />
<ClInclude Include="utilities\Validator.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="models\Admin.h" /> <ClInclude Include="models\Admin.h" />
@@ -19,6 +19,18 @@
<Filter Include="Models"> <Filter Include="Models">
<UniqueIdentifier>{62c491e3-6127-40c4-a2d9-fb10b223bb12}</UniqueIdentifier> <UniqueIdentifier>{62c491e3-6127-40c4-a2d9-fb10b223bb12}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Controllers">
<UniqueIdentifier>{e64383cf-bc11-454c-b3ee-b009eff44d92}</UniqueIdentifier>
</Filter>
<Filter Include="Utilities">
<UniqueIdentifier>{060093db-4db8-4e52-9337-59364f6b5581}</UniqueIdentifier>
</Filter>
<Filter Include="Factories">
<UniqueIdentifier>{d6d09774-b79d-4ec9-a8c5-db90e95350df}</UniqueIdentifier>
</Filter>
<Filter Include="DataStores">
<UniqueIdentifier>{eb93b9d1-08eb-48aa-be2a-e17085ce27bd}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Trenser.Zenvy.cpp"> <ClCompile Include="Trenser.Zenvy.cpp">
@@ -114,6 +126,36 @@
<ClCompile Include="models\Ticket.cpp"> <ClCompile Include="models\Ticket.cpp">
<Filter>Models</Filter> <Filter>Models</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="controllers\ZenvyController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="utilities\InputHelper.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="utilities\Enums.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="utilities\OutputHelper.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="utilities\Validator.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="utilities\Timestamp.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="factories\Factory.cpp">
<Filter>Factories</Filter>
</ClCompile>
<ClCompile Include="datastores\DataStore.cpp">
<Filter>DataStores</Filter>
</ClCompile>
<ClCompile Include="services\LogService.cpp">
<Filter>Services</Filter>
</ClCompile>
<ClCompile Include="models\Log.cpp">
<Filter>Models</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="services\AuthenticationManagementService.h"> <ClInclude Include="services\AuthenticationManagementService.h">
@@ -197,6 +239,36 @@
<ClInclude Include="models\Ticket.h"> <ClInclude Include="models\Ticket.h">
<Filter>Models</Filter> <Filter>Models</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="controllers\ZenvyController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="utilities\InputHelper.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="utilities\Enums.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="utilities\Validator.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="utilities\OutputHelper.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="utilities\Timestamp.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="factories\Factory.h">
<Filter>Factories</Filter>
</ClInclude>
<ClInclude Include="datastores\DataStore.h">
<Filter>DataStores</Filter>
</ClInclude>
<ClInclude Include="services\LogService.h">
<Filter>Services</Filter>
</ClInclude>
<ClInclude Include="models\Log.h">
<Filter>Models</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="models\Employee.h"> <ClInclude Include="models\Employee.h">
@@ -0,0 +1 @@
#include "ZenvyController.h"
@@ -0,0 +1,5 @@
#pragma once
class ZenvyController
{
};
@@ -0,0 +1 @@
#include "DataStore.h"
@@ -0,0 +1,5 @@
#pragma once
class DataStore
{
};
@@ -0,0 +1 @@
#include "Factory.h"
@@ -0,0 +1,13 @@
#pragma once
#include <memory>
#include <utility>
class Factory
{
public:
template<typename T, typename... Args>
static std::shared_ptr<T> getObject(Args&&... args)
{
return std::make_shared<T>(std::forward<Args>(args)...);
}
};
@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
class Admin : public Employee class Admin : public Employee
{ {
}; };
@@ -1 +1,31 @@
#include "Announcement.h" #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;
}
@@ -1,5 +1,22 @@
#pragma once #pragma once
#include <string>
#include "Timestamp.h"
class Announcement 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);
};
@@ -1 +1,41 @@
#include "Attendance.h" #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);
}
@@ -1,5 +1,25 @@
#pragma once #pragma once
#include <string>
#include "Timestamp.h"
class Attendance 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;
};
@@ -1 +1,61 @@
#include "Booking.h" #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<Team> 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> 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);
}
+32 -2
View File
@@ -1,5 +1,35 @@
#pragma once #pragma once
#include <string>
#include <memory>
#include "Team.h"
#include "Timestamp.h"
class Booking class Booking
{ {
}; private:
std::string m_id;
util::Timestamp m_startTime;
util::Timestamp m_endTime;
std::string m_employeeId;
std::shared_ptr<Team> 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> 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<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);
double getDurationInHours() const;
double getDurationInMinutes() const;
};
@@ -1 +1,51 @@
#include "Candidate.h" #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;
}
+28 -2
View File
@@ -1,5 +1,31 @@
#pragma once #pragma once
#include <string>
#include "Enums.h"
class Candidate 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);
};
@@ -1 +1,125 @@
#include "Employee.h" #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<Payroll> 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> payroll)
{
m_payroll = payroll;
}
void Employee::addPayslip(std::shared_ptr<Payslip> payslip)
{
if (payslip)
{
m_payslips[payslip->getPayslipId()] = payslip;
}
}
void Employee::addAttendance(std::shared_ptr<Attendance> attendance)
{
if (attendance)
{
m_attendances[attendance->getLoginTime().getDateAsInt()][attendance->getAttendanceId()] = attendance;
}
}
void Employee::addLeave(std::shared_ptr<Leave> leave)
{
if (leave)
{
m_leaves[leave->getLeaveId()] = leave;
}
}
+60 -2
View File
@@ -1,5 +1,63 @@
#pragma once #pragma once
#include <string>
#include <memory>
#include <map>
#include "Payslip.h"
#include "Attendance.h"
#include "Leave.h"
#include "Payroll.h"
#include "Enums.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>>;
class Employee class Employee
{ {
}; private:
std::string m_id;
std::string m_password;
std::string m_name;
std::string m_phone;
std::string m_email;
Enums::AccountStatus m_accountStatus;
Enums::TeamStatus m_teamStatus;
std::string m_teamId;
std::shared_ptr<Payroll> m_payroll;
payslipMap m_payslips;
attendanceMap m_attendances;
leaveMap m_leaves;
public:
Employee() : m_id(""), m_password(""), m_name(""), m_phone(""), m_email(""), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId("") {}
Employee(const std::string& id,
const std::string& password,
const std::string& name,
const std::string& phone,
const std::string& email,
const std::string& teamId,
std::shared_ptr<Payroll> payroll)
: m_id(id), m_password(password), m_name(name), m_phone(phone), m_email(email), m_accountStatus(Enums::AccountStatus::ACTIVE), m_teamStatus(Enums::TeamStatus::NOT_IN_TEAM), m_teamId(teamId), m_payroll(payroll) {}
const std::string& getEmployeeId() const;
const std::string& getEmployeePassword() const;
const std::string& getEmployeeName() const;
const std::string& getEmployeePhone() const;
const std::string& getEmployeeEmail() const;
Enums::AccountStatus getEmployeeAccountStatus() const;
Enums::TeamStatus getEmployeeTeamStatus() const;
const std::string& getEmployeeTeamId() const;
std::shared_ptr<Payroll> getPayroll() const;
const payslipMap& getEmployeePayslips() const;
const attendanceMap& getEmployeeAttendances() const;
const leaveMap& getEmployeeLeaves() const;
void setEmployeeId(const std::string& id);
void setEmployeePassword(const std::string& password);
void setEmployeeName(const std::string& name);
void setEmployeePhone(const std::string& phone);
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);
~Employee() = default;
};
@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
class FinanceExecutive : public Employee class FinanceExecutive : public Employee
{ {
}; };
@@ -1 +1,11 @@
#include "GeneralEmployee.h" #include "GeneralEmployee.h"
Enums::EmployeeDesignation GeneralEmployee::getDesignation() const
{
return m_designation;
}
void GeneralEmployee::setDesignation(Enums::EmployeeDesignation designation)
{
m_designation = designation;
}
@@ -1,5 +1,23 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
#include "Enums.h"
class GeneralEmployee : public Employee class GeneralEmployee : public Employee
{ {
}; private:
Enums::EmployeeDesignation m_designation;
public:
GeneralEmployee() : m_designation(Enums::EmployeeDesignation::JUNIOR) {}
GeneralEmployee(const std::string& id,
const std::string& password,
const std::string& name,
const std::string& phone,
const std::string& email,
const std::string& teamId,
std::shared_ptr<Payroll> payroll,
Enums::EmployeeDesignation designation)
: Employee(id, password, name, phone, email, teamId, payroll), m_designation(designation) {}
Enums::EmployeeDesignation getDesignation() const;
void setDesignation(Enums::EmployeeDesignation designation);
~GeneralEmployee() = default;
};
@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
class HRManager : public Employee class HRManager : public Employee
{ {
}; };
@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
class ITExecutive : public Employee class ITExecutive : public Employee
{ {
}; };
@@ -1 +1,61 @@
#include "JobListing.h" #include "JobListing.h"
const std::string& JobListing::getJobId() const
{
return m_id;
}
const std::string& JobListing::getJobName() const
{
return m_name;
}
const std::string& JobListing::getJobDescription() const
{
return m_description;
}
Enums::JobListingStatus JobListing::getJobStatus() const
{
return m_status;
}
int JobListing::getNumberOfVacancies() const
{
return m_numberOfVacancies;
}
const candidateMap& JobListing::getCandidates() const
{
return m_candidates;
}
void JobListing::setJobId(const std::string& id)
{
m_id = id;
}
void JobListing::setJobName(const std::string& name)
{
m_name = name;
}
void JobListing::setJobDescription(const std::string& description)
{
m_description = description;
}
void JobListing::setJobStatus(Enums::JobListingStatus status)
{
m_status = status;
}
void JobListing::setNumberOfVacancies(int numberOfVacancies)
{
m_numberOfVacancies = numberOfVacancies;
}
void JobListing::setCandidates(const candidateMap& candidates)
{
m_candidates = candidates;
}
@@ -0,0 +1,39 @@
#pragma once
#include <string>
#include <map>
#include <memory>
#include "Candidate.h"
#include "Enums.h"
using candidateMap = std::map<std::string, std::shared_ptr<Candidate>>;
class JobListing
{
private:
std::string m_id;
std::string m_name;
std::string m_description;
Enums::JobListingStatus m_status;
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,
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) {}
const std::string& getJobId() const;
const std::string& getJobName() const;
const std::string& getJobDescription() const;
Enums::JobListingStatus getJobStatus() const;
int getNumberOfVacancies() const;
const candidateMap& getCandidates() const;
void setJobId(const std::string& id);
void setJobName(const std::string& name);
void setJobDescription(const std::string& description);
void setJobStatus(Enums::JobListingStatus status);
void setNumberOfVacancies(int numberOfVacancies);
void setCandidates(const candidateMap& candidates);
};
@@ -1 +1,87 @@
#include "Leave.h" #include "Leave.h"
const std::string& Leave::getLeaveId() const
{
return m_id;
}
const std::string& Leave::getEmployeeId() const
{
return m_employeeId;
}
const util::Timestamp& Leave::getTimestamp() const
{
return m_timestamp;
}
const std::string& Leave::getLeaveReason() const
{
return m_reason;
}
int Leave::getNumberOfGeneralLeave()
{
return m_numberOfGeneralLeave;
}
int Leave::getNumberOfRestrictedLeave()
{
return m_numberOfRestrictedLeave;
}
int Leave::getNumberOfMedicalLeave()
{
return m_numberOfMedicalLeave;
}
Enums::LeaveType Leave::getLeaveType() const
{
return m_leaveType;
}
void Leave::setLeaveId(const std::string& id)
{
m_id = id;
}
void Leave::setEmployeeId(const std::string& employeeId)
{
m_employeeId = employeeId;
}
void Leave::setTimestamp(const util::Timestamp& timestamp)
{
m_timestamp = timestamp;
}
void Leave::setLeaveReason(const std::string& reason)
{
m_reason = reason;
}
void Leave::setNumberOfGeneralLeave(int value)
{
m_numberOfGeneralLeave = value;
}
void Leave::setNumberOfRestrictedLeave(int value)
{
m_numberOfRestrictedLeave = value;
}
void Leave::setNumberOfMedicalLeave(int value)
{
m_numberOfMedicalLeave = value;
}
void Leave::setLeaveType(Enums::LeaveType type)
{
m_leaveType = type;
}
int Leave::m_numberOfGeneralLeave = 12;
int Leave::m_numberOfRestrictedLeave = 2;
int Leave::m_numberOfMedicalLeave = 6;
+38 -2
View File
@@ -1,5 +1,41 @@
#pragma once #pragma once
#include <string>
#include "Enums.h"
#include "Timestamp.h"
class Leave class Leave
{ {
}; private:
std::string m_id;
std::string m_employeeId;
util::Timestamp m_timestamp;
std::string m_reason;
static int m_numberOfGeneralLeave;
static int m_numberOfRestrictedLeave;
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,
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) {}
const std::string& getLeaveId() const;
const std::string& getEmployeeId() const;
const util::Timestamp& getTimestamp() const;
const std::string& getLeaveReason() const;
static int getNumberOfGeneralLeave();
static int getNumberOfRestrictedLeave();
static int getNumberOfMedicalLeave();
Enums::LeaveType getLeaveType() const;
void setLeaveId(const std::string& id);
void setEmployeeId(const std::string& employeeId);
void setTimestamp(const util::Timestamp& timestamp);
void setLeaveReason(const std::string& reason);
void setNumberOfGeneralLeave(int value);
void setNumberOfRestrictedLeave(int value);
void setNumberOfMedicalLeave(int value);
void setLeaveType(Enums::LeaveType type);
};
@@ -0,0 +1,21 @@
#include "Log.h"
const util::Timestamp& Log::getTimestamp() const
{
return m_timestamp;
}
const std::string& Log::getMessage() const
{
return m_message;
}
void Log::setTimestamp(const util::Timestamp& timestamp)
{
m_timestamp = timestamp;
}
void Log::setMessage(const std::string& message)
{
m_message = message;
}
+18
View File
@@ -0,0 +1,18 @@
#pragma once
#include <string>
#include "Timestamp.h"
class Log
{
private:
util::Timestamp m_timestamp;
std::string m_message;
public:
Log() : m_timestamp(), m_message("") {}
Log(const util::Timestamp& timestamp, const std::string& message)
: m_timestamp(timestamp), m_message(message) {}
const util::Timestamp& getTimestamp() const;
const std::string& getMessage() const;
void setTimestamp(const util::Timestamp& timestamp);
void setMessage(const std::string& message);
};
@@ -1 +1,51 @@
#include "Notification.h" #include "Notification.h"
const std::string& Notification::getNotificationId() const
{
return m_id;
}
const std::string& Notification::getEmployeeId() const
{
return m_employeeId;
}
const std::string& Notification::getNotificationMessage() const
{
return m_message;
}
const util::Timestamp& Notification::getNotificationTimestamp() const
{
return m_timestamp;
}
Enums::NotificationStatus Notification::getNotificationStatus() const
{
return m_notificationStatus;
}
void Notification::setNotificationId(const std::string& id)
{
m_id = id;
}
void Notification::setEmployeeId(const std::string& employeeId)
{
m_employeeId = employeeId;
}
void Notification::setNotificationMessage(const std::string& message)
{
m_message = message;
}
void Notification::setNotificationTimestamp(const util::Timestamp& timestamp)
{
m_timestamp = timestamp;
}
void Notification::setNotificationStatus(Enums::NotificationStatus status)
{
m_notificationStatus = status;
}
@@ -1,5 +1,31 @@
#pragma once #pragma once
#include <string>
#include "Enums.h"
#include "Timestamp.h"
class Notification class Notification
{ {
}; private:
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,
const std::string& message,
Enums::NotificationStatus notificationStatus)
: m_id(id), m_employeeId(employeeId), m_message(message), m_notificationStatus(notificationStatus) {}
const std::string& getNotificationId() const;
const std::string& getEmployeeId() const;
const std::string& getNotificationMessage() const;
const util::Timestamp& getNotificationTimestamp() const;
Enums::NotificationStatus getNotificationStatus() const;
void setNotificationId(const std::string& id);
void setEmployeeId(const std::string& employeeId);
void setNotificationMessage(const std::string& message);
void setNotificationTimestamp(const util::Timestamp& timestamp);
void setNotificationStatus(Enums::NotificationStatus status);
};
@@ -1 +1,56 @@
#include "Payroll.h" #include "Payroll.h"
const std::string& Payroll::getPayrollId() const
{
return m_id;
}
double Payroll::getBasicSalary() const
{
return m_basicSalary;
}
double Payroll::getHouseRentAllowance() const
{
return m_houseRentAllowance;
}
double Payroll::getFoodAllowance() const
{
return m_foodAllowance;
}
double Payroll::getEmployeePFContribution() const
{
return m_employeePFContribution;
}
double Payroll::getEmployerPFContribution() const
{
return m_employerPFContribution;
}
void Payroll::setPayrollID(const std::string& id)
{
m_id = id;
}
void Payroll::setHouseRentAllowance(double value)
{
m_houseRentAllowance = value;
}
void Payroll::setFoodAllowance(double value)
{
m_foodAllowance = value;
}
void Payroll::setEmployeePFContribution(double value)
{
m_employeePFContribution = value;
}
void Payroll::setEmployerPFContribution(double value)
{
m_employerPFContribution = value;
}
+30 -2
View File
@@ -1,5 +1,33 @@
#pragma once #pragma once
#include <string>
class Payroll class Payroll
{ {
}; private:
std::string m_id;
double m_basicSalary;
double m_houseRentAllowance;
double m_foodAllowance;
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,
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) {}
const std::string& getPayrollId() const;
double getBasicSalary() const;
double getHouseRentAllowance() const;
double getFoodAllowance() const;
double getEmployeePFContribution() const;
double getEmployerPFContribution() const;
void setPayrollID(const std::string& id);
void setHouseRentAllowance(double value);
void setFoodAllowance(double value);
void setEmployeePFContribution(double value);
void setEmployerPFContribution(double value);
};
@@ -1 +1,21 @@
#include "Payslip.h" #include "Payslip.h"
const std::string& Payslip::getPayslipId() const
{
return m_id;
}
double Payslip::getSalary() const
{
return m_salary;
}
void Payslip::setPayslipId(const std::string& id)
{
m_id = id;
}
void Payslip::setSalary(double salary)
{
m_salary = salary;
}
+13 -2
View File
@@ -1,5 +1,16 @@
#pragma once #pragma once
#include <string>
class Payslip class Payslip
{ {
}; private:
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) {}
const std::string& getPayslipId() const;
double getSalary() const;
void setPayslipId(const std::string& id);
void setSalary(double salary);
};
@@ -1 +1,34 @@
#include "Room.h" #include "Room.h"
const std::string& Room::getRoomId() const
{
return m_id;
}
const std::string& Room::getRoomName() const
{
return m_name;
}
const bookingMap& Room::getBookings() const
{
return m_bookings;
}
void Room::setRoomId(const std::string& id)
{
m_id = id;
}
void Room::setRoomName(const std::string& name)
{
m_name = name;
}
void Room::addBooking(std::shared_ptr<Booking> booking)
{
if (booking)
{
m_bookings[booking->getBookingId()] = booking;
}
}
+20 -2
View File
@@ -1,5 +1,23 @@
#pragma once #pragma once
#include <string>
#include <map>
#include <memory>
#include "Booking.h"
using bookingMap = std::map<std::string, std::shared_ptr<Booking>>;
class Room class Room
{ {
}; private:
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) {}
const std::string& getRoomId() const;
const std::string& getRoomName() const;
const bookingMap& getBookings() const;
void setRoomId(const std::string& id);
void setRoomName(const std::string& name);
void addBooking(std::shared_ptr<Booking> booking);
};
@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
class TalentExecutive : public Employee class TalentExecutive : public Employee
{ {
}; };
@@ -1 +1,51 @@
#include "Team.h" #include "Team.h"
const std::string& Team::getTeamId() const
{
return m_id;
}
const std::string& Team::getTeamName() const
{
return m_name;
}
std::shared_ptr<Employee> Team::getTeamLead() const
{
return m_lead;
}
const employeeMap& Team::getEmployeesInTeam() const
{
return m_employees;
}
int Team::getMaximumNumberOfEmployeesInTeam() const
{
return m_maximumNumberOfEmployees;
}
void Team::setTeamId(const std::string& id)
{
m_id = id;
}
void Team::setTeamName(const std::string& name)
{
m_name = name;
}
void Team::setTeamLead(std::shared_ptr<Employee> lead)
{
m_lead = lead;
}
void Team::setEmployeesInTeam(const employeeMap& employees)
{
m_employees = employees;
}
void Team::setMaximumNumberOfEmployeesInTeam(int maximumNumberOfEmployees)
{
m_maximumNumberOfEmployees = maximumNumberOfEmployees;
}
+31 -2
View File
@@ -1,5 +1,34 @@
#pragma once #pragma once
#include <string>
#include <map>
#include <memory>
#include "Employee.h"
using employeeMap = std::map<std::string, std::shared_ptr<Employee>>;
class Team class Team
{ {
}; private:
std::string m_id;
std::string m_name;
std::shared_ptr<Employee> m_lead;
employeeMap m_employees;
int m_maximumNumberOfEmployees;
public:
Team() : m_id(""), m_name(""), m_lead(nullptr), m_maximumNumberOfEmployees(0) {}
Team(const std::string& id,
const std::string& name,
std::shared_ptr<Employee> lead,
int maximumNumberOfEmployees)
: m_id(id), m_name(name), m_lead(lead), m_maximumNumberOfEmployees(maximumNumberOfEmployees) {
}
const std::string& getTeamId() const;
const std::string& getTeamName() const;
std::shared_ptr<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 setEmployeesInTeam(const employeeMap& employees);
void setMaximumNumberOfEmployeesInTeam(int maximumNumberOfEmployees);
};
@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "Employee.h" #include "Employee.h"
class TeamExecutive : public Employee class TeamExecutive : public Employee
{ {
}; };
@@ -1 +1,51 @@
#include "Ticket.h" #include "Ticket.h"
const std::string& Ticket::getTicketId() const
{
return m_id;
}
const std::string& Ticket::getDescription() const
{
return m_description;
}
const std::string& Ticket::getEmployeeId() const
{
return m_employeeId;
}
Enums::TicketStatus Ticket::getTicketStatus() const
{
return m_status;
}
Enums::TicketType Ticket::getTicketType() const
{
return m_type;
}
void Ticket::setTicketId(const std::string& id)
{
m_id = id;
}
void Ticket::setTicketDescription(const std::string& description)
{
m_description = description;
}
void Ticket::setEmployeeId(const std::string& id)
{
m_employeeId = id;
}
void Ticket::setTicketStatus(Enums::TicketStatus status)
{
m_status = status;
}
void Ticket::setTicketType(Enums::TicketType type)
{
m_type = type;
}
+28 -2
View File
@@ -1,5 +1,31 @@
#pragma once #pragma once
#include <string>
#include "Enums.h"
class Ticket class Ticket
{ {
}; private:
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,
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) {}
const std::string& getTicketId() const;
Enums::TicketType getTicketType() const;
const std::string& getDescription() const;
Enums::TicketStatus getTicketStatus() const;
const std::string& getEmployeeId() const;
void setTicketId(const std::string& id);
void setTicketType(Enums::TicketType type);
void setTicketDescription(const std::string& description);
void setTicketStatus(Enums::TicketStatus status);
void setEmployeeId(const std::string& id);
};
@@ -0,0 +1 @@
#include "LogService.h"
@@ -0,0 +1,5 @@
#pragma once
class LogService
{
};
@@ -1,5 +1,6 @@
#pragma once #pragma once
class TicketManagementService class TicketManagementService
{ {
}; };
@@ -0,0 +1 @@
#include "Enums.h"
@@ -0,0 +1,72 @@
#pragma once
namespace Enums {
enum class AccountStatus
{
ACTIVE,
INACTIVE
};
enum class TeamStatus
{
IN_TEAM,
NOT_IN_TEAM
};
enum class CandidateStatus
{
PENDING,
SHORTLISTED,
REJECTED
};
enum class NotificationStatus
{
READ,
UNREAD
};
enum class LeaveStatus
{
PENDING,
APPROVED,
REJECTED
};
enum class LeaveType
{
GENERAL,
MEDICAL,
RESTRICTED
};
enum class JobListingStatus
{
OPEN,
CLOSED
};
enum class TicketStatus
{
OPEN,
RESOLVED,
CLOSED
};
enum class TicketType
{
IT,
FINANCE,
ATTENDANCE,
UNKNOWN
};
enum class EmployeeDesignation
{
JUNIOR,
SENIOR,
TEAM_LEAD
};
}
@@ -0,0 +1,11 @@
#include "inputHelper.h"
void util::readString(std::string& value)
{
getline(std::cin >> std::ws, value);
}
void util::pressEnter()
{
system("pause");
}
@@ -0,0 +1,23 @@
#pragma once
#include <iostream>
#include <limits>
#include <string>
#include <stdexcept>
namespace util
{
template <typename T>
void readValue(T& value)
{
std::cin >> value;
if (std::cin.fail())
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
throw std::runtime_error("Invalid Console Input");
}
}
void readString(std::string&);
void pressEnter();
}
@@ -0,0 +1,6 @@
#include "outputHelper.h"
void util::clear()
{
std::cout << "\x1B[2J\x1B[H" << std::flush;
}
@@ -0,0 +1,7 @@
#pragma once
#include <iostream>
namespace util
{
void clear();
}
@@ -0,0 +1,86 @@
#include <sstream>
#include <iomanip>
#include <stdexcept>
#include "Timestamp.h"
util::Timestamp::Timestamp()
{
m_time = std::time(nullptr);
}
util::Timestamp::Timestamp(std::time_t timeValue)
{
m_time = timeValue;
}
util::Timestamp util::Timestamp::fromString(const std::string& timeString)
{
std::tm timeStruct = {};
std::istringstream inputStream(timeString);
inputStream >> std::get_time(&timeStruct, "%Y-%m-%d %H:%M:%S");
if (inputStream.fail())
{
throw std::runtime_error("Invalid time format");
}
std::time_t parsedTimestamp = std::mktime(&timeStruct);
return Timestamp(parsedTimestamp);
}
std::string util::Timestamp::toString() const
{
std::tm timeStruct = {};
localtime_s(&timeStruct, &m_time);
std::ostringstream outputStream;
outputStream << std::put_time(&timeStruct, "%Y-%m-%d %H:%M:%S");
return outputStream.str();
}
double util::Timestamp::getDurationInSeconds(const Timestamp& startTimestamp, const Timestamp& endTimestamp)
{
return std::difftime(endTimestamp.m_time, startTimestamp.m_time);
}
int util::Timestamp::getDateAsInt() const
{
std::tm timeStruct{};
localtime_s(&timeStruct, &m_time);
int year = timeStruct.tm_year + 1900;
int month = timeStruct.tm_mon + 1;
int day = timeStruct.tm_mday;
return year * 10000 + month * 100 + day;
}
double util::Timestamp::getDurationInMinutes(const Timestamp& startTimestamp, const Timestamp& endTimestamp)
{
return getDurationInSeconds(startTimestamp, endTimestamp) / 60.0;
}
double util::Timestamp::getDurationInHours(const Timestamp& startTimestamp, const Timestamp& endTimestamp)
{
return getDurationInSeconds(startTimestamp, endTimestamp) / 3600.0;
}
bool util::Timestamp::operator<(const Timestamp& other) const
{
return m_time < other.m_time;
}
bool util::Timestamp::operator>(const Timestamp& other) const
{
return m_time > other.m_time;
}
bool util::Timestamp::operator<=(const Timestamp& other) const
{
return m_time <= other.m_time;
}
bool util::Timestamp::operator>=(const Timestamp& other) const
{
return m_time >= other.m_time;
}
bool util::Timestamp::operator==(const Timestamp& other) const
{
return m_time == other.m_time;
}
@@ -0,0 +1,26 @@
#pragma once
#include <ctime>
#include <string>
namespace util
{
class Timestamp
{
private:
std::time_t m_time;
Timestamp(std::time_t time);
public:
Timestamp();
static Timestamp fromString(const std::string& timeString);
std::string toString() const;
static double getDurationInHours(const Timestamp&, const Timestamp&);
static double getDurationInMinutes(const Timestamp&, const Timestamp&);
static double getDurationInSeconds(const Timestamp&, const Timestamp&);
int getDateAsInt() const;
bool operator>(const Timestamp&) const;
bool operator<(const Timestamp&) const;
bool operator>=(const Timestamp&) const;
bool operator<=(const Timestamp&) const;
bool operator==(const Timestamp&) const;
};
}
@@ -0,0 +1,28 @@
#include "Validator.h"
bool util::isPhoneNumberValid(const std::string& phoneNumber) {
if (phoneNumber.size() != 10)
{
return false;
}
return std::all_of(phoneNumber.begin(), phoneNumber.end(),
[](char character)
{
return std::isdigit(character);
}
);
}
bool util::isEmailValid(const std::string& email) {
size_t index = email.find('@');
if (index == std::string::npos) return false;
if (email.find('@', index + 1) != std::string::npos)
{
return false;
}
if (index == 0 || index == email.size() - 1)
{
return false;
}
return true;
}
@@ -0,0 +1,10 @@
#pragma once
#include<string>
#include<algorithm>
#include<cctype>
namespace util
{
bool isPhoneNumberValid(const std::string&);
bool isEmailValid(const std::string&);
}