Zijun's Project Portfolio Page
Project: McScheduler
McScheduler is a one-stop solution for McDonald’s Shift Managers to manage shift scheduling and worker contact/compensation. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project.
- New Feature: Added base implementation and functionality for shifts, including editing and listing shifts.
- What it does: Allows the user edit existing shifts and view all shifts. This feature also serves as a base for all shift-related operations within the McScheduler.
- Justification: Shifts are an important feature for shift managers to work with and is part of the core functionality of McScheduler.
- Highlights: Shifts are added very similarly to workers (e.g. use of
EditShiftDescriptor) to maintain consistency within the code. The work relating to the implementation of shifts involves most parts of the application, including storage, GUI, command logic and model representation. - Featured PRs: #35
- New Feature: Added leaves and the functionality for adding, mass-adding, cancelling and mass-cancelling leaves.
- What it does: allow users to assign workers to leave or remove them from leave, either as a single assignment (1 worker to 1 shift type for leave) or as a range of dates (1 worker, a start day/time and an end day/time).
- Justification: Leaves are an important feature for shift managers to use to keep track of their worker and avoid assigning individuals on leave to shifts. As workers typically take leave over a range of dates, the mass operations for leave are added to allow convenient leave-related operations.
- Highlights:
- This implementation makes use of existing
assignandreassigncommands as they function similarly. This heavily reduces code duplication sincetake-leaveis essentially a wrapper for those two commands. - To further increase the organic feel of
mass-take-leavecommand, placeholder shifts are automatically added and to all day/times within the range specified. This change makes it much more convenient for managers to handle leaves as they are typically taken in real life.
- This implementation makes use of existing
- Credits: Reuse of assign-related commands since these are vastly similar.
- Featured PRs: #100
-
Code contributed: RepoSense link
- Enhancements to existing features:
- Wrote extensive tests for the implementation of shift which greatly increased coverage #50
- Bug Fixes:
- Documentation:
- Community: