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
assign
andreassign
commands as they function similarly. This heavily reduces code duplication sincetake-leave
is essentially a wrapper for those two commands. - To further increase the organic feel of
mass-take-leave
command, 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: