diff --git a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters index d9514f7..0def00c 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters +++ b/Trenser.Zenvy/Trenser.Zenvy/Trenser.Zenvy.vcxproj.filters @@ -192,6 +192,9 @@ Services + + Views + @@ -338,6 +341,9 @@ Services + + Views + diff --git a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp index 144f6d4..6b5d67a 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/controllers/ZenvyController.cpp @@ -50,7 +50,3 @@ Employees ZenvyController::getEmployees() { return m_employeeManagementService->getEmployees(); } - -std::shared_ptr ZenvyController::getEmployee(const std::string&) { - -} diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp index 952b832..613cc90 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/AuthenticationManagementService.cpp @@ -49,7 +49,7 @@ AuthenticationDTO AuthenticationManagementService::login(const std::string& emai void AuthenticationManagementService::changePassword(const std::string& password) { - std::shared_ptr authenticatedUser = m_dataStore.getAuthenticatedUser(); + std::shared_ptr authenticatedUser = m_dataStore.getAuthenticatedEmployee(); if (authenticatedUser) { authenticatedUser->setEmployeePassword(password); diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp index 21fd3df..022bf6e 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/EmployeeManagementService.cpp @@ -98,6 +98,14 @@ void EmployeeManagementService::createEmployee(Enums::EmployeeType employeeType, bool EmployeeManagementService::deactivateEmployee(const std::string& id) { + auto& employee = m_dataStore.getEmployees(); + auto iterator = employee.find(id); + if (iterator == employee.end()) + { + return false; + } + iterator->second->setEmployeeAccountStatus(Enums::AccountStatus::INACTIVE); + return true; } Employees EmployeeManagementService::getEmployees() diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp index bf65e3f..44388bf 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/AdminMenu.cpp @@ -118,10 +118,10 @@ bool AdminMenu::handleOperation(int choice) break; /*case 2: m_zenvyController.viewEmployee(); - break; - case 3: - m_zenvyController.deactivateEmployee(); break;*/ + case 3: + deactivateEmployee(m_zenvyController); + break; case 5: updateProfile(m_zenvyController); break; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp index a4eb3ac..5b82b20 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -32,7 +32,8 @@ bool EmployeeMenu::handleOperation(int choice) { switch (choice) { - /*case 1: + /* + case 1: m_zenvyController.applyLeave(); break; case 2: @@ -49,11 +50,11 @@ bool EmployeeMenu::handleOperation(int choice) break; case 6: m_zenvyController.viewTicketHistory(); - break;*/ - /*case 7: + break; + case 7: viewEmployees(); - break;*/ - /*case 8: + break; + case 8: m_zenvyController.searchEmployee(); break; case 9: diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp index 5b635b6..7fd76cc 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/HRManagerMenu.cpp @@ -1,3 +1,4 @@ + #include #include "HRManagerMenu.h" #include "InputHelper.h" @@ -91,7 +92,7 @@ void HRManagerMenu::run() { int choice; util::clear(); - std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create Employee\n9. Regularize Attendance\n10. Update Leave Request\n11. Register CandidateAsEmployee\n12. Update Profile\n13. Logout\nEnter your Choice: "; + std::cout << "Zenvy - The HR Management System\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. View Employees\n5. Search Employee\n6. View Notification\n7. View Announcements\n8. Create Employee\n9. Regularize Attendance\n10. Update Leave Request\n11. Register CandidateAsEmployee\n12. Update Profile\n13. Deactivate Employee\n14. Logout\nEnter your Choice: "; util::read(choice); if (!handleOperation(choice)) { @@ -147,6 +148,8 @@ bool HRManagerMenu::handleOperation(int choice) updateProfile(m_zenvyController); break; case 13: + deactivateEmployee(m_zenvyController); + case 14: return false; default: std::cout << "Enter a valid choice!" << std::endl; diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h index 2f557d1..502b9c2 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h +++ b/Trenser.Zenvy/Trenser.Zenvy/views/MenuHelper.h @@ -1,6 +1,13 @@ #pragma once -#include"ZenvyController.h" -#include"InputHelper.h" +#include +#include +#include +#include +#include +#include "Employee.h" +#include "ZenvyController.h" +#include "MenuHelper.h" +#include "InputHelper.h" #include"OutputHelper.h" inline void updateProfile(std::shared_ptr m_zenvyController) @@ -10,7 +17,7 @@ inline void updateProfile(std::shared_ptr m_zenvyController) name = m_zenvyController->getCurrentEmployee()->getEmployeeName(); phone = m_zenvyController->getCurrentEmployee()->getEmployeePhone(); while (true) - { + { util::clear(); std::cout << "Please choose the information you want to update:\n" "1. Name\n" @@ -19,7 +26,7 @@ inline void updateProfile(std::shared_ptr m_zenvyController) "Enter your choice: "; util::read(choice); switch (choice) - { + { case 1: std::cout << "Enter your updated Name :"; util::read(name); @@ -33,10 +40,66 @@ inline void updateProfile(std::shared_ptr m_zenvyController) std::cout << "Profile Updated Successfully\n"; break; case 3: - return; + return; default: std::cout << "Enter a valid choice!" << std::endl; break; - } - } + } + } +} + + +inline std::map> listActiveEmployees(const std::shared_ptr& controller) +{ + auto employees = controller->getEmployees(); + std::map> employeeList; + int index = 1; + std::cout << "Active Employees:\n"; + for (auto& activeEmployees : employees) + { + std::cout << std::setw(3) << index << ". " + << std::setw(10) << "ID: " + << std::setw(10) << activeEmployees->getEmployeeId() + << " | " + << std::setw(10) << "Name: " + << std::setw(20) << activeEmployees->getEmployeeName() + << "\n"; + employeeList[index] = activeEmployees; + ++index; + } + if (employeeList.empty()) + { + std::cout << "No active employees available.\n"; + } + return employeeList; +} + +void deactivateEmployee(const std::shared_ptr& controller) +{ + auto employeeList = listActiveEmployees(controller); + if (employeeList.empty()) + { + return; + } + int choice; + std::cout << "\nEnter the index of the employee to deactivate: "; + util::read(choice); + auto iterator = employeeList.find(choice); + if (iterator != employeeList.end()) + { + std::string id = iterator->second->getEmployeeId(); + bool success = controller->deactivateEmployee(id); + if (success) + { + std::cout << "Employee deactivated successfully\n"; + } + else + { + std::cout << "Employee not found\n"; + } + } + else + { + std::cout << "Invalid selection.\n"; + } }