Class: Crm::EmployeeReviewPresenter

Inherits:
BasePresenter show all
Defined in:
app/presenters/crm/employee_review_presenter.rb

Instance Attribute Summary

Attributes inherited from BasePresenter

#current_account, #options, #url_helper

Instance Method Summary collapse

Methods inherited from BasePresenter

#initialize

Methods inherited from BasePresenter

#can?, #capture, #concat, #content_tag, #fa_icon, #h, #initialize, #link_to, #number_to_currency, #present, presents, #r, #safe_present, #simple_format, #u

Constructor Details

This class inherits a constructor from Crm::BasePresenter

Instance Method Details



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_downObject



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


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_labelObject



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}"

	(:span, employee_review.human_state_name, class: css_class)
end

#goals_unfinished_alertObject



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?

  (:div, class: 'alert alert-warning') do
    concat (:h4, 'Before the review can be completed:')
    concat (:p, "Goal(s): #{r.employee_goals.unfinalized.pluck(:name).to_sentence} must be marked complete, not reached or cancelled")
  end
end


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_alertObject



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

   :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_goalsObject



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_allocationsObject



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_allocationsObject



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