Module: TimeOverlap

Defined in:
lib/time_overlap.rb,
lib/time_overlap/cli.rb,
lib/time_overlap/version.rb,
lib/time_overlap/presenter.rb

Defined Under Namespace

Classes: CLI, Presenter

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.count(from:, to:, time_zone:, my_time_zone:, min_overlap:) ⇒ Object

TODO: add meeting time to choose overlap 1 or overlap 2



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/time_overlap.rb', line 11

def self.count(from:, to:, time_zone:, my_time_zone:, min_overlap:)
  current_year = Time.current.year
  current_month = Time.current.month
  current_day = Time.current.day

  start_time = Time.new(
    current_year,
    current_month,
    current_day,
    from,
    0,
    0,
    Time.zone_offset(time_zone)
  )

  end_time = Time.new(
    current_year,
    current_month,
    current_day,
    to,
    0,
    0,
    Time.zone_offset(time_zone)
  )

  duration = (end_time - start_time).to_i / 60 / 60
  offset = duration - min_overlap

  start_time_in_my_time_zone = start_time.in_time_zone(my_time_zone)
  end_time_in_my_time_zone = end_time.in_time_zone(my_time_zone)

  x_start_time = (start_time - min_overlap * 60 * 60).in_time_zone(my_time_zone)
  x_end_time = (end_time - offset * 60 * 60).in_time_zone(my_time_zone)

  y_start_time = (end_time - min_overlap * 60 * 60).in_time_zone(my_time_zone)
  y_end_time = (y_start_time + duration * 60 * 60).in_time_zone(my_time_zone)

  data = {
    original: {
      start: start_time,
      end: end_time
    },
    full_overlap: {
      start: start_time_in_my_time_zone,
      end: end_time_in_my_time_zone
    },
    overlap_1: {
      start: x_start_time,
      end: x_end_time
    },
    overlap_2: {
      start: y_start_time,
      end: y_end_time
    }
  }

  Presenter.print(data)
end