<UserStory> EMP011 : View Payslip History </UserStory>
<Changes>
- Removed getPayslips() method from ZenvyController and PayslipManagementService as part of review cleanup.
- Reformatted Enums::getMonthString() and Enums::getMonth() functions for consistent indentation and readability.
- Ensured switch-case blocks in Enums.h follow proper alignment and coding standards.
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP010 : View Payslip </UserStory>
<Changes>
- Refactored getPayslipForMonth() to fetch payroll and payslips via employee data
- Added validation for invalid employee ID
- Simplified payslip search using employee-specific payslip records
- Enabled “View Payslip” option in Finance Executive menu
- Minor UI cleanup in payslip view (spacing and screen clear)
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP011 : View Payslip History </UserStory>
<Changes>
- Implemented Enums::Month enum and helper functions getMonth() and getMonthString() for month formatting.
- Created viewPayslipHistory() helper in MenuHelper.h to display payslip history in aligned tabular format.
- Integrated viewPayslipHistory() option into EmployeeMenu, FinanceExecutiveMenu, HRManagerMenu, ITExecutiveMenu, TalentExecutiveMenu, TeamExecutiveMenu, and TeamLeadMenu.
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP010 : View Payslip </UserStory>
<Changes>
- Added Timestamp support to Payroll and Payslip models
- Implemented getPayslipForMonth flow from Controller to Service
- Enabled payslip retrieval based on year and month
- Updated menus to allow payslip viewing
- Enhanced MenuHelper with a unified viewPayslip helper
- Added date-based filtering using Timestamp utilities
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP012 : Employee Management </UserStory>
<Changes>
- Updated HR Manager menu text to remove obsolete options
- Reordered menu items to match current functionality
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP012 : Add Shorlisted Candidates As Employee </UserStory>
<Changes>
- Added getShorlistedCandidates method in ZenvyController
- Added candidateMap to store candidate data in DataStore.h
- Added addShortlistedCandidatesAsEmployee method in EmployeeManagementService.h and implemented the logic.
</Changes>
<Review>
Smitha Mohan
</Review>
<UserStory> EMP009 : Generate Payslips </UserStory>
<Changes>
- Updated Payslip model to store employee, salary, and date details
- Added payslip storage to DataStore and file load/save support
- Added logic to generate payslips once per month per employee
- Restricted payslip generation to finance role
- Linked payslips to employees during load and creation
- Added month, year, and day helpers to Timestamp
- Added payslip generation option to Finance Executive menu
</Changes>
<Review>
Smitha Mohan
</Review>
<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>