Merged PR 921: UserStory EMP008 Update Salary Details
Related work items: #953
This commit is contained in:
@@ -27,11 +27,16 @@ bool ZenvyController::deactivateEmployee(const std::string& id)
|
|||||||
return m_employeeManagementService->deactivateEmployee(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);
|
m_employeeManagementService->updateProfile(name,phone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZenvyController::updateSalary(const std::string& employeeId, double basicSalary, double houseRentAllowance, double foodAllowance, double employeePFContribution, double employerPFContribution)
|
||||||
|
{
|
||||||
|
m_payslipManagementService->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution);
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<const Employee> ZenvyController::getCurrentEmployee()
|
std::shared_ptr<const Employee> ZenvyController::getCurrentEmployee()
|
||||||
{
|
{
|
||||||
return m_employeeManagementService->getCurrentEmployee();
|
return m_employeeManagementService->getCurrentEmployee();
|
||||||
@@ -40,6 +45,12 @@ std::shared_ptr<const Employee> ZenvyController::getCurrentEmployee()
|
|||||||
std::shared_ptr<const Employee> ZenvyController::getEmployee(const std::string& id)
|
std::shared_ptr<const Employee> ZenvyController::getEmployee(const std::string& id)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Employees ZenvyController::getEmployees()
|
Employees ZenvyController::getEmployees()
|
||||||
{
|
{
|
||||||
|
return m_employeeManagementService->getEmployees();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<const Employee> ZenvyController::getEmployee(const std::string&) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,4 +51,7 @@ public:
|
|||||||
std::shared_ptr<const Employee> getEmployee(const std::string&);
|
std::shared_ptr<const Employee> getEmployee(const std::string&);
|
||||||
std::shared_ptr<const Employee> getCurrentEmployee();
|
std::shared_ptr<const Employee> getCurrentEmployee();
|
||||||
void updateProfile(const std::string&,const std::string&);
|
void updateProfile(const std::string&,const std::string&);
|
||||||
|
|
||||||
|
//Payslip management
|
||||||
|
void updateSalary(const std::string&, double, double, double, double, double);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,8 +27,4 @@ employeeMap& DataStore::getEmployees()
|
|||||||
return m_employees;
|
return m_employees;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Employee>& DataStore::getAuthenticatedUser()
|
|
||||||
{
|
|
||||||
return m_authenticatedEmployee;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ public:
|
|||||||
DataStore(DataStore&&) = delete;
|
DataStore(DataStore&&) = delete;
|
||||||
DataStore& operator=(DataStore&&) = delete;
|
DataStore& operator=(DataStore&&) = delete;
|
||||||
employeeMap& getEmployees();
|
employeeMap& getEmployees();
|
||||||
std::shared_ptr<Employee>& getAuthenticatedUser();
|
|
||||||
logMap& getLogs();
|
logMap& getLogs();
|
||||||
std::shared_ptr<Employee>& getAuthenticatedEmployee();
|
std::shared_ptr<Employee>& getAuthenticatedEmployee();
|
||||||
void setAuthenticatedEmployee(std::shared_ptr < Employee>);
|
void setAuthenticatedEmployee(std::shared_ptr < Employee>);
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ double Payroll::getEmployerPFContribution() const
|
|||||||
return m_employerPFContribution;
|
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)
|
void Payroll::setHouseRentAllowance(double value)
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ public:
|
|||||||
double getFoodAllowance() const;
|
double getFoodAllowance() const;
|
||||||
double getEmployeePFContribution() const;
|
double getEmployeePFContribution() const;
|
||||||
double getEmployerPFContribution() const;
|
double getEmployerPFContribution() const;
|
||||||
void setPayrollID(const std::string& id);
|
void setBasicSalary(double);
|
||||||
void setHouseRentAllowance(double value);
|
void setHouseRentAllowance(double);
|
||||||
void setFoodAllowance(double value);
|
void setFoodAllowance(double);
|
||||||
void setEmployeePFContribution(double value);
|
void setEmployeePFContribution(double);
|
||||||
void setEmployerPFContribution(double value);
|
void setEmployerPFContribution(double);
|
||||||
};
|
};
|
||||||
@@ -61,8 +61,8 @@ void AuthenticationManagementService::changePassword(const std::string& password
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AuthenticationManagementService::logout() {
|
void AuthenticationManagementService::logout() {
|
||||||
if (m_dataStore.getAuthenticatedUser()) {
|
if (m_dataStore.getAuthenticatedEmployee()) {
|
||||||
m_dataStore.getAuthenticatedUser() = nullptr;
|
m_dataStore.getAuthenticatedEmployee() = nullptr;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw std::runtime_error("No user currently logged In...");
|
throw std::runtime_error("No user currently logged In...");
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ bool EmployeeManagementService::deactivateEmployee(const std::string& id)
|
|||||||
|
|
||||||
Employees EmployeeManagementService::getEmployees()
|
Employees EmployeeManagementService::getEmployees()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<const Employee> EmployeeManagementService::getEmployee(const std::string& id)
|
std::shared_ptr<const Employee> EmployeeManagementService::getEmployee(const std::string& id)
|
||||||
|
|||||||
@@ -1 +1,21 @@
|
|||||||
#include "PayslipManagementService.h"
|
#include "PayslipManagementService.h"
|
||||||
|
#include "AuthorizationHelper.h"
|
||||||
|
#include "Enums.h"
|
||||||
|
|
||||||
|
void PayslipManagementService::updateSalary(const std::string& employeeId, double basicSalary, double houseRentAllowance, double foodAllowance, double employeePFContribution, double employerPFContribution)
|
||||||
|
{
|
||||||
|
util::enforceAuthorization(m_dataStore.getAuthenticatedEmployee()->getEmployeeType(), Enums::EmployeeType::FINANCE);
|
||||||
|
auto employee = m_dataStore.getEmployees().find(employeeId);
|
||||||
|
if (employee != m_dataStore.getEmployees().end() && employee->second->getEmployeeType() != Enums::EmployeeType::ADMIN)
|
||||||
|
{
|
||||||
|
(employee->second)->getPayroll()->setBasicSalary(basicSalary);
|
||||||
|
(employee->second)->getPayroll()->setHouseRentAllowance(houseRentAllowance);
|
||||||
|
(employee->second)->getPayroll()->setFoodAllowance(foodAllowance);
|
||||||
|
(employee->second)->getPayroll()->setEmployeePFContribution(employeePFContribution);
|
||||||
|
(employee->second)->getPayroll()->setEmployerPFContribution(employerPFContribution);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Employee not found, unable to update the salary");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "DataStore.h"
|
#include <string>
|
||||||
|
#include<stdexcept>
|
||||||
|
#include"DataStore.h"
|
||||||
|
|
||||||
class PayslipManagementService
|
class PayslipManagementService
|
||||||
{
|
{
|
||||||
@@ -7,4 +9,5 @@ private:
|
|||||||
DataStore& m_dataStore;
|
DataStore& m_dataStore;
|
||||||
public:
|
public:
|
||||||
PayslipManagementService() : m_dataStore(DataStore::getInstance()) {};
|
PayslipManagementService() : m_dataStore(DataStore::getInstance()) {};
|
||||||
|
void updateSalary(const std::string&, double, double, double, double, double);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -28,47 +28,110 @@ void FinanceExecutiveMenu::run()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string FinanceExecutiveMenu::getSelectedUserId()
|
||||||
|
{
|
||||||
|
int choice;
|
||||||
|
std::map<int, std::shared_ptr<const Employee>> employeeList;
|
||||||
|
int index = 0;
|
||||||
|
auto allEmployees = m_zenvyController->getEmployees();
|
||||||
|
for (auto& currentEmployee : allEmployees)
|
||||||
|
{
|
||||||
|
if (currentEmployee->getEmployeeType() == Enums::EmployeeType::ADMIN)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
employeeList[++index] = currentEmployee;
|
||||||
|
}
|
||||||
|
std::cout << std::left
|
||||||
|
<< std::setw(6) << "Index"
|
||||||
|
<< std::setw(15) << "Employee Id"
|
||||||
|
<< std::setw(25) << "Name" << std::endl;
|
||||||
|
for (const auto& employee : employeeList)
|
||||||
|
{
|
||||||
|
std::cout << std::left << std::setw(6) << employee.first
|
||||||
|
<< std::setw(15) << employee.second->getEmployeeId()
|
||||||
|
<< std::setw(25) << employee.second->getEmployeeName()
|
||||||
|
<< std::endl;
|
||||||
|
}
|
||||||
|
std::cout << "Enter the Index: ";
|
||||||
|
util::read(choice);
|
||||||
|
auto employeeIterator = employeeList.find(choice);
|
||||||
|
if (employeeIterator != employeeList.end())
|
||||||
|
{
|
||||||
|
return (employeeIterator->second->getEmployeeId());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid Index");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
bool FinanceExecutiveMenu::handleOperation(int choice)
|
||||||
{
|
{
|
||||||
switch (choice)
|
switch (choice)
|
||||||
{
|
{
|
||||||
/*case 1:
|
//case 1:
|
||||||
m_zenvyController.applyLeave();
|
// m_zenvyController.applyLeave();
|
||||||
break;
|
// break;
|
||||||
case 2:
|
//case 2:
|
||||||
m_zenvyController.viewPayslip();
|
// m_zenvyController.viewPayslip();
|
||||||
break;
|
// break;
|
||||||
case 3:
|
//case 3:
|
||||||
m_zenvyController.viewPayslipHistory();
|
// m_zenvyController.viewPayslipHistory();
|
||||||
break;
|
// break;
|
||||||
case 4:
|
//case 4:
|
||||||
m_zenvyController.viewEmployees();
|
// m_zenvyController.viewEmployees();
|
||||||
break;
|
// break;
|
||||||
case 5:
|
//case 5:
|
||||||
m_zenvyController.searchEmployee();
|
// m_zenvyController.searchEmployee();
|
||||||
break;
|
// break;
|
||||||
case 6:
|
//case 6:
|
||||||
m_zenvyController.viewNotifications();
|
// m_zenvyController.viewNotifications();
|
||||||
break;
|
// break;
|
||||||
case 7:
|
//case 7:
|
||||||
m_zenvyController.viewAnnouncements();
|
// m_zenvyController.viewAnnouncements();
|
||||||
break;
|
// break;
|
||||||
case 8:
|
//case 8:
|
||||||
m_zenvyController.resolveTicket();
|
// m_zenvyController.resolveTicket();
|
||||||
break;
|
// break;
|
||||||
case 9:
|
//case 9:
|
||||||
m_zenvyController.generatePayslip();
|
// m_zenvyController.generatePayslip();
|
||||||
break;
|
// break;
|
||||||
case 10:
|
case 10:
|
||||||
m_zenvyController.updatePayroll();
|
updatePayroll();
|
||||||
break;*/
|
|
||||||
case 10:
|
|
||||||
updateProfile(m_zenvyController);
|
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
|
updateProfile(m_zenvyController);
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
std::cout << "Enter a valid choice!" << std::endl;
|
std::cout << "Enter a valid choice!" << std::endl;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include<memory>
|
#include<memory>
|
||||||
|
#include<iostream>
|
||||||
|
#include<stdexcept>
|
||||||
|
#include <iomanip>
|
||||||
#include"ZenvyController.h"
|
#include"ZenvyController.h"
|
||||||
|
|
||||||
class FinanceExecutiveMenu
|
class FinanceExecutiveMenu
|
||||||
@@ -10,5 +13,7 @@ public:
|
|||||||
FinanceExecutiveMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
|
FinanceExecutiveMenu() : m_zenvyController(std::make_shared<ZenvyController>()) {};
|
||||||
void run();
|
void run();
|
||||||
bool handleOperation(int);
|
bool handleOperation(int);
|
||||||
|
std::string getSelectedUserId();
|
||||||
|
void updatePayroll();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user