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 and reassign commands as they function similarly. This heavily reduces code duplication since take-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.
    • 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:
    • Ensure single representation of shifts when loading from save #241
    • Ensure single representation of shifts and synchronization between assignments and shifts #199, #241
  • Documentation:
    • User Guide:
      • Add documentation for leave-related functions: #100, #127
      • Did cosmetic tweaks to existing documentation of features: #51, #244
    • Developer Guide:
      • Added implementation details for shift and leave #100, #118
  • Community:
    • PRs reviewed (with non-trivial review comments): #42, #84, #98, #194, #198
    • Discussed implementation of other features with other developers within group: #88, #89
    • Reported bugs to other groups: PE-D