diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 0e9ef77..9394a85 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -27,11 +27,16 @@ bool ZenvyController::deactivateEmployee(const std::string& id) return m_employeeManagementService->deactivateEmployee(id); } -void ZenvyController::updateProfile(const std::string& name,const std::string& phone) +void ZenvyController::updateProfile(const std::string& name, const std::string& phone) { m_employeeManagementService->updateProfile(name,phone); } +void ZenvyController::updateSalary(const std::string& employeeId, const double basicSalary, const double houseRentAllowance, const double foodAllowance, const double employeePFContribution, const double employerPFContribution) +{ + m_payslipManagementService->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution); +} + std::shared_ptr ZenvyController::getCurrentEmployee() { return m_employeeManagementService->getCurrentEmployee(); @@ -40,6 +45,8 @@ std::shared_ptr ZenvyController::getCurrentEmployee() std::shared_ptr ZenvyController::getEmployee(const std::string& id) { } + Employees ZenvyController::getEmployees() { + return m_employeeManagementService->getEmployees(); } diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h index d1404d5..8a7fd35 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.h @@ -51,4 +51,7 @@ public: std::shared_ptr getEmployee(const std::string&); std::shared_ptr getCurrentEmployee(); void updateProfile(const std::string&,const std::string&); + + //payslip management + void updateSalary(const std::string&, const double, const double, const double, const double, const double); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp index e4f3c0c..40b473f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.cpp @@ -27,8 +27,4 @@ employeeMap& DataStore::getEmployees() return m_employees; } -std::shared_ptr& DataStore::getAuthenticatedUser() -{ - return m_authenticatedEmployee; -} diff --git a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h index 5ecfb70..750d741 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h +++ b/Trenser.Zenvy/Trenser.Zenvy/datastores/DataStore.h @@ -36,7 +36,6 @@ public: DataStore(DataStore&&) = delete; DataStore& operator=(DataStore&&) = delete; employeeMap& getEmployees(); - std::shared_ptr& getAuthenticatedUser(); logMap& getLogs(); std::shared_ptr& getAuthenticatedEmployee(); void setAuthenticatedEmployee(std::shared_ptr < Employee>); diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp index 71a3d5a..fe439d6 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp @@ -32,9 +32,9 @@ double Payroll::getEmployerPFContribution() const return m_employerPFContribution; } -void Payroll::setPayrollID(const std::string& id) +void Payroll::setBasicSalary(double basicSalary) { - m_id = id; + m_basicSalary = basicSalary; } void Payroll::setHouseRentAllowance(double value) diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h index 48215f5..8aaae92 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.h @@ -25,9 +25,9 @@ public: double getFoodAllowance() const; double getEmployeePFContribution() const; double getEmployerPFContribution() const; - void setPayrollID(const std::string& id); - void setHouseRentAllowance(double value); - void setFoodAllowance(double value); - void setEmployeePFContribution(double value); - void setEmployerPFContribution(double value); + void setBasicSalary(double); + void setHouseRentAllowance(double); + void setFoodAllowance(double); + void setEmployeePFContribution(double); + void setEmployerPFContribution(double); }; \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 9d7fc4f..952b832 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -61,8 +61,8 @@ void AuthenticationManagementService::changePassword(const std::string& password } void AuthenticationManagementService::logout() { - if (m_dataStore.getAuthenticatedUser()) { - m_dataStore.getAuthenticatedUser() = nullptr; + if (m_dataStore.getAuthenticatedEmployee()) { + m_dataStore.getAuthenticatedEmployee() = nullptr; } else { throw std::runtime_error("No user currently logged In..."); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp index 49a86cc..21fd3df 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp @@ -102,6 +102,7 @@ bool EmployeeManagementService::deactivateEmployee(const std::string& id) Employees EmployeeManagementService::getEmployees() { + } std::shared_ptr EmployeeManagementService::getEmployee(const std::string& id) diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h index 14c8131..c7ab33f 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.h @@ -14,6 +14,7 @@ public: EmployeeManagementService() : m_dataStore(DataStore::getInstance()) {}; void createEmployee(Enums::EmployeeType, Enums::EmployeeDesignation, const std::string&, const std::string&, const std::string&); bool deactivateEmployee(const std::string&); + Employees getEmployees(); std::shared_ptr getEmployee(const std::string&); void updateProfile(const std::string&,const std::string&); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp index 154cf1f..2402cb8 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp @@ -1 +1,24 @@ #include "PayslipManagementService.h" + +void PayslipManagementService::updateSalary(const std::string& employeeId, const double basicSalary, const double houseRentAllowance, const double foodAllowance, const double employeePFContribution, const double employerPFContribution) +{ + if (m_dataStore.getAuthenticatedEmployee()->getEmployeeType() == Enums::EmployeeType::FINANCE) { + auto findedEmployee = m_dataStore.getEmployees().find(employeeId); + if (findedEmployee != m_dataStore.getEmployees().end()) + { + (findedEmployee->second)->getPayroll()->setBasicSalary(basicSalary); + (findedEmployee->second)->getPayroll()->setHouseRentAllowance(houseRentAllowance); + (findedEmployee->second)->getPayroll()->setFoodAllowance(foodAllowance); + (findedEmployee->second)->getPayroll()->setEmployeePFContribution(employeePFContribution); + (findedEmployee->second)->getPayroll()->setEmployerPFContribution(employerPFContribution); + } + else + { + throw std::runtime_error("Employee not found, unable to update the salary"); + } + } + else + { + throw std::runtime_error("Unauthorized access"); + } +} \ No newline at end of file diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h index fb51a34..57e31e5 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.h @@ -1,5 +1,7 @@ #pragma once -#include "DataStore.h" +#include +#include +#include"DataStore.h" class PayslipManagementService { @@ -7,4 +9,5 @@ private: DataStore& m_dataStore; public: PayslipManagementService() : m_dataStore(DataStore::getInstance()) {}; + void updateSalary(const std::string&, const double, const double, const double, const double, const double); }; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 7b3f248..5471a42 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -28,47 +28,100 @@ void FinanceExecutiveMenu::run() } } +std::string FinanceExecutiveMenu::getSelectedUserId() +{ + int choice; + std::map> currentEmployeeList; + int index = 0; + for (auto& currentEmployee : m_zenvyController->getEmployees()) + { + currentEmployeeList[++index] = currentEmployee; + } + for (auto& currentEmployee: currentEmployeeList) + { + std::cout << currentEmployee.first << ". Employee Id: " << currentEmployee.second->getEmployeeId() << "Name: " << currentEmployee.second->getEmployeeName() << std::endl; + } + std::cout << "Enter the Index: "; + util::read(choice); + if (currentEmployeeList.count(choice) == 0) + { + throw std::runtime_error("Enter a valid index"); + } + else + { + auto selectedEmployee = currentEmployeeList.find(choice); + return (selectedEmployee->second->getEmployeeId()); + } + +} + +void FinanceExecutiveMenu::updatePayroll() +{ + std::string employeeId; + double basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution; + employeeId = getSelectedUserId(); + if (employeeId != "") { + std::cout << "Enter the New Basic Salary: "; + util::read(basicSalary); + std::cout << "Enter the New House Rent Allowance: "; + util::read(houseRentAllowance); + std::cout << "Enter the New Food Allowance: "; + util::read(foodAllowance); + std::cout << "Enter the New EmployeePFContribution: "; + util::read(employeePFContribution); + std::cout << "Enter the New EmplyerPFContribution: "; + util::read(employerPFContribution); + m_zenvyController->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution); + } + else { + throw std::runtime_error("Unexpected error occured"); + } +} + + bool FinanceExecutiveMenu::handleOperation(int choice) { switch (choice) { - /*case 1: - m_zenvyController.applyLeave(); - break; - case 2: - m_zenvyController.viewPayslip(); - break; - case 3: - m_zenvyController.viewPayslipHistory(); - break; - case 4: - m_zenvyController.viewEmployees(); - break; - case 5: - m_zenvyController.searchEmployee(); - break; - case 6: - m_zenvyController.viewNotifications(); - break; - case 7: - m_zenvyController.viewAnnouncements(); - break; - case 8: - m_zenvyController.resolveTicket(); - break; - case 9: - m_zenvyController.generatePayslip(); - break; + //case 1: + // m_zenvyController.applyLeave(); + // break; + //case 2: + // m_zenvyController.viewPayslip(); + // break; + //case 3: + // m_zenvyController.viewPayslipHistory(); + // break; + //case 4: + // m_zenvyController.viewEmployees(); + // break; + //case 5: + // m_zenvyController.searchEmployee(); + // break; + //case 6: + // m_zenvyController.viewNotifications(); + // break; + //case 7: + // m_zenvyController.viewAnnouncements(); + // break; + //case 8: + // m_zenvyController.resolveTicket(); + // break; + //case 9: + // m_zenvyController.generatePayslip(); + // break; case 10: - m_zenvyController.updatePayroll(); - break;*/ - case 10: - updateProfile(m_zenvyController); + updatePayroll(); break; case 11: + updateProfile(m_zenvyController); + break; + case 12: return false; default: std::cout << "Enter a valid choice!" << std::endl; } return true; } + + diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h index 825322f..26a0936 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include"ZenvyController.h" class FinanceExecutiveMenu @@ -10,5 +11,7 @@ public: FinanceExecutiveMenu() : m_zenvyController(std::make_shared()) {}; void run(); bool handleOperation(int); + std::string getSelectedUserId(); + void updatePayroll(); };