Class: Activity::OpenActivitiesStamper

Inherits:
BaseService show all
Defined in:
app/services/activity/open_activities_stamper.rb

Overview

Service object: open activities stamper.

Defined Under Namespace

Classes: Result

Instance Attribute Summary

Attributes inherited from BaseService

#options

Instance Method Summary collapse

Methods inherited from BaseService

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

Constructor Details

This class inherits a constructor from BaseService

Instance Method Details

#process(end_date: Date.current) ⇒ Result

Take all activities open and with due date close of business today or date passed.
Create a historical record

Parameters:

  • end_date (Date) (defaults to: Date.current)

    cutoff date; activities due by end of this day count as open

Returns:

  • (Result)

    number of historical rows inserted



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/services/activity/open_activities_stamper.rb', line 15

def process(end_date: Date.current)
  end_datetime = end_date.end_of_day
  open_activities = Activity.open_activities.where(Activity[:target_datetime].lteq(end_datetime)).pluck(:id, :assigned_resource_id)
  historical_records = open_activities.map do |(activity_id, assigned_resource_id)|
    { activity_id: activity_id,
      assigned_resource_id: assigned_resource_id,
      open_date: end_datetime.to_date }
  end
  res = HistoricalOpenActivity.insert_all(historical_records) if historical_records.any?
  records_inserted = res&.rows&.size || 0
  logger.info "HistoricalOpenActivity insert completed with #{records_inserted} open as of #{end_datetime}"
  Result.new(total_activities_open: records_inserted)
end