Class: Crm::EmployeeReviewPresenter
Overview
Presenter: employee review presenter.
Instance Attribute Summary
#current_account, #options, #url_helper
Instance Method Summary
collapse
#initialize
#can?, #capture, #concat, #content_tag, #fa_icon, #h, #initialize, #link_to, #number_to_currency, #present, presents, #r, #safe_present, #simple_format, #u
Instance Method Details
#delete_link ⇒ Object
79
80
81
82
83
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 79
def delete_link
return unless h.can?(:destroy, r)
h.delete_link r, destroy: { success_url: h.employee_path(r.employee_record.party, tab: "reviews") }
end
|
#dynamic_status_drop_down ⇒ Object
28
29
30
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 28
def dynamic_status_drop_down
h.dynamic_status_drop_down r
end
|
#edit_review_link ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 64
def edit_review_link
return unless h.can?(:update, r)
if employee_review.in_progress?
css_class = "btn btn-outline-success"
label = 'Review'
else
css_class = "btn btn-outline-primary"
label = 'Edit'
end
link_to(fa_icon('pen-square', text: label),
h.edit_employee_review_path(employee_review),
class: css_class)
end
|
#employee_review_state_label ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 6
def employee_review_state_label
css_class_state = {
in_progress: 'info',
process_reward: 'success',
allocate_reward: 'success',
complete: 'primary',
cancelled: 'secondary'
}[employee_review.state&.to_sym]
css_class = "badge bg-#{css_class_state}"
content_tag(:span, employee_review.human_state_name, class: css_class)
end
|
#goals_unfinished_alert ⇒ Object
32
33
34
35
36
37
38
39
40
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 32
def goals_unfinished_alert
return unless r.in_progress? && !r.all_goals_finalized?
return if r.employee_goals.unfinalized.blank?
content_tag(:div, class: 'alert alert-warning') do
concat content_tag(:h4, 'Before the review can be completed:')
concat content_tag(:p, "Goal(s): #{r.employee_goals.unfinalized.pluck(:name).to_sentence} must be marked complete, not reached or cancelled")
end
end
|
#new_goal_link ⇒ Object
19
20
21
22
23
24
25
26
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 19
def new_goal_link
return unless employee_review.in_progress? && can?(:update, employee_review)
css_class = 'btn btn-outline-primary'
link_to(fa_icon('plus-circle', text: 'Define a new goal'),
h.new_employee_review_employee_goal_path(employee_review),
class: css_class)
end
|
#next_step_alert ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 42
def next_step_alert
if r.can_complete_review? && r.employee_goals.present?
alert = "This review is ready to complete."
wf_action = :complete_review
elsif r.can_complete_allocate_reward?
alert = "Rewards are ready to be allocated for this review."
wf_action = :complete_allocate_reward
end
return unless wf_action
content_tag :div, class: 'alert alert-info' do
h.centered_row do
concat alert
concat link_to(fa_icon('check', text: wf_action.to_s.humanize),
h.workflow_action_employee_review_path(r, wf_action: wf_action),
method: :post,
class: 'btn btn-success')
end
end
end
|
#render_employee_goals ⇒ Object
85
86
87
88
89
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 85
def render_employee_goals
return unless employee_review.quarterly?
h.render partial: 'employee_goals', locals: { erp: self }
end
|
#render_reward_allocations ⇒ Object
91
92
93
94
95
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 91
def render_reward_allocations
return unless r.allocate_reward? || r.process_reward? || r.complete?
h.render partial: 'reward_allocations', locals: { erp: self }
end
|
#setup_employee_review_for_reward_allocations ⇒ Object
97
98
99
100
101
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 97
def setup_employee_review_for_reward_allocations
employee_review.tap do |er|
[3 - er.reward_allocations.size, 0].max.times { er.reward_allocations.build }
end
end
|