diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp index e35937d..7c74f9a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp @@ -89,21 +89,21 @@ void PayslipManagementService::savePayrolls() std::pair, std::shared_ptr> PayslipManagementService::getPayslipForMonth(const std::string& employeeId, int year, int month) { - auto& payrolls = m_dataStore.getPayrolls(); - auto& payslips = m_dataStore.getPayslips(); - for (const auto& payrollsPair : payrolls) + auto& employees = m_dataStore.getEmployees(); + auto employeeIterator = employees.find(employeeId); + if (employeeIterator == employees.end()) { - const auto& payroll = payrollsPair.second; - if (payroll->getEmployeeId() == employeeId) + throw std::runtime_error("Employee not found!"); + } + auto payroll = employeeIterator->second->getPayroll(); + auto& payslips = employeeIterator->second->getEmployeePayslips(); + for (const auto& payslipPair : payslips) + { + const auto& payslip = payslipPair.second; { - auto payslipIterator = payslips.find(payroll->getId()); - if (payslipIterator != payslips.end()) + if (payslip->getTimestamp().getYear() == year && payslip->getTimestamp().getMonth() == month) { - const auto& payslip = payslipIterator->second; - if (payslip->getTimestamp().getYear() == year && payslip->getTimestamp().getMonth() == month) - { - return { payroll, payslip }; - } + return { payroll, payslip }; } } } diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 74aadbc..2ee8c75 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -65,6 +65,8 @@ bool FinanceExecutiveMenu::handleOperation(int choice) { switch (choice) { + case 2: + viewPayslip(m_zenvyController); 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 3261460..ab35efa 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h @@ -304,7 +304,7 @@ inline void viewPayslip(std::shared_ptr controller) util::clear(); std::cout << "Enter the year: "; util::read(year); - std::cout << "\nEnter the month: "; + std::cout << "Enter the month: "; util::read(month); auto employee = controller->getCurrentEmployee(); if (!employee) @@ -318,7 +318,8 @@ inline void viewPayslip(std::shared_ptr controller) auto payslip = result.second; if (payroll && payslip) { - std::cout << "\nPayslip for " << employee->getEmployeeName() << " (" << year << "-" << std::setw(2) << std::setfill('0') << month << ")\n\n"; + util::clear(); + std::cout << "Payslip for " << employee->getEmployeeName() << " (" << year << "-" << std::setw(2) << std::setfill('0') << month << ")\n\n"; std::cout << "Basic Salary : " << payroll->getBasicSalary() << "\n"; std::cout << "House Rent Allowance : " << payroll->getHouseRentAllowance() << "\n"; std::cout << "Food Allowance : " << payroll->getFoodAllowance() << "\n";