101 lines
2.1 KiB
C++
101 lines
2.1 KiB
C++
/*
|
|
File: Payslip.cpp
|
|
* Description : Models a payslip entity that stores salary information.
|
|
* Author : Trenser
|
|
* Created : 31-Mar-2026
|
|
*/
|
|
#include <sstream>
|
|
#include "Payslip.h"
|
|
#include "StringHelper.h"
|
|
#include "Factory.h"
|
|
|
|
int Payslip::m_uid = 0;
|
|
|
|
Payslip::Payslip(const std::string& id,
|
|
const std::string& employeeId,
|
|
double salary,
|
|
util::Timestamp timestamp)
|
|
: m_id(id),
|
|
m_employeeId(employeeId),
|
|
m_salary(salary),
|
|
m_timestamp(timestamp)
|
|
{
|
|
int idNumber = util::extractNumber(m_id);
|
|
if (idNumber > m_uid)
|
|
{
|
|
m_uid = idNumber;
|
|
}
|
|
}
|
|
|
|
const std::string& Payslip::getId() 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;
|
|
}
|
|
|
|
const util::Timestamp& Payslip::getTimestamp() const
|
|
{
|
|
return m_timestamp;
|
|
}
|
|
|
|
const std::string& Payslip::getEmployeeId() const
|
|
{
|
|
return m_employeeId;
|
|
}
|
|
|
|
std::string Payslip::serialize() const
|
|
{
|
|
std::ostringstream serializedPayslip;
|
|
serializedPayslip << m_id << ','
|
|
<< m_employeeId << ','
|
|
<< m_salary << ','
|
|
<< m_timestamp.toString();
|
|
return serializedPayslip.str();
|
|
}
|
|
|
|
Payslip* Payslip::deserialize(const std::string& record)
|
|
{
|
|
std::string id, employeeId, timestampString;
|
|
std::string salaryString;
|
|
std::istringstream serializedPayslip(record);
|
|
std::getline(serializedPayslip, id, ',');
|
|
std::getline(serializedPayslip, employeeId, ',');
|
|
std::getline(serializedPayslip, salaryString, ',');
|
|
std::getline(serializedPayslip, timestampString, ',');
|
|
|
|
try
|
|
{
|
|
double salary = std::stod(salaryString);
|
|
util::Timestamp timestamp = util::Timestamp::fromString(timestampString);
|
|
return Factory::getObject<Payslip>(
|
|
id,
|
|
employeeId,
|
|
salary,
|
|
timestamp
|
|
);
|
|
}
|
|
catch (...)
|
|
{
|
|
throw std::runtime_error("Failed to deserialize Payslip object");
|
|
}
|
|
}
|
|
|
|
std::string Payslip::getHeaders()
|
|
{
|
|
return "PayslipId,EmployeeId,Salary,Timestamp";
|
|
}
|