<UserStory>EMP003: View Employee Profile</UserStory>
<Changes>
- Added `viewProfile` method in MenuHelper to display employee details including ID, name, role, email, phone, team, and payroll.
- Integrated `viewProfile(m_zenvyController)` into all role-specific menus (Employee, Finance Executive, HR Manager, IT Executive, Talent Executive, Team Lead).
- Implemented safe downcasting for `GeneralEmployee` to access designation details.
- Enhanced output formatting with section headers and null checks for team ID and payroll.
- Improved error handling with runtime exception when employee record is missing.
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Removed old getEmployees() implementation
- Added templated getEmployees(...) for filtering by employee type
- Default now skips admin and returns only active employees
- Blocked login for inactive employees with proper error
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Sorted active employees by ID when listing
- Handled empty employee lists in menus
- Stopped deactivation when no employee is selected
- Showed "NULL" when team ID is missing
- Removed unnecessary error throw in payroll menu
</Changes>
<Review>
Smitha Mohan
</Review>
- Cleaned up employee menus and selection flow
- Fixed payroll ID issues and update logic
- Added saving/loading for employees and payroll
- Improved and centralized validation checks
- Added FileManager for file handling and cleanup
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Updated "View Employee" to "View Employees" in Admin Menu
- Added clear screen and header for employee list display
- Improved column spacing and alignment for better readability
- Reordered fields for a cleaner layout
- Added pressEnter prompt after viewing employees
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Fixed Payroll constructor to use given ID during deserialization
- Cleaned up salary update logic in PayslipManagementService
- Improved employee selection display in Finance menu
- Added employee type column in selection list
- Fixed typo in Employee menu (Ticket)
- Added confirmation message after payroll update
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Added Payroll getHeaders, serialize and deserialize functions
- Stored payrolls in DataStore
- Loaded and saved payrolls along with employees
- Linked payroll to employees during creation and load
- Added employeeId to Payroll
- Renamed TAG role to TALENT_ACQUISITION across the project
- Added missing TalentExecutive case in Employee deserialization
- Added constructor to TalentExecutive for FileManager integration
- Renamed ID counters to m_uid for consistency
- Updated salary values in ApplicationConfig
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Moved employee validation logic (active type check, email and phone duplication) to Validator utility
- Updated service to use util::hasActiveEmployeeOfType, util::isEmailDuplicate, and util::isPhoneDuplicate
- Integrated validator usage in MenuHelper for input validation
- Cleaned up formatting and minor inconsistencies
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Added header handling in FileManager load by skipping first line during deserialization
- Added support for writing headers using T::getHeaders() in FileManager save
- Implemented getHeaders() for Employee and GeneralEmployee models
- Added saveEmployees functionality in EmployeeManagementService
- Added persistStates method in ZenvyController
- Added deserialization failure check with exception handling
- Minor formatting cleanup in FileIO
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Added helper function to check for existing active employee of a given type
- Enforced business rule to allow only one active employee per non-general type
- Added duplicate email validation before employee creation
- Added duplicate phone number validation before employee creation
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Removed duplicate employee creation helper functions from AdminMenu and HRManagerMenu
- Centralized employee creation flow into MenuHelper.cpp
- Updated createEmployee to use current employee type for access control
- Fixed parameter order bug in createEmployee (email, name, phone)
- Improved menu titles for all roles (removed generic system header)
- Added util::pressEnter() for better UX on invalid input across menus
- Added newline before pause in InputHelper::pressEnter
- Cleaned up minor formatting issues
</Changes>
<SRS>SRS02 : Employee Management </SRS>
<Changes>
- Implemented serialization and deserialization for Employee and GeneralEmployee models
- Added FileManager integration to load employees from CSV files
- Introduced ApplicationConfig entries for employee file paths
- Updated Employee ID handling (getEmployeeId → getId) across project
- Modified FileIO to auto-create file if not found instead of throwing exception
- Added constructors for all employee types to support deserialization
- Implemented loadEmployees in service and loadStates in controller
- Ensured default admin creation if none exists during load
- Added StringHelper utility for extracting numeric IDs
- Extended Enums with string conversion and parsing utilities
- Added initial CSV files for Employee and GeneralEmployee data
- Improved login error message formatting and minor cleanup
- Setup gitignore to not track csv files
</Changes>
<SRS> SRS02 : Employee Management </SRS>
<Changes>
- Created FileIO for reading and writing files
- Created FileManager to use FileIO
- Set up Trenser.FileManager as a DLL
- Linked DLL with Trenser.Zenvy project
- Fixed duplicate function issue by marking deactivateEmployee as inline
- Cleaned up unused methods in controller and service
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP002 : Deactivate Employee </UserStory>
<Changes>
- Updated employee listing to display in a tabular format with headers
- Renamed helper function from listActiveEmployees to listEmployees
- Updated error messages
- Removed blank spaces
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory>
EMP002 : Deactivate Employee
</UserStory>
<Changes>
- Added deactivateEmployee logic to set employee status to INACTIVE
- Enabled Deactivate Employee option in AdminMenu
- Implemented listing of active employees for selection
- Connected UI flow for employee deactivation
- Fix minor syntax issues
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP006 : Search Employee </UserStory>
<Changes>
- Updated MenuHelper.h helper file for input validation
- Updated search employee logic in employee management service
- Removed comments in Enums.h and EmployeeManagementService.h
- Included MenuHelper.h in all User Menu files
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory>EMP08: Update Salary Details</UserStory>
<Changes>
- Added `updateSalary` method in ZenvyController to connect payroll updates with PayslipManagementService
- Implemented `PayslipManagementService::updateSalary` with employee existence and Finance-role authorization checks
- Extended Payroll model with setter methods for salary components
- Improved error handling with clear runtime exceptions for invalid index selection, unauthorized access, and missing employees
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP007 : View Employees </UserStory>
<Changes>
- Added MenuHelper.cpp and MenuHelper.h to project configuration
- Moved viewEmployees() implementation from individual menu classes into MenuHelper
- Added inline viewEmployees(shared_ptr<ZenvyController>) helper with formatted output
- Added enumToString() to MenuHelper for employee role display
- Updated AdminMenu, EmployeeMenu, FinanceExecutiveMenu, HRManagerMenu,
ITExecutiveMenu, TalentExecutiveMenu, TeamExecutiveMenu, and TeamLeadMenu
to use viewEmployees(m_zenvyController) instead of per‑menu implementations
- Removed old viewEmployees() method from EmployeeMenu
- Updated menu options to reflect new centralized viewEmployees() function
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP004 : Update Personal Details </UserStory>
<Changes>
- Added MenuHelper.cpp and MenuHelper.h and integrated them into project
- Moved updateProfile() logic from individual menus into MenuHelper
- Added inline updateProfile(shared_ptr<ZenvyController>) to MenuHelper
- Updated AdminMenu, EmployeeMenu, HRManagerMenu, FinanceExecutiveMenu,
ITExecutiveMenu, TalentExecutiveMenu, TeamExecutiveMenu, and TeamLeadMenu
to use centralized updateProfile()
- Added getCurrentEmployee() and updateProfile() to ZenvyController
- Added corresponding implementations in EmployeeManagementService
- Minor layout and option text improvements across all menus
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP006 : Search Employee </UserStory>
<Changes>
- Added MenuHelper.cpp and MenuHelper.h helper files to project
- Added searchEmployee method in ZenvyController returning employee type and list
- Implemented search Employee logic in Employement Management Service
- Connected searchEmployee to all the User Menu
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP007 : View All Employees </UserStory>
<Changes>
- Added check for empty employee map
- Filtered only ACTIVE employees
- Added formatted table using <iomanip> in EmplopyeeMenu::viewEmployee()
- Added check for empty employee list
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP007 : View All Employees </UserStory>
<Changes>
- Implemented getEmployees() in ZenvyController to return list of employees
- Added working getEmployees() implementation in EmployeeManagementService
- Fixed iterator usage to correctly extract map values into Employees vector
- Added viewEmployees() UI flow in EmployeeMenu
- Integrated employee listing into EmployeeMenu option flow
- Added enumToString() helper for printing employee roles
- Improved formatting and filtering of ACTIVE employees in employee listing
- Performed minor code cleanup and consistency adjustments in controller and menu
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory>EMP001 Create Employee</UserStory>
<Changes>
- Updated employee creation flow to support different employee types and designations
- Set a default initial password for new employees
- Added basic authorization check utility
- Cleaned up employee model constructors for better consistency
Minor code cleanup and refactoring
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS01 : Authentication </SRS>
<Changes>
- Fixed polymorphism errors in Employee base class by adding virtual destructor.
- Corrected constructor mismatch in GeneralEmployee to properly call Employee constructor with EmployeeType.
- Created UserInterface object in main() and invoked run() to start role-based menus.
</Changes>
<Review>
Smitha Mohan
</Review>
<SRS> SRS01 : Authentication </SRS>
<Changes>
- Added basic UI structure with UserInterface and role-based menus (Admin, HR, IT, Finance, Talent, Team, TeamLead, Employee).
- Created menu classes for different roles, each with run() and handleOperation() methods.
</Changes>
<Review>
Smitha Mohan
</Review>