wiki:Requirements

Use cases

Import

Read in the membership and organization files. Restructure and commit to the database (will need to clear appropriate existing entries first).

Start class

End class

Print role

Should include everyone who is assigned to the class, and anyone who has attended at all in the last month (or more?).

Mark attendance

Prompt user for a date and organization. Display sorted list of all applicable members, with a check-box next to each. Allow user to set or reset checks. Save form.

Print report

Prompt user for the organization. The report is formatted one row per member. Each row contains the member's name, average attendance for the last 12 months, and attendance history (most recent last, as many dates as will fit on an 8.5"-wide page).

Printed reports are the archival method; the program makes no attempts to keep a full history.


Open issues

  • Does MLS export which quorum a member is in?
    • If yes, then I'll keep an exception list around so that users may override MLS and force people in to (or out of) a quorum. If MLS' designation of that member's quorum ever changes, the exceptions for that member are deleted.
    • If no, then I don't need an exception list. I simply store the quorum with the member and allow the user to change it normally.
  • Each class/quorum gets its own role. There may be multiple Elders Quorums in a single ward, and multiple Gospel Doctrine classes. The following hierarchy exists:
    • Sunday School
      • Gospel Essentials
        • Gospel Essentials A
        • ...
      • Gospel Doctrine
        • Gospel Doctrine A
        • ...
      • ...
    • Priesthood & Relief Society
      • Priesthood
        • Elders
          • Elders Quorum A
          • ...
        • High Priests Group
          • ...
        • ...
      • Relief Society
        • Relief Society A
        • ...

This might be nice to use for separate Sunday School classes. There is also benefit to having everyone on a single SS role. Maybe I could allow users to assign members to different organizations (how to handle conflicting with what MLS says?), and named aggregate reports. So you'd have a Gospel Principles class and a Gospel Essentials class; and a SS aggregate report. Also nice would be a total aggregate report to see how members are doing on all their meetings overall. The thing here is to keep classes separated by meeting time (SS vs quorums). Every member can be in only one SS class and one quorum.

If a member hasn't been assigned to a class yet, marking attendance for that person could assign him to that class. Until a member has been assigned to a class, they could show up on all classes in that time. This could be a problem for members who jump around among classes (like I sometimes do). I should provide a decent override mechanism.

Attendance should track what class was actually attended.