Sha256: b5a0aaf0327d697bd63780ae04e6d592fd41eadfe8ddcf1b64a8d073f1cc922e

Contents?: true

Size: 850 Bytes

Versions: 3

Compression:

Stored size: 850 Bytes

Contents

class Absence < ActiveRecord::Base
  extend UserSystem
   
  validates_presence_of :user_id
  validates_presence_of :on
  validates_presence_of :reason

  validates_uniqueness_of :on, :scope => :user_id
  
  def validate
    if PublicHoliday.exists? :on => on
      errors.add :on, "You cannot mark absence on a public holiday."
    end
  end
  
  # Return an array of either an absence or nil for each day of the given week.
  def self.find_by_week(year, week, user = current_user)
    first_date = Date.commercial(year, week, 1)
    last_date = first_date + 6
    results = self.find(:all, :conditions => ['"on" BETWEEN ? AND ? AND user_id = ?', first_date, last_date, user && user.id], :order => '"on"')
    (0..6).each do |day|
      results.insert(day, nil) if results[day] && results[day].on > first_date + day
    end
    results
  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
backlog-0.36.2 app/models/absence.rb
backlog-0.35.4 app/models/absence.rb
backlog-0.35.5 app/models/absence.rb