Merged PR 968: UserStory EMP011 View Payslip History

Related work items: #956
This commit is contained in:
Jissin Mathew
2026-04-16 14:55:33 +05:30
10 changed files with 140 additions and 16 deletions
@@ -3,6 +3,8 @@
#include<stdexcept>
#include"DataStore.h"
using payslipMap = std::map<std::string, std::shared_ptr<Payslip>>;
class PayslipManagementService
{
private:
@@ -92,6 +92,23 @@ namespace Enums {
INVALID_PASSWORD
};
enum class Month
{
JANUARY,
FEBRUARY,
MARCH,
APRIL,
MAY,
JUNE,
JULY,
AUGUST,
SEPTEMBER,
OCTOBER,
NOVEMBER,
DECEMBER,
INVALID
};
inline std::string getAccountStatusString(AccountStatus status)
{
switch (status)
@@ -171,6 +188,41 @@ namespace Enums {
}
}
inline std::string getMonthString(Month month)
{
switch (month)
{
case Month::JANUARY :
return "January";
case Month::FEBRUARY:
return "February";
case Month::MARCH:
return "March";
case Month::APRIL:
return "April";
case Month::MAY:
return "May";
case Month::JUNE:
return "June";
case Month::JULY:
return "July";
case Month::AUGUST:
return "August";
case Month::SEPTEMBER:
return "September";
case Month::OCTOBER:
return "October";
case Month::NOVEMBER:
return "November";
case Month::DECEMBER:
return "December";
case Month::INVALID:
return "Invalid Month";
default:
return "Unknown";
}
}
inline AccountStatus getAccountStatus(const std::string& input)
{
if (input == "ACTIVE")
@@ -246,4 +298,39 @@ namespace Enums {
}
return EmployeeDesignation::INVALID;
}
inline Month getMonth(const int inputMonth)
{
switch (inputMonth)
{
case 1:
return Month::JANUARY;
case 2:
return Month::FEBRUARY;
case 3:
return Month::MARCH;
case 4:
return Month::APRIL;
case 5:
return Month::MAY;
case 6:
return Month::JUNE;
case 7:
return Month::JULY;
case 8:
return Month::AUGUST;
case 9:
return Month::SEPTEMBER;
case 10:
return Month::OCTOBER;
case 11:
return Month::NOVEMBER;
case 12:
return Month::DECEMBER;
default:
return Month::INVALID;
}
}
}
@@ -33,25 +33,12 @@ bool EmployeeMenu::handleOperation(int choice)
{
switch (choice)
{
/*case 1:
m_zenvyController.applyLeave();
break;*/
case 2:
viewPayslip(m_zenvyController);
m_zenvyController.viewPayslip();
break;
/*case 3:
m_zenvyController.viewPayslipHistory();
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 4 :
m_zenvyController.raiseTicket();
break;
case 5 :
m_zenvyController.viewTicket();
break;
case 6:
m_zenvyController.viewTicketHistory();
break;*/
case 7:
viewEmployees(m_zenvyController);
break;
@@ -67,6 +67,10 @@ bool FinanceExecutiveMenu::handleOperation(int choice)
{
case 2:
viewPayslip(m_zenvyController);
break;
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 4:
viewEmployees(m_zenvyController);
break;
@@ -35,6 +35,9 @@ bool HRManagerMenu::handleOperation(int choice)
case 2:
viewPayslip(m_zenvyController);
break;
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 4:
viewEmployees(m_zenvyController);
break;
@@ -35,6 +35,9 @@ bool ITExecutiveMenu::handleOperation(int choice)
case 2:
viewPayslip(m_zenvyController);
break;
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 4:
viewEmployees(m_zenvyController);
break;
@@ -2,7 +2,9 @@
#include <map>
#include <memory>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <utility>
#include "Enums.h"
@@ -16,6 +18,33 @@
void createEmployee(std::shared_ptr<ZenvyController> controller);
void updateDesignation(std::shared_ptr<ZenvyController> m_zenvyController);
inline void viewPayslipHistory(std::shared_ptr<ZenvyController> controller)
{
auto employeePayslips = controller->getCurrentEmployee()->getEmployeePayslips();
util::clear();
std::cout << "Payslips\n" << std::endl;
std::cout << std::left
<< std::setw(15) << "Date"
<< std::setw(15) << "Payslip ID"
<< std::setw(15) << "Employee ID"
<< std::setw(12) << "Salary"
<< std::setw(25) << "TimeStamp"
<< std::endl;
for (const auto& payslip : employeePayslips)
{
std::ostringstream dateStream;
dateStream << payslip.second->getTimestamp().getYear() << " - " << Enums::getMonthString(Enums::getMonth(payslip.second->getTimestamp().getMonth()));
std::cout << std::left
<< std::setw(15) << dateStream.str()
<< std::setw(15) << payslip.first
<< std::setw(15) << payslip.second->getEmployeeId()
<< std::setw(12) << payslip.second->getSalary()
<< std::setw(25) << payslip.second->getTimestamp().toString()
<< std::endl;
}
util::pressEnter();
}
inline void viewProfile(std::shared_ptr<ZenvyController> controller)
{
util::clear();
@@ -35,6 +35,9 @@ bool TalentExecutiveMenu::handleOperation(int choice)
case 2:
viewPayslip(m_zenvyController);
break;
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 4:
viewEmployees(m_zenvyController);
break;
@@ -35,6 +35,9 @@ bool TeamExecutiveMenu::handleOperation(int choice)
case 2:
viewPayslip(m_zenvyController);
break;
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 4:
viewEmployees(m_zenvyController);
break;
@@ -35,6 +35,9 @@ bool TeamLeadMenu::handleOperation(int choice)
case 2:
viewPayslip(m_zenvyController);
break;
case 3:
viewPayslipHistory(m_zenvyController);
break;
case 7:
viewEmployees(m_zenvyController);
break;