# frozen_string_literal: true # module grouping all statistics concerns module Statistics::Concerns; end # Provides various helpers for services dealing with statistics generation module Statistics::Concerns::HelpersConcern extend ActiveSupport::Concern class_methods do def default_options yesterday = 1.day.ago { start_date: yesterday.beginning_of_day, end_date: yesterday.end_of_day } end def format_date(date) to_date(date).strftime('%Y-%m-%d') end def to_date(date) if date.is_a?(String) Date.strptime(date, '%Y%m%d') else date end end def user_info_stat(stat) { userId: stat[:user_id], gender: stat[:gender], age: stat[:age], group: stat[:group] } end def difference_in_hours(start_at, end_at) if start_at.to_date == end_at.to_date ((end_at - start_at) / 3600.0).to_f else end_at_to_start_date = end_at.change(year: start_at.year, month: start_at.month, day: start_at.day) hours = ((end_at_to_start_date - start_at) / 60 / 60).to_f hours = ((end_at.to_date - start_at.to_date).to_f + 1) * hours if end_at.to_date > start_at.to_date hours end end end end