Sha256: 6f560b6c9b12109820d2af5e10cc4140490c0c76b846d6d362f0b94fcde1c38b

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

# == Schema Information
#
# Table name: cancellations
#
#  id            :integer          not null, primary key
#  shift_id      :integer
#  reason        :string(255)
#  status        :string(255)      default("pending")
#  created_at    :datetime
#  updated_at    :datetime
#  approved_date :datetime
#  approved_by   :integer
#

class Cancellation < ActiveRecord::Base

  belongs_to :shift

  validates_presence_of :shift
  validates_uniqueness_of :shift_id

  def pending?
    self.status == 'pending'
  end

  def approved?
    self.status == 'approved'
  end

  def shift_detail
    "AS #{shift.job_name} from #{shift.start_time.strftime('%H:%M')} to #{shift.end_time.strftime('%H:%M')} on #{shift.formatted_due_date}"
  end

  def approve(manager, cancellation, excused)
    self.approved_by = manager.id
    self.approved_date = Time.zone.now
    self.notes = cancellation[:notes] if !cancellation[:notes].blank?
    self.unexcused_note = cancellation[:unexcused_note] if !cancellation[:unexcused_note].blank?
    if excused == true
      self.status = 'approved excused'
    else
      self.status = 'approved unexcused'
    end
    save
  end

  def deny(cancellation)
    self.status = 'denied'
    self.notes = cancellation[:notes] if !cancellation[:notes].blank?
    save
  end

  def discuss(cancellation)
    self.status = 'discuss'
    self.notes = cancellation[:notes] if !cancellation[:notes].blank?
    save
  end

  def cancel
    self.status = 'cancelled'
    save
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pshq_engine-0.1.6 app/models/cancellation.rb
pshq_engine-0.1.5 app/models/cancellation.rb
pshq_engine-0.0.1 app/models/cancellation.rb