19 lines
784 B
Ruby
19 lines
784 B
Ruby
class MaintenanceNotification
|
|
NOTIFIABLE_STATUSES = %w[upcoming overdue].freeze
|
|
|
|
def self.record_status_change(schedule, status)
|
|
return if schedule.last_status == status.status
|
|
|
|
previous_status = schedule.last_status.presence || "unknown"
|
|
schedule.update!(last_status: status.status, last_status_changed_at: Time.current)
|
|
return unless NOTIFIABLE_STATUSES.include?(status.status)
|
|
|
|
Rails.logger.warn(
|
|
"Maintenance schedule #{status.status}: vehicle_id=#{schedule.vehicle_id} " \
|
|
"maintenance_schedule_id=#{schedule.id} maintenance_type=#{schedule.maintenance_type.inspect} " \
|
|
"previous_status=#{previous_status} due_odometer=#{status.due_odometer} due_date=#{status.due_date} " \
|
|
"reason=#{status.reason.inspect}"
|
|
)
|
|
end
|
|
end
|