diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h index 843371c..cf72793 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h @@ -3,6 +3,8 @@ #include #include"DataStore.h" +using payslipMap = std::map>; + class PayslipManagementService { private: diff --git a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h index a9f29f5..0ac464a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h +++ b/Trenser.Zenvy/Trenser.Zenvy/utilities/Enums.h @@ -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; + } + } + } + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp index bbe9462..f6bafd2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 2ee8c75..2bfd221 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp index bcda466..8c76ecb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp @@ -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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp index c73ceef..cdc1c74 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/ITExecutiveMenu.cpp @@ -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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h index ab35efa..35c7ddb 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h @@ -2,7 +2,9 @@ #include #include #include +#include #include +#include #include #include #include "Enums.h" @@ -16,6 +18,33 @@ void createEmployee(std::shared_ptr controller); void updateDesignation(std::shared_ptr m_zenvyController); +inline void viewPayslipHistory(std::shared_ptr 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 controller) { util::clear(); diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp index 967c986..e82c9df 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TalentExecutiveMenu.cpp @@ -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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp index ea03f8d..78f06a0 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamExecutiveMenu.cpp @@ -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; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp index 3f504f5..740d7c7 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/TeamLeadMenu.cpp @@ -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;