43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/rails_com/utils/time_helper.rb', line 43
def interval(start_at, finish_at, interval_start: '12:30', since: 1.hour)
return 0 if start_at.blank? || finish_at.blank? || start_at >= finish_at
raise 'Must be same day!' if start_at.to_date != finish_at.to_date
hour, min = interval_start.split(':')
interval_start_at = start_at.change hour: hour, min: min
interval_finish_at = interval_start_at.since(since)
if start_at < interval_start_at && finish_at > interval_finish_at
seconds = ((finish_at - start_at) - since).to_i
elsif start_at < interval_start_at && finish_at >= interval_start_at && finish_at <= interval_finish_at
seconds = interval_start_at - start_at
elsif start_at >= interval_start_at && start_at <= interval_finish_at && finish_at > interval_finish_at
seconds = finish_at - interval_finish_at
elsif start_at >= interval_start_at && start_at <= interval_finish_at && finish_at <= interval_finish_at
seconds = 0
else
seconds = finish_at - start_at
end
seconds
end
|