Module: EmployeeManagement

Extended by:
ActiveSupport::Concern
Included in:
Employee
Defined in:
app/models/concerns/employee_management.rb

Overview

Management hierarchy, customer assignment, and schema.org structure.

Instance Method Summary collapse

Instance Method Details

#current_reviewObject



50
51
52
# File 'app/models/concerns/employee_management.rb', line 50

def current_review
  employee_record.employee_reviews.current_goals.active.order(:created_at).reverse_order.first
end

#drop_customer_event(event) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'app/models/concerns/employee_management.rb', line 31

def drop_customer_event(event)
  return unless event.customer.sales_reps.empty?

  to_cancel = activities.open_activities.where(party_id: event.customer_id)
  logger.debug("Employee#drop_customer_event: #{event.inspect}, cancelling: #{to_cancel.count}")
  to_cancel.each do |activity|
    activity.update!(activity_result_type_id: 1, closed_by_id: event.creator_id)
  end
end

#managesObject



13
14
15
# File 'app/models/concerns/employee_management.rb', line 13

def manages
  Employee.where(id: manages_ids)
end

#manages?(employee) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
# File 'app/models/concerns/employee_management.rb', line 7

def manages?(employee)
  return false unless employee

  manages_ids.include?(employee.id)
end

#manages_and_selfObject



17
18
19
# File 'app/models/concerns/employee_management.rb', line 17

def manages_and_self
  Employee.where(id: manages_ids + [id])
end

#manages_idsObject



21
22
23
24
25
26
27
28
29
# File 'app/models/concerns/employee_management.rb', line 21

def manages_ids
  Rails.cache.fetch([cache_key, :employee_subordinates]) do
    managed_role_ids = Role.managed_by_roles(role_ids).pluck(:id)
    list = descendants.pluck('parties.id')
    list |= Employee.joins(account: :roles).where('roles.id' => managed_role_ids).pluck('parties.id') if managed_role_ids.present?
    list += managed_employee_ids
    list.uniq
  end
end

#role_cleanupObject



41
42
43
44
45
46
47
48
# File 'app/models/concerns/employee_management.rb', line 41

def role_cleanup
  if inactive
    logger.info "Employee #{id} Inactive, clearing all roles"
    .roles.clear
  else
    prune_inherited_roles
  end
end

#schema_dot_org_structureObject



54
55
56
57
58
59
60
61
62
63
# File 'app/models/concerns/employee_management.rb', line 54

def schema_dot_org_structure
  SchemaDotOrg::Person.new.tap do |person|
    person.givenName = first_name
    person.familyName = last_name
    person.name = full_name
    assign_author_url(person)
    assign_profile_image(person)
    assign_same_as_links(person)
  end
end

#to_json_ldObject



65
66
67
68
69
70
# File 'app/models/concerns/employee_management.rb', line 65

def to_json_ld
  schema_dot_org_structure.to_s
rescue StandardError => e
  ErrorReporting.error e
  logger.error e
end