Class: Candidate

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/candidate.rb

Overview

Schema Information

Table name: candidates

id         :integer          not null, primary key
swap_id    :integer
user_id    :integer
created_at :datetime
updated_at :datetime
status     :string(255)      default("initial")

Instance Method Summary collapse

Instance Method Details

#confirm(confirmed_shift_trade_id) ⇒ Object



119
120
121
122
123
124
125
# File 'app/models/candidate.rb', line 119

def confirm(confirmed_shift_trade_id)
  self.status = 'approved'
  save
  self.shift_trades.delete_if{|trade| trade.id == confirmed_shift_trade_id}
  self.shift_trades.each {|shift_trade| shift_trade.ignore}
  self.swap.approve
end

#denyObject



43
44
45
46
# File 'app/models/candidate.rb', line 43

def deny
  self.status = 'denied'
  save
end

#end_timeObject



39
40
41
# File 'app/models/candidate.rb', line 39

def end_time
  self.swap.shift.end_time 
end

#get_fill_end_timeObject



65
66
67
68
# File 'app/models/candidate.rb', line 65

def get_fill_end_time
  @shift = Shift.find_by_id(self.alert_type_id)
  @shift.end_time.strftime('%H:%M')
end

#get_fill_shift_jobObject



55
56
57
58
# File 'app/models/candidate.rb', line 55

def get_fill_shift_job
  @shift = Shift.find_by_id(self.alert_type_id)
  @shift.job.name
end

#get_fill_start_timeObject



60
61
62
63
# File 'app/models/candidate.rb', line 60

def get_fill_start_time
  @shift = Shift.find_by_id(self.alert_type_id)
  @shift.start_time.strftime('%H:%M')
end

#get_swap_jobObject



48
49
50
51
52
53
# File 'app/models/candidate.rb', line 48

def get_swap_job
  @swap = self.swap
  if !@swap.nil? 
    @swap.shift.job.name
  end
end

#get_week_hoursObject



70
71
72
73
74
75
76
# File 'app/models/candidate.rb', line 70

def get_week_hours
  user = self.user
  shift = Shift.find_by_id(self.alert_type_id)
  if user.present? and shift.present?
    return user.shifts.where("due_date >= ? AND due_date <= ?",shift.due_date.beginning_of_week, shift.due_date.end_of_week ).sum(:hours).to_i
  end
end

#if_swap_approvedObject



78
79
80
81
82
83
# File 'app/models/candidate.rb', line 78

def if_swap_approved
  shift = Shift.find_by_id(self.alert_type_id)
  if shift.present?
    return (self.get_week_hours + shift.hours.strftime('%H').to_i)
  end
end

#job_nameObject



27
28
29
# File 'app/models/candidate.rb', line 27

def job_name
  self.swap.shift.schedule.job.name
end

#shift_due_dateObject



110
111
112
113
114
115
116
117
# File 'app/models/candidate.rb', line 110

def shift_due_date
  if self.one_sided
    shift = Shift.find_by_id(self.alert_type_id)
  else
    shift = Shift.find_by_id(self.candidate_shift_id)
  end
    shift.due_date
end

#shift_end_timeObject



101
102
103
104
105
106
107
108
# File 'app/models/candidate.rb', line 101

def shift_end_time
  if self.one_sided
    shift = Shift.find_by_id(self.alert_type_id)
  else
    shift = Shift.find_by_id(self.candidate_shift_id)
  end
    shift.end_time
end

#shift_job_nameObject



85
86
87
88
89
90
# File 'app/models/candidate.rb', line 85

def shift_job_name
  shift = Shift.find_by_id(self.alert_type_id)
  if shift.present?
    return shift.job_name
  end
end

#shift_start_timeObject



92
93
94
95
96
97
98
99
# File 'app/models/candidate.rb', line 92

def shift_start_time
  if self.one_sided
    shift = Shift.find_by_id(self.alert_type_id)
  else
    shift = Shift.find_by_id(self.candidate_shift_id)
  end
    shift.start_time
end

#start_timeObject



35
36
37
# File 'app/models/candidate.rb', line 35

def start_time
  self.swap.shift.start_time
end

#tradeObject

has_many :shift_trades, :dependent => :destroy

accepts_nested_attributes_for :shift_trades


22
23
24
25
# File 'app/models/candidate.rb', line 22

def trade
  self.status = 'trading'
  save
end

#user_nameObject



31
32
33
# File 'app/models/candidate.rb', line 31

def user_name
  self.user.name
end