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
- #current_review ⇒ Object
- #drop_customer_event(event) ⇒ Object
- #manages ⇒ Object
- #manages?(employee) ⇒ Boolean
- #manages_and_self ⇒ Object
- #manages_ids ⇒ Object
- #role_cleanup ⇒ Object
- #schema_dot_org_structure ⇒ Object
- #to_json_ld ⇒ Object
Instance Method Details
#current_review ⇒ Object
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 |
#manages ⇒ Object
13 14 15 |
# File 'app/models/concerns/employee_management.rb', line 13 def manages Employee.where(id: manages_ids) end |
#manages?(employee) ⇒ 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_self ⇒ Object
17 18 19 |
# File 'app/models/concerns/employee_management.rb', line 17 def manages_and_self Employee.where(id: manages_ids + [id]) end |
#manages_ids ⇒ Object
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_cleanup ⇒ Object
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" account.roles.clear else prune_inherited_roles end end |
#schema_dot_org_structure ⇒ Object
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 (person) assign_profile_image(person) assign_same_as_links(person) end end |
#to_json_ld ⇒ Object
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 |