class Growth::Operations::RetentionReport::Generate

Public Instance Methods

call(input) click to toggle source
# File lib/growth/operations/retention_report/generate.rb, line 7
def call(input)
  report = []
  input[:grouped_resources_count].each do |count, source_resources_ids|
    report.push(
        {
            total_source_resources_percentage: calculate_percentage(source_resources_ids.count, input[:resources_distinct_count]),
            total_source_resources: source_resources_ids.count,
            total_target_resources: count,
            total_source_resources_ids: source_resources_ids.sort
        }
    )
  end

  Success(
      {
          report: {
              source_resource: input[:source_resource],
              target_resource: input[:target_resource],
              total_associated_resources: input[:resources_distinct_count],
              total_target_resources: input[:target_resource].count,
              resources_stats: report
          }
      }
  )
end

Private Instance Methods

calculate_percentage(number, total) click to toggle source
# File lib/growth/operations/retention_report/generate.rb, line 35
def calculate_percentage(number, total)
  ((number.to_f / total.to_f) * 100).round(2)
end