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
- ...
- ...
- Gospel Essentials
- Priesthood & Relief Society
- Priesthood
- Elders
- Elders Quorum A
- ...
- High Priests Group
- ...
- ...
- Elders
- Relief Society
- Relief Society A
- ...
- Priesthood
- Sunday School
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.
