153 lines
3.8 KiB
C++
153 lines
3.8 KiB
C++
/*
|
|
File: Payroll.cpp
|
|
* Description : Stores payroll and salary breakdown details for an employee.
|
|
* Author : Trenser
|
|
* Created : 31-Mar-2026
|
|
*/
|
|
|
|
#include "Payroll.h"
|
|
#include "StringHelper.h"
|
|
#include "Factory.h"
|
|
|
|
int Payroll::m_uid = 0;
|
|
|
|
Payroll::Payroll(const std::string& id,
|
|
const std::string& employeeId,
|
|
double basicSalary,
|
|
double houseRentAllowance,
|
|
double foodAllowance,
|
|
double employeePFContribution,
|
|
double employerPFContribution)
|
|
: m_id(id),
|
|
m_employeeId(employeeId),
|
|
m_basicSalary(basicSalary),
|
|
m_houseRentAllowance(houseRentAllowance),
|
|
m_foodAllowance(foodAllowance),
|
|
m_employeePFContribution(employeePFContribution),
|
|
m_employerPFContribution(employerPFContribution)
|
|
{
|
|
int idNumber = util::extractNumber(m_id);
|
|
if (idNumber > m_uid)
|
|
{
|
|
m_uid = idNumber;
|
|
}
|
|
}
|
|
|
|
const std::string& Payroll::getId() const
|
|
{
|
|
return m_id;
|
|
}
|
|
|
|
const std::string& Payroll::getEmployeeId() const
|
|
{
|
|
return m_employeeId;
|
|
}
|
|
|
|
void Payroll::setEmployeeId(const std::string& employeeId)
|
|
{
|
|
m_employeeId = employeeId;
|
|
}
|
|
|
|
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::setBasicSalary(double basicSalary)
|
|
{
|
|
m_basicSalary = basicSalary;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
std::string Payroll::serialize() const
|
|
{
|
|
std::ostringstream serializedPayroll;
|
|
serializedPayroll << m_id << ','
|
|
<< m_employeeId << ','
|
|
<< m_basicSalary << ','
|
|
<< m_houseRentAllowance << ','
|
|
<< m_foodAllowance << ','
|
|
<< m_employeePFContribution << ','
|
|
<< m_employerPFContribution;
|
|
return serializedPayroll.str();
|
|
}
|
|
|
|
std::shared_ptr<Payroll> Payroll::deserialize(const std::string& record)
|
|
{
|
|
std::string id, employeeId;
|
|
std::string basicSalaryString, houseRentAllowanceString, foodAllowanceString, employeePFString, employerPFString;
|
|
std::istringstream serializedPayroll(record);
|
|
std::getline(serializedPayroll, id, ',');
|
|
std::getline(serializedPayroll, employeeId, ',');
|
|
std::getline(serializedPayroll, basicSalaryString, ',');
|
|
std::getline(serializedPayroll, houseRentAllowanceString, ',');
|
|
std::getline(serializedPayroll, foodAllowanceString, ',');
|
|
std::getline(serializedPayroll, employeePFString, ',');
|
|
std::getline(serializedPayroll, employerPFString, ',');
|
|
try
|
|
{
|
|
double basicSalary = std::stod(basicSalaryString);
|
|
double houseRentAllowance = std::stod(houseRentAllowanceString);
|
|
double foodAllowance = std::stod(foodAllowanceString);
|
|
double employeePFContribution = std::stod(employeePFString);
|
|
double employerPFContribution = std::stod(employerPFString);
|
|
return Factory::getObject<Payroll>(
|
|
id,
|
|
employeeId,
|
|
basicSalary,
|
|
houseRentAllowance,
|
|
foodAllowance,
|
|
employeePFContribution,
|
|
employerPFContribution
|
|
);
|
|
}
|
|
catch (...)
|
|
{
|
|
throw std::runtime_error("Failed to deserialize Payroll object");
|
|
}
|
|
}
|
|
|
|
std::string Payroll::getHeaders()
|
|
{
|
|
return "PayrollId,EmployeeId,BasicSalary,HouseRentAllowance,FoodAllowance,EmployeePFContribution,EmployerPFContribution";
|
|
}
|