Class: HhAddOn::Cells::OpeningHours

Inherits:
Object
  • Object
show all
Defined in:
app/my_lib/hh_add_on/cells/opening_hours.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeOpeningHours

Returns a new instance of OpeningHours.



6
7
8
# File 'app/my_lib/hh_add_on/cells/opening_hours.rb', line 6

def initialize
  @cache = Rails.cache
end

Class Method Details

.minutes_to_human(minutes) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/my_lib/hh_add_on/cells/opening_hours.rb', line 35

def minutes_to_human(minutes)
  return '' if minutes.blank?

  # return unlimited if minutes is 1_000_000
  return 'Unlimited' if minutes.to_i == AddOns::Pricing::UNLIMITED

  result = {}

  hours = minutes / 60
  result[:hours] = hours
  result[:minutes] = minutes % 60

  if minutes % 60 != 0 && minutes > 60
    return I18n.t('views.d.minutes_to_human.hours_minutes',
                  hour: result[:hours], minute: result[:minutes])
  end
  return I18n.t('views.d.minutes_to_human.hours', count: result[:hours]) if (minutes % 60).zero?
  return I18n.t('views.d.minutes_to_human.minutes', count: minutes) if minutes < 60

  ''
end

.minutes_to_label(minutes) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'app/my_lib/hh_add_on/cells/opening_hours.rb', line 57

def minutes_to_label(minutes)
  return '' if minutes.blank?

  # return unlimited if minutes is 1_000_000
  return 'Unlimited' if minutes.to_i == AddOns::Pricing::UNLIMITED

  result = {}

  hours = minutes / 60
  result[:hours] = hours
  result[:minutes] = minutes % 60

  if minutes % 60 != 0 && minutes > 60
    return I18n.t('views.d.minutes_to_label.hours_minutes',
                  hour: result[:hours], minute: result[:minutes])
  end
  return I18n.t('views.d.minutes_to_label.hours', count: result[:hours]) if (minutes % 60).zero?
  return I18n.t('views.d.minutes_to_label.minutes', count: minutes) if minutes < 60

  ''
end

Instance Method Details

#search_availability_of_next_days(restaurant_add_on) ⇒ Object

Get next X availability of given date argument

Parameters:

  • x

    Integer

  • mode

    Symbol if equal days, then max of x argument value is 7

Returns:

  • Hash

    monday: '',
    tuesday: '',
    wednesday: '',
    etc...
    



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/my_lib/hh_add_on/cells/opening_hours.rb', line 20

def search_availability_of_next_days(restaurant_add_on)
  cache_key = restaurant_add_on.opening_hours.cache_key

  Rails.cache.fetch("restaurant_add_on:oh:#{cache_key}:#{I18n.locale}") do
    dummy_date_to_find_date = Date.parse('10 Oct 2021') # Sunday
    restaurant_add_on.opening_hours.map do |oh|
      {
        day_name: I18n.t((dummy_date_to_find_date + oh.cwday.days).strftime('%A')),
        schedule: oh.attributes.slice('open', 'close'),
      }
    end
  end
end