Class: Crm::EmployeeReviewPresenter
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
76
77
78
79
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 76
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
26
27
28
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 26
def dynamic_status_drop_down
h.dynamic_status_drop_down r
end
|
#edit_review_link ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 62
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
4
5
6
7
8
9
10
11
12
13
14
15
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 4
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
30
31
32
33
34
35
36
37
38
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 30
def goals_unfinished_alert
return unless r.in_progress? && !r.all_goals_finalized?
return unless r.employee_goals.unfinalized.present?
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
17
18
19
20
21
22
23
24
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 17
def new_goal_link
if 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
end
|
#next_step_alert ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 40
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
81
82
83
84
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 81
def render_employee_goals
return unless employee_review.quarterly?
h.render partial: 'employee_goals', locals: { erp: self }
end
|
#render_reward_allocations ⇒ Object
86
87
88
89
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 86
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
91
92
93
94
95
|
# File 'app/presenters/crm/employee_review_presenter.rb', line 91
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
|