/
calendar.rb
102 lines (95 loc) · 2.55 KB
/
calendar.rb
1
2
3
4
5
6
7
8
9
10
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
FactoryBot.define do
factory :calendar do
sequence(:name) { |n| "Escalation Test #{n}" }
timezone { 'Europe/Berlin' }
default { true }
ical_url { nil }
business_hours do
{
mon: {
active: true,
timeframes: [['09:00', '17:00']]
},
tue: {
active: true,
timeframes: [['09:00', '17:00']]
},
wed: {
active: true,
timeframes: [['09:00', '17:00']]
},
thu: {
active: true,
timeframes: [['09:00', '17:00']]
},
fri: {
active: true,
timeframes: [['09:00', '17:00']]
},
sat: {
active: false,
timeframes: [['09:00', '17:00']]
},
sun: {
active: false,
timeframes: [['09:00', '17:00']]
}
}
end
created_by_id { 1 }
updated_by_id { 1 }
trait :'24/7' do
business_hours do
{
mon: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
tue: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
wed: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
thu: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
fri: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
sat: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
sun: {
active: true,
timeframes: [ ['00:00', '24:00'] ]
},
}
end
end
trait '23:59/7' do
business_hours_generated
timeframe_alldays { ['00:00', '23:59'] }
end
trait :business_hours_generated do
transient do
timeframe_alldays { nil }
timeframe_workdays { timeframe_alldays }
timeframe_weekends { timeframe_alldays }
config_workdays { timeframe_workdays ? { active: true, timeframes: [timeframe_workdays] } : {} }
config_weekends { timeframe_weekends ? { active: true, timeframes: [timeframe_weekends] } : {} }
end
business_hours do
hash = {}
%i[mon tue wed thu fri].each_with_object(hash) { |elem, memo| memo[elem] = config_workdays }
%i[sat sun].each_with_object(hash) { |elem, memo| memo[elem] = config_weekends }
hash
end
end
end
end