Class: Employee::BirthdayMessage

Inherits:
BaseService show all
Defined in:
app/services/employee/birthday_message.rb

Instance Method Summary collapse

Methods inherited from BaseService

#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger

Constructor Details

This class inherits a constructor from BaseService

Instance Method Details

#create_praise(employee_record) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/services/employee/birthday_message.rb', line 16

def create_praise(employee_record)
  logger.info "Creating birthday praise for #{employee_record.employee.full_name}"
  p = nil
  Praise.transaction do
    p = Praise.create!(
      employee_records: [employee_record],
      praise_type: "birthday",
      headline: "Happy Birthday #{employee_record.employee.first_name}!",
      praise: "Happy B-Day From Your WarmlyYours Family!",
      praise_date: Date.current, #employee_record.next_birthday
      image_url: get_badge_attachment,
      notify: true,
      notify_staff: true
    )
    p.publish
  end
  p
end

#get_badge_attachmentObject



39
40
41
# File 'app/services/employee/birthday_message.rb', line 39

def get_badge_attachment
  Image.find_by(title: 'Birthday Badge').image_url(width: 300, encode_format: :jpeg)
end

#load_overdue_employee_recordsObject



35
36
37
# File 'app/services/employee/birthday_message.rb', line 35

def load_overdue_employee_records
  EmployeeRecord.active_employees.where(EmployeeRecord[:next_birthday].lteq(Date.current)).where(disable_special_events_alerts: false)
end

#processObject



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'app/services/employee/birthday_message.rb', line 2

def process
  # Find all past birthdays or present and schedule a message
  praises = []
  records = load_overdue_employee_records
  logger.info "No birthday to process" if records.blank?

  records.each do |er|
    # Create a Praise
    praises << create_praise(er)
    schedule_next_birthday(er)
  end
  praises
end

#schedule_next_birthday(employee_record) ⇒ Object



43
44
45
46
47
48
# File 'app/services/employee/birthday_message.rb', line 43

def schedule_next_birthday(employee_record)
  next_year = (Date.current + 1.year).year
  employee_record.next_birthday = employee_record.employee.dob.dup.change(year: next_year)
  logger.info "Advancing birthday to #{employee_record.next_birthday} for #{employee_record.employee.full_name}"
  employee_record.save!
end