module SessionIdentification

Constants

MINUTE_THRESHOLD

Public Class Methods

execute(identified_user) click to toggle source

Your code goes here…

# File lib/log_analysis/session_identification.rb, line 10
def self.execute(identified_user)
  identified_user.each_with_object([]) do |user, arr|
    isession = arr.rindex { |s| s.user == user }
    user.records.each do |record|
      isession.present? && validate_time_session(arr[isession].records.last.time, record.time) ? arr[isession].records << record : arr << SessionIdentity.new(session_identity_params(record))
    end
  end
end

Private Class Methods

session_identity_params(record) click to toggle source
# File lib/log_analysis/session_identification.rb, line 21
def self.session_identity_params(record)
  {}.tap do |p|
    p[:user]    = record.user
    p[:records] = [record]
  end
end
validate_time_session(last_session_record_time, time) click to toggle source
# File lib/log_analysis/session_identification.rb, line 28
def self.validate_time_session(last_session_record_time, time)
  (time - last_session_record_time) / 60 < MINUTE_THRESHOLD
end