Coder Social home page Coder Social logo

care-network-attendance's Introduction

Care Network Attendance

Care Network Attendance is a Ruby-on-Rails web application designed to take attendance in a distributed fashion for small-group-based churches. The important part is the followup by the small group leaders, and communicating the reason why people were absent. In this way, concerns can be quickly addressed, and people can be helped.

Copyright (C) 2010 David Krider

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Plugins

* wicked_pdf
* paperclip
* acts_as_tree
* will_paginate

Reminders

There is a job you may want to cron to run periodically. This is a reminder to followup on questionable absences the day after whatever services you wish. (For instance, Monday morning at 10 am.)

Theory

From an application administrator’s viewpoint, it’s important to understand the shortcut, or assumption, that’s buried in this application. When the attendance form is generated for a group on a date, the controller is find_or_creating each attendance to feed back to the app. If this form is simply browsed, but attendance is NOT subsequently taken, there will be an attendance in the database for each person in the group WITH A NULL STATUS. While I don’t particularly care for this, I’ve written around it for the followup job, and, from every angle I can think about it, it should make no difference. Theoretically, if there’s a service to take attendance for, everyone should have their attendance taken, and there shouldn’t be any “orphans” anyway.

However, it still bugs me from a database administrator's point of view, and I've started a branch in git devoted to fixing this situation. Unfortunately, using find_or_initialize has a LOT of interesting implications when taking attendance for a group of people, some of whom might have already had attendance taken. Maybe this is a bug, and I should limit a person's membership to only one group in a network, but, as it stands in my implementation, each group's leader is contained within their group, and the group above them. This has led to the situation I've described, which will break using find_or_initialize. At the time of this writing, I figure I'm half done with the patch, but the trickiest parts are yet to work out. It's in the git repo on the create_or_initialize branch.

I’m just realizing that I could somehow block out the “level 2” groups from having their attendance taken, and eliminate this problem, but it doesn’t feel right to do that, since a larger church could wind up having more than just 3 levels. However, however, now that I think about that, maybe the theory here is that all the even-level groups should be skipped… Anyway. Thoughts welcome.

Future

1. There are a few places in the app that work because the Statuses are in order. “Present” has a database id of 1, and the “unexcused” absences start at id > 5. There are a couple thoughts about other ways of going about this. You could just reference a list of static keywords defined somewhere (e.g., STATUSES = [“Present”, “Sick, …]), and/or a boolean could be placed on the model to indicate ”excusedness“. Right now, I’m sticking with this.

2. In the immediate future, I need to extend the app to capture guest attendance. The report would be inverted. Instead of absences, we’d want to see “presences”. This is fine, but the key here is that it must be EASY EASY EASY to add people to the list. A church can’t have greeters getting bogged down in the friction of adding someone to the database. There are caveats, of course, people don’t like giving out information at the “guest” stage any more, and I can’t say I blame them. Still, it needs to be tried.

3. I could really stand to do a load of cleanup on the controllers and DRY out my code. Thinking about it as I write this, I realize some of my reticence for doing this comes from the fact that Rails already requires mucking about in a half dozen files to do any one thing, and I don’t want to split my code out to yet another file… That’s probably a poor excuse. YMMV.

4. Along the same lines as the previous, I could really stand to write tests for this application. ;-)

care-network-attendance's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.